【问题标题】:Proper way to populate dropdownlist based off another value?根据另一个值填充下拉列表的正确方法?
【发布时间】:2010-12-21 06:06:48
【问题描述】:

我在处理一些 ASP.Net 代码时遇到了一个小问题。为简单起见,假设我有两个下拉列表,一个充满各种项目,另一个充满其他项目,但基于第一个下拉列表的选定项目。我目前将变量设置为隐藏输入,以检查第一个下拉列表中的项目是否已更改以及是否必须更改第二个下拉列表,但我还必须检查以确保是否有其他原因导致回发不重新填充第二个下拉列表,以免丢失用户当前选择的内容。此检查还允许我确保当我离开页面时,选择了正确的值,而不是被回发重新填充替换的值。

我是 ASP.Net/HTML/CSS/Javascript 等的新手。我知道虽然我所拥有的东西有效,但它甚至还不是正确的做事方式。请帮助我纠正我的方法并找出解决当前问题的最佳方法。一些好的 ASP.Net 教程网站也会很好,因为我需要不断提高我的技能。

【问题讨论】:

  • 您是否使用 .net 事件来执行此操作?您正在以何种规模实施此网站?
  • 我正在加载 Page.Load 事件中的第一个 ddl,但等到 Page.PreRender 填充第二个 ddl。肯定不是最好的(因此我的问题),但我现在才加入而不是在一楼。不知道你所说的规模是什么意思,但每天的点击量不会很多,可能是 500 次。

标签: asp.net drop-down-menu postback


【解决方案1】:

使用选定的索引更改事件尝试 autopostback true:

<asp:DropDownList ID="DropDownList1" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" runat="server" />
<asp:DropDownList ID="DropDownList2" runat="server" />

并让事件填充第二个下拉列表:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
}

编辑 好吧,如果您需要从第一个页面加载中填充它,您可以执行以下操作,或者最好还是创建一个从页面加载和选定索引中调用的方法,这将填充您的下拉列表。

if (!Page.IsPostBack)
{
   DropDownList1_SelectedIndexChanged(DropDownList1, EventArgs.Empty);
}

【讨论】:

  • 这似乎可以工作,除了第一次加载页面时它没有被调用。但我敢打赌,如果这将是我的解决方案,我会打赌并查看 MSDN 页面@astander。
【解决方案2】:
猜你喜欢
  • 2017-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多