1

我可以在gridview中制作多个过滤器吗?到目前为止,我为每种过滤提供了三种不同的方法。我希望能够做这样的事情。首先从将显示的组合框值中选择,然后从这个过滤列表中选择,我希望能够使用文本框搜索其他内容。

private void button9_Click(object sender, EventArgs e)
{
    var result = list3.Where(Srodek => Srodek.Srodek.ID.Device == textBox2.Text).ToList();
    dataGridView4.DataSource = result;
}

private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
{
    var result = list3.Where(Srodek => Srodek.Srodek.category1 == comboBox1.SelectedItem.ToString()).ToList();
    dataGridView4.DataSource = result;
}

现在,当我从组合框中选择一些值时,它会在 gridview 中显示我想要的内容,但是稍后当我在文本框中插入一些内容并单击按钮时,它会过滤整个列表,而不是已经被组合框过滤的列表。我怎样才能实现它?

4

4 回答 4

3

尝试FilterDataGrid()调用这两个事件:

    private void button9_Click(object sender, EventArgs e)
    {
        FilterDataGrid();
    }

    private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
    {
        FilterDataGrid();
    }

    private void FilterDataGrid()
    {
        var _text = Convert.ToString(textBox2.Text);
        var _comboText = ! string.IsNullOrEmpty(comboBox1.Text) ? Convert.ToString(comboBox1.SelectedItem) : string.Empty;
        var result = list3.Where(Srodek => Srodek.Srodek.category1 == _comboText || Srodek.Srodek.ID.Device == _text).ToList();
        //
        dataGridView4.DataSource = result;
    }

希望这对你有帮助。

于 2013-08-08T12:48:47.837 回答
1

我想元素的类型list3T

private void button9_Click(object sender, EventArgs e)
{
    if(dataGridView4.DataSource is IEnumerable<T>){
      var result = ((IEnumerable<T>)dataGridView4.DataSource).Where(Srodek => Srodek.Srodek.ID.Device == textBox2.Text).ToList();
      dataGridView4.DataSource = result;
    }
}
于 2013-08-08T12:38:37.030 回答
0

创建一个将托管您的列表的全局属性,以便每次对列表执行查询时,您都会对已过滤的最新列表执行查询。

于 2013-08-08T12:12:08.287 回答
0

您没有更改过滤器的来源,因此您每次都在同一组上进行过滤。一种选择是拥有原始数据集和过滤数据集,然后在过滤原始数据集时将结果保存在过滤集中。

于 2013-08-08T12:18:35.157 回答