向数据表添加行并使用组合框显示成员?

时间:2019-04-19 17:48:43

标签: c#

基本上,我有一个包含4列和许多行的datagrid视图。在顶部,我有一个组合框,其中有可供选择的类别,并且根据所选项目的不同,datagrid视图也会更改。

问题在于,当添加行时,我会再次添加相同的字符串(例如,基本短语),并且组合框列出了相同的字符串(因此,如果有4个单词属于基本短语,则组合框会显示4个基本短语)。我将附加我的代码以供更好地参考。

是否有更好的方法可以使用数组? 谢谢。

\usepackage{float}

1 个答案:

答案 0 :(得分:0)

combox不应将整个表作为数据源,而应仅具有表的Distinct值。

List<string>wordsets = table.AsEnumerable().Select(x => x.Field<string>("WordSets")).Distinct().ToList();
comboBox1.DataSource = wordsets;
dataGridView1.DataSource = table.DefaultView;

现在,当您从组合中选择某些内容时,您无需构建单独的数据表,而只需为表变量设置DefaultView.RowFilter即可

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedIndex > -1)
    {
        string word = comboBox1.SelectedItem.ToString();
        table.DefaultView.RowFilter = "WordSets = '" + word + "'";
        dataGridView1.DataSource = table.DefaultView;
    }
}