1

グリッドビューで複数のフィルターを作成できますか? これまでのところ、フィルタリングの種類ごとに 3 つの方法があります。このようなことができるようになりたいです。最初に表示されるコンボボックスの値から選択し、次にこのフィルタリングされたリストから、テキストボックスを使用して他の何かを検索できるようにしたいと思います。

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;
}

コンボボックスから値を選択すると、グリッドビューに必要なものが表示されますが、後でテキストボックスに何かを挿入してボタンをクリックすると、コンボボックスで既にフィルタリングされているリストではなく、リスト全体がフィルタリングされます。どうすれば達成できますか?

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

の要素のタイプlist3は次のとおりだと思いますT

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 に答える