Filtered Datasource不要求我使用dataview实例吗?

时间:2013-08-14 07:57:15

标签: c# asp.net data-binding dataview rowfilter

当我需要向数据源添加过滤器时,我通常会这样做:

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

但是我试图在没有dataview实例的情况下做到这一点我得到了非常奇怪的结果:

我创建了一个数据表:

   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";

然后我在屏幕上显示了数据表(简单循环)我看到了这个:

enter image description here

所以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()是否允许我使用dataview实例创建过滤数据源而不使用(例如:设置RowFilter是否足够)?

0 个答案:

没有答案