0

C#でdatagridviewを使って検索リストを作りたいです。顧客名を入力できるテキスト ボックスがあります。「検索」ボタンをクリックすると、CustomerName が searchValue と等しくないすべての行が非表示になります。問題は、ユーザーが 2 回目に検索したいときに、dgv の非表示の行を検索するにはどうすればよいかということです。非表示の行を表示する必要がありますか。ありがとう。

これがコードです。

   private void search_Click(object sender, EventArgs e)
    {
         arrayList= new ArrayList();
        String searchValue = searchBox.Text;
        for (int i = 0; i < dataGridView1.RowCount-1; i++)
        {
            if ( (dataGridView1.Rows[i].Cells[1].Value.ToString().Trim() ).Equals (searchValue.Trim()) )
            {
                //dataGridView1.Visible = true;
                arrayList.Add(i);
            }
            else
            {
                dataGridView1.Visible = false;
            }
        }
        dataGridView1.Refresh();

    }
4

1 に答える 1

0

データテーブルを使用してデータグリッドビューをバインドしていますか? その場合、検索時にデータテーブルを反復処理して、検索条件に一致しない行を削除できます。検索すると、データテーブルの変更を拒否して、元のデータを再び取得できます。その後、最初に使用したのと同じプロセスを使用できます (検索条件に一致しないデータ行を削除済みとしてマークします)。

もう 1 つの方法として、DataRowView とフィルタを検索基準で使用し、その datarowview を使用して datagridview をバインドすることができます。私はこの最後のものを好むでしょう。

于 2013-04-14T17:40:14.067 に答える