データソースにフィルターを追加する必要がある場合、通常は次のようにします。
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.Count
1でした
しかし、そのテストに関するドキュメントは見つかりません。
質問 :
データビュー インスタンスを使用せずDataBind()
にフィルター処理されたデータソースを作成できますか(例: RowFilter を設定するだけで十分ですか)?