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