Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从缓存数据创建级联dropdownlist_C#_Asp.net_Caching_Drop Down Menu_Cascadingdropdown - Fatal编程技术网

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成功!从早上起我就一直被这件事弄得头晕目眩!再次感谢你。