首页 > 解决方案 > 在 C# 中过滤未绑定的数据网格视图

问题描述

我有一个 datagridview,其中显示了学生及其年级组的完整列表以及其他信息。我希望能够使用组合框对其进行过滤,以便我可以选择例如第 9 年,并且 datagridview 将仅显示学生及其在第 9 年的详细信息。感谢各种帮助 - 我是 C# 新手

我在组合框中尝试了以下代码

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
        foreach (DataGridViewRow df in this.dataGridView1.Rows)
        {
            string TextVar;
            TextVar = comboBox1.Text;


            if (dataGridView1.Rows[df.Index].Cells[3].Value.ToString()== (TextVar))
            {
                dataGridView1.Rows[df.Index].Visible = true;
            }
            else
            {
                dataGridView1.Rows[df.Index].Visible = false;
            }
        }
    }

标签: c#foreachdatagridviewfiltering

解决方案


在此处输入图像描述 我知道你说它是不受约束的,但请试试这个:

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    var bc = BindingContext[dataGridView1.DataSource];
    bc.SuspendBinding();

    for (int i = 0; i < (dataGridView1.Rows.Count - 1); i++)
    {
        dataGridView1.Rows[i].Visible = (dataGridView1.Rows[i].Cells[3].Value.ToString() == comboBox1.Text);
    }

    bc.ResumeBinding();
}        

推荐阅读