DataGridview搜索:只显示searchresult并隐藏其他行?

时间:2012-10-25 10:07:51

标签: c# .net winforms datagridview

我应该在代码中添加什么才能显示搜索结果?

现在,当我搜索搜索结果时,选择(突出显示)并且其他搜索结果保持不变。

试图隐藏其他行但没有任何成功(仅显示searchresult,单独)。有什么建议? 我正在使用datagridview。

我的代码:

private void button3_Click_1(object sender, EventArgs e)
{
    string search = textBox1.Text;

    for (int i = 0; i < dgTest.Rows.Count; i++)
    {
        if (dgTest.Rows[i].Cells[0].Value.ToString() == search)
        {
            dgTest.Rows[i].Selected = true;
            break;
        }
        else
        {
            dgTest.Rows[i].Selected = false;
        }
    }
}

2 个答案:

答案 0 :(得分:5)

如果DataGridView未绑定到数据源,则将行的Visible属性设置为false将隐藏它:

for (int i = 0; i < dgTest.Rows.Count; i++)
    {
        var row = dgTest.Rows[i];

        if (row.Cells[0].Value.ToString() == search)
        {
            row.Selected = true;
            row.Visible = true;
        }
        else
        {
            row.Selected = false;
            row.Visible = false;
        }
    }

(我删除了'break'命令,因为即使你找到了匹配的行,你仍然希望继续并隐藏其他行。)

如果你正在使用DataBinding,那就不那么容易了,如this page所示。

答案 1 :(得分:1)

你可以试试这个:

for (int i = 0; i < dgTest.Rows.Count; i++)
{
    if (dgTest.Rows[i].Cells[0].Value.ToString() == "search")
    {
        dgTest.Rows[i].Selected = true;
        dgTest.Rows[i].Visible = true;
    }
    else
    {
        dgTest.Rows[i].Visible = false;
        dgTest.Rows[i].Selected = false;
    }
}