7

我应该在我的代码中添加什么以仅显示我的搜索结果?

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

一直试图隐藏其他行但没有任何成功(并且只显示搜索结果,单独)。有什么建议么?我使用数据网格视图。

我的代码:

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

2 回答 2

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,则并不那么容易,如本页所示。

于 2012-10-25T10:17:04.713 回答
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;
    }
}
于 2012-10-25T11:38:49.253 回答