C# 从缓存数据创建级联dropdownlist
在我的应用程序中,我编写了一个主查询,如C# 从缓存数据创建级联dropdownlist,c#,asp.net,caching,drop-down-menu,cascadingdropdown,C#,Asp.net,Caching,Drop Down Menu,Cascadingdropdown,在我的应用程序中,我编写了一个主查询,如 SqlDataAdapter cmd0 = new SqlDataAdapter(select a,b,c,d, from table1,sqlconn) 然后我缓存了这个查询,因为table1是一个非常大的表,我不想每次用户做一些更改时都调用数据库 DataSet ds0 = new DataSet(); cmd0.Fill(ds0); DataView source0 = new DataView(
SqlDataAdapter cmd0 = new SqlDataAdapter(select a,b,c,d, from table1,sqlconn)
然后我缓存了这个查询,因为table1是一个非常大的表,我不想每次用户做一些更改时都调用数据库
DataSet ds0 = new DataSet();
cmd0.Fill(ds0);
DataView source0 = new DataView(ds0.Tables[0]);
DataTable dt0 = new DataTable();
cmd0.Fill(dt0);
Cache["data"] = ds0;
我有两个a和b的下拉列表。
我获取缓存的列a并绑定DropDownList中的数据
//dropdown for a
DataSet dataset_a = new DataSet();
dataset_a = (DataSet)Cache["data"];
DataView dataview_a = dataset_a.Tables[0].DefaultView;
dataview_a.Sort = "a";
DataTable datatable_a = dataview_a.ToTable(true, "a");
ddla.DataSource = datatable_a;
ddla.DataTextField = "a";
ddla.DataValueField = "a";
ddla.DataBind();
现在,我尝试以与ddla相同的方式为b初始填充dropdownlist
//dropdown for b
DataSet dataset_b = new DataSet();
dataset_b = (DataSet)Cache["data"];
DataView dataview_b = dataset_b.Tables[0].DefaultView;
dataview_b.Sort = "b";
DataTable datatable_b = dataview_b.ToTable(true, "b");
ddlb.DataSource = datatable_b;
ddlb.DataTextField = "b";
ddlb.DataValueField = "b";
ddlb.DataBind();
当我在ddla(a的下拉列表)中更改我的选择时,我希望b的下拉列表也被更改。(级联下拉列表)
因此,基本上我想启动查询,如下所示:
Select b from table1 where a=ddla.SelectedItem.ToString()
但我不知道如何处理缓存数据
请帮帮我!谢谢你 您不能绑定到同一个源并期望得到您想要的结果。 要获取所需内容,需要解除绑定
ddlb
。相反,在ddla
的事件SelectedIndexChanged
或SelectedItemChanged
中,您应该从数据表中筛选行并加载到ddlb
中。
实际上,做这件事的方法很少。一个是在数据集中有两个表并使用关系,一个组合绑定到表
a
,另一个绑定到表b
。这样,当您单击a
时,相关行将显示在b
中。非常感谢您。解除dd1b的绑定并再次与dataview绑定。SelectedIndexChanged事件上的rowfilter成功!从早上起我就一直被这件事弄得头晕目眩!再次感谢你。