0

我有一个包含要导入组合框的表的数据集。所以基本上我想将每个表的每个名称导入我的组合框中。

这是一个 Winform 应用程序

这是否可能无需手动添加每个名称?

这样做的原因是能够选择一个表以便稍后在数据网格中显示该表。

4

2 回答 2

3

创建 TableName & Table ( 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& Value。Key(TableName) 用作 DisplayMember 和 Value(DataTable) 用作 ValueMember。

在组合框上SelectedIndexChanged绑定网格DataSource

 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
        dataGridView1.DataSource = comboBox1.SelectedItem;
 }
于 2012-09-23T12:01:05.283 回答
1

怎么样

mycombobox.ItemSource = mydataset.Tables.Cast<DataTable>().Select(x => x.Name);

然后在每个 ComboBox Selected Index changed 事件上做

mydatagrid.ItemSource = mydataset.Tables(mycombobox.SelectedIndex);
于 2012-09-23T11:55:18.663 回答