0

datagridview でデータをフィルタリングしたい。私は次のコードでこれを行いたい:

DataView view = new DataView();
DataTable dt = new DataTable();
dt = Tbl_events.DataSource as DataTable;
view = dt.DefaultView; 
view.RowFilter = "Type='1301'";
Tbl_events.DataSource = view;

これにより、空のデータグリッドビューが得られます。コードをデバッグすると、次の行に表示されます。

dt = Tbl_events.DataSource as DataTable;
Tbl_events.DataSource = null;

しかし、datagridview Tbl_events にはデータがあります。

私は何を間違っていますか?

4

2 に答える 2

0

このコードを試してください:

行の追加を使用しています。最初にデータテーブルに変換し、次にフィルタリングを使用してデータテーブルをデータグリッドビューに追加します

     foreach (DataGridViewColumn c in dataGridView1.Columns)
            {
                dt.Columns.Add(new DataColumn(c.HeaderText.ToString()));
            }


        for (int row = 0; row < dataGridView1.Rows.Count; row++)
        {
            // create a new dt row to match up with the rows in the DGV
            DataRow dr = dt.NewRow();
            int column = 0;
            foreach (DataGridViewColumn c in dataGridView1.Columns)
            {
                //Sure you can see what this is doing.
                dr[c.HeaderText.ToString()] = dataGridView1.Rows[row].
                   Cells[column].Value;
                column++;
            }

            //now i add the row to the data table.
            dt.Rows.Add(dr);
        }


        dataGridView1.Rows.Clear();
 dt = dt.Select("Type='1301'").CopyToDataTable();
            dataGridView1.DataSource = dt;

編集

 DataView view = new DataView();
            view = dt.DefaultView;
            view.RowFilter = "Type='1301'"
 dataGridView1.DataSource = view;
于 2013-04-11T06:40:36.670 に答える