【问题标题】:Dependent dropdowns populated by sql database in ASP.NETASP.NET 中由 sql 数据库填充的相关下拉列表
【发布时间】:2014-07-08 06:32:16
【问题描述】:

我的页面上有 3 个下拉列表和一个数据列表。所有这些都是根据先前下拉列表中的选定项目从 SQL 数据库中填充的。
AutoPostBack 在所有三个下拉列表中都设置为 true,并且在第一页加载时它们会正确显示,即在所有三个下拉列表中选择第一个项目,并根据该选择将结果显示在数据列表中。但是当我在第一个下拉列表中更改选择时,只有第二个下拉列表会更新(有时它会更新第三个但它不一致),并且要获得第三个的更新,我需要更改第二个的选择。数据列表中的结果大部分保持不变,并在我更改第三个下拉列表中的选择时更新。

当我在第一个下拉菜单中更改选择时,我需要做什么来更新数据列表?

【问题讨论】:

  • 如果没有看到您的代码,很难给出任何明智的建议,这只是猜测。调试代码时会发生什么?您如何重新绑定回发中的数据?我假设您也在这里使用网络表单。您是否检查过由于可能从多个下拉菜单中触发了 onchange 事件,您没有触发多个事件。

标签: asp.net sql


【解决方案1】:

如果不查看您的代码,就很难回答这个问题。但是通过查看您的问题的描述,您似乎正在设置 AutoPostBack=true,但没有处理 OnSelectedIndexChanged 事件。

首先,您应该为所有三个下拉菜单添加 OnSelectedIndexChanged 事件,如下所示。

protected void dropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{

}

在每个 selectedindex changed 事件中,您需要绑定下一个下拉列表。 也许你可以有一个通用的函数来绑定列表视图,你需要在每个 SelectedIndexChanged 事件中调用它。

如果您只是设置 AutoPostBack=true 而未处理 selectedindex 的更改,则它无法按预期正常工作

【讨论】:

    【解决方案2】:

    要在第一个下拉列表更改时更新数据列表,您必须手动触发回发事件(对于第二个和第三个下拉列表)!

    假设第三个下拉列表中的数据基于第二个的选择,在 JavaScript 中的客户端页面上:尝试选择第一个项目或默认项目。这将填充第三个列表。

    一个好的做法是有一个不具体的默认元素!

    这也是设计问题。如果它是一个典型的列表,其中第二个和第三个列表会经常在本地更改,那么最好将其预取并存储在本地 Json 对象中!

    【讨论】:

      【解决方案3】:

      获取在第一个下拉更改的 selection_index 上填充的列表。调用另外两个下拉列表的填充方法...

      并在第二个下拉菜单的 selection_change 事件上调用第三个下拉菜单的填充方法

      【讨论】:

        【解决方案4】:

        检查您的 selectedIndexchanged 方法,并在您将数据绑定到 datalist 之前清除 datalist 项,然后进行绑定。这样您就可以清楚地知道哪些数据没有填充。并在此处发布您的代码,以便提供清晰的思路

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-09
          • 2014-12-25
          相关资源
          最近更新 更多