来自list / dictionary / datatable的c#datagridview combobox列数据 [英] c# datagridview combobox column datasouce from list/dictionary/datatable
问题描述
我确定这个简单,但我花了大约1/2天的谷歌搜索和尝试各种各样的东西。
我有一个datatable和一列是另一个数据库表的整数ID外键。
我有一个datagridview,我想使用一个组合框列来允许用户改变价值。但是,不用使用整数,使用这些名称是非常好的。
我尝试用公共成员int ID和string Name创建一个简单的结构体;一个字典,并查找枚举(但是编译时不知道值),但没有任何工作。
我可以使用结构值填充组合框,但是无法以编程方式设置所选项/索引;即,如果ID5在数据表中,则将组合框选中的项目设置为具有ID为5的结构体。
所以要清楚我是想要:
gridview datasource的fk ID的
/ pre>
1
2
3
外键表:
ID名称
1名称1
2名称2
3名称3
Datagridviewcombobox列应该加载三个项目;应显示为名称1,名称2,名称3。基于gridview数据源的FK ID,每个选择的项目都应该匹配。
帮助?
Andrew
解决方案您可以设置
DataGridViewComboBoxColumn.DataSource
属性,然后使用ValueMember
和DisplayMember
属性,以确定在ComboBox
中显示的内容。最简单的可能是将您的FK值加载到DataTable
中,并将其用作数据源。例如://假设你的DataGridViewComboBox列是fkCol
//,你的fk值在一个DataTable称为fkTable
fkCol.DataSource = fkTable;
fkCol.ValueMember =ID;
fkCol.DisplayMember =Name;
我不知道如何绑定您的
DataGridView
到您的初始DataTable
,但您可以将DataGridViewComboBox
列与原始<$ c中的特定列相关联$ c> DataTable 使用DataPropertyName
:fkCol.DataPropertyName =ColumnName ;
I'm sure this simple but i've spent a about 1/2 a day googling and trying various things out.
I've got a datatable and one column is an integer ID foreign key to another database table.
I've got a datagridview and i'd like to use a combobox column to allow user to change value. But instead of using the integers, it would be great to use the names.
I've tried creating a simple struct with public members int ID and string Name; a dictionary and looked into enums (however values not known at compile time) but not got anything to work yet.
I was able to populate the combobox with struct values, but not able to programmatically set the selected item/index; ie, if ID "5" is in the datatable, set the combo box selected item to the struct that has an ID of 5.
So to be clear i'm wanting:
gridview datasource's fk ID's 1 2 3 Foreign Key table: ID Name 1 Name 1 2 Name 2 3 Name 3
Datagridviewcombobox column should be loaded with three items; should display as "Name 1, Name 2, Name 3". Based on the gridview datasource's FK id, the selected item for each should match.
Help ?
Andrew
解决方案You can set the
DataGridViewComboBoxColumn.DataSource
property, and then use theValueMember
andDisplayMember
properties to determine what is shown in theComboBox
. Easiest is probably to load your FK values intoDataTable
and use that as the data source. For your example:// assuming your DataGridViewComboBox column is fkCol // and your fk values are in a DataTable called fkTable fkCol.DataSource = fkTable; fkCol.ValueMember = "ID"; fkCol.DisplayMember = "Name";
I am not sure how you are binding your
DataGridView
to your initialDataTable
, but you can associate theDataGridViewComboBox
column with a specific column in your originalDataTable
usingDataPropertyName
:fkCol.DataPropertyName = "ColumnName";
这篇关于来自list / dictionary / datatable的c#datagridview combobox列数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!