我有一个包含表格的数据集,我想将其导入到Combobox中。 所以基本上我想将每个表的每个名称导入到我的组合框中。
这适用于Winform应用程序
这是否可以手动添加每个名称?
这样做的原因是能够选择一个表以便稍后在数据网格中显示该表。
答案 0 :(得分:3)
创建TableName的字典&amp;表(Dictionary<string,DataTable>
)并将其绑定到ComboBox的DataSource。
使用
DisplayMember
(从DataSource分配DisplayMember)是ComboBox项目中显示的数据源中的项目。
ValueMemeber
(从DataSource分配ValueMember)是DataSource中用作项目实际值的项目。
<强>代码强>
Dictionary<string, DataTable> dictionary = new Dictionary<string, DataTable>();
foreach (DataTable table in ds.Tables)
{
dictionary.Add(table.TableName, table);
}
comboBox1.DataSource = new BindingSource(dictionary, null);
comboBox1.DisplayMember = "Key";
comboBox1.ValueMember = "Value";
或强>
使用Linq查询创建Dictionary<string,DataTable>
Dictionary<string, DataTable> dictionary = ds.Tables.Cast<DataTable>().ToDictionary(x => x.TableName, t => t);
comboBox1.DataSource = new BindingSource(dictionary, null);
comboBox1.DisplayMember = "Key";
comboBox1.ValueMember = "Value";
此处Dictionary
用作DataSource。 Dictionary
有两个属性Key
&amp; Value
。 Key(TableName)用作DisplayMember&amp; Value(DataTable)用作ValueMember。
在comboBox上SelectedIndexChanged
绑定网格DataSource
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridView1.DataSource = comboBox1.SelectedItem;
}
答案 1 :(得分:1)
怎么样
mycombobox.ItemSource = mydataset.Tables.Cast<DataTable>().Select(x => x.Name);
然后在每个ComboBox选择索引上更改事件
mydatagrid.ItemSource = mydataset.Tables(mycombobox.SelectedIndex);