【问题标题】:create cascading dropdownlist from cached data从缓存的数据创建级联下拉列表
【发布时间】:2013-06-21 15:59:52
【问题描述】:

在我的应用程序中,我编写了一个主查询,例如

 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;

我有 2 个用于 a 和 b 的下拉列表。 我得到缓存列 a 并在下拉列表中绑定数据

 //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 填充下拉列表

//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(dropdownlist for a) 中更改我的选择时,我希望 b 的下拉列表也可以更改。 (级联下拉列表)

所以基本上我想触发这样的查询:

Select b from table1 where a=ddla.SelectedItem.ToString()

但我不知道如何处理缓存的数据。

请帮帮我!谢谢!!!

【问题讨论】:

    标签: c# asp.net caching drop-down-menu cascadingdropdown


    【解决方案1】:

    您不能绑定到相同的源并期望得到您正在寻找的结果。 要获得您想要的,您需要取消绑定ddlb。相反,在ddla 的事件SelectedIndexChanged 或SelectedItemChanged 上,您应该过滤数据表中的行并加载到ddlb。 实际上有几种方法可以做到这一点。一是在数据集中有2个表并使用关系,一个组合绑定到表a,另一个绑定到表b。这样,当您点击a时,相关行将显示在b中

    【讨论】:

    • 非常感谢。在 SelectedIndexChanged 事件上解除绑定 dd1b 并使用 dataview.rowfilter 再次绑定它有效!从早上起就一直在这件事上打破我的头!再次感谢您。
    猜你喜欢
    • 2018-04-07
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多