我在DataGridView中添加了一个DataGridViewComboBoxColumn列,Name是DataSourceField,且为这列绑定了一个DataTable作为数据源:
IList<DataSourceField > DataSourceFieldList = dsMod.DataSourceField;
DataTable dt_dsField = DataSourceFieldList.Select(p = > (object)p).ToList().ToDataTable(new DataSourceField());
this.DataSourceField.DataSource = dt_dsField;
this.DataSourceField.ValueMember = "ID";
this.DataSourceField.DisplayMember = "FieldName";
同时为DataGridView绑定一个DataTable:
DataTable dt = new DataTable();
dt.Columns.Add("FormTableFieldCode");
dt.Columns.Add("FormTableFieldName");
dt.Columns.Add("DataSourceField");
this.DataGridView1.DataSource = dt;
程序运行起来后有一个问题,DataSourceField列选中一项,但焦点离开后显示ID值了,我们想要的效果是想要显示FieldName值,如下图:
仔细排查后,原因是:
dt_dsField中的ID是int类型,但dt的DataSourceField列并没有设置为int类型,所以才会有这个错误,改写dt的DataSourceField列为int即可。
DataTable dt = new DataTable();
dt.Columns.Add("FormTableFieldCode");
dt.Columns.Add("FormTableFieldName");
dt.Columns.Add("DataSourceField", typeof(int));
this.DataGridView1.DataSource = dt
习惯了Web开发,刚开始WinForm开发,好多细节都需要反复调试,差别还是很大的。