C# 过滤数据源不要求我使用dataview实例?

C# 过滤数据源不要求我使用dataview实例?,c#,asp.net,data-binding,dataview,rowfilter,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

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

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);
然后添加一个行过滤器

dt.DefaultView.RowFilter = "id=1";
然后我在屏幕上显示了datatable简单循环我看到了:

所以RowFilter没有任何影响。很明显,因为我们没有通过DataView实例来实现

但是

当我把它绑定到一个下拉列表中时,它考虑了RoWoStudio!
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是否足够?

什么是xxx?gridview?设置数据源后是否调用了数据绑定?@SriramSakthivel是的,我确实调用了已编辑的数据绑定。xxx是一个可接受的数据源容器。它可能是repeater/ddl/…我刚刚尝试了与gridview绑定,效果很好。仅显示id=1。不知道你是怎么想的trying@SriramSakthivel你不明白我的问题。看来,DavaDink确实考虑了ROWFER,而不是通过DATAVIEW,而用循环迭代数据源并不考虑ROWFILE。所以GRID只显示1,但是当循环时,您得到2条记录。这是你的问题吗?