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

use*_*766 7 .net c# datagridview winforms

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

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

一直试图隐藏其他行但没有任何成功(只显示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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

stu*_*rtd 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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

(我删除了'break'命令,因为即使在找到匹配的行之后,您也希望继续并隐藏其他行.)

但是,如果你正在使用DataBinding,那就不那么容易了,如本页所示.


Roh*_*yas 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;
    }
}
Run Code Online (Sandbox Code Playgroud)