1

データソースにフィルターを追加する必要がある場合、通常は次のようにします。

var dv= dt.DefaultView;
dv.RowFilter = "id=1";
xxx.DataSource = dv.ToDable();
xxx.DataBind();

しかし、データビュー インスタンスなしで実行しようとしましたが、かなり奇妙な結果が得られました。

私はデータテーブルを作成しました:

   DataTable dt = new DataTable("myTable");
   dt.Columns.Add("id", typeof (int));
   dt.Columns.Add("name", typeof (string));
   DataRow row = dt.NewRow();
   row["id"] = 1;
   row["name"] = "aaa";
   dt.Rows.Add(row);
   row = dt.NewRow();
   row["id"] = 2;
   row["name"] = "222";
   dt.Rows.Add(row);

次に、RowFilter を追加しました

dt.DefaultView.RowFilter = "id=1";

そして、私は画面にデータテーブルを表示しました(単純なループ)私はこれを見ました:

ここに画像の説明を入力

したがって、RowFilter は何の影響もありませんでした。(明らかに、DataView インスタンスを介して実行しなかったためです)。

しかし

それを DropDownListにバインドすると、 Rowfilterが考慮されました。

DropDownList ddl = new DropDownList();
ddl.DataSource=dt; //notice I don't use the dataview instance
ddl.DataTextField="name";
ddl.DataValueField="id";
ddl.DataBind();

テスト :

ddl.Items.Count1でした

しかし、そのテストに関するドキュメントは見つかりません。

質問 :

データビュー インスタンスを使用せずDataBind()にフィルター処理されたデータソースを作成できますか(例: RowFilter を設定するだけで十分ですか)?

4

0 に答える 0