我有三个DropDown列表Controls.each下拉列表中包含静态值1,2,3,4 我需要做的是当第一个下拉列表中选择一个项目(在SelectedIndexChanged事件)相同的项目应该在其他两个下拉列表中选择DropDown列表选择
回答
这就是你所做的。
在ASPX代码:
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged">
<asp:ListItem Text="1" Value="1" />
<asp:ListItem Text="2" Value="2" />
<asp:ListItem Text="3" Value="3" />
<asp:ListItem Text="4" Value="4" />
</asp:DropDownList>
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged">
<asp:ListItem Text="1" Value="1" />
<asp:ListItem Text="2" Value="2" />
<asp:ListItem Text="3" Value="3" />
<asp:ListItem Text="4" Value="4" />
</asp:DropDownList>
<asp:DropDownList ID="DropDownList3" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged">
<asp:ListItem Text="1" Value="1" />
<asp:ListItem Text="2" Value="2" />
<asp:ListItem Text="3" Value="3" />
<asp:ListItem Text="4" Value="4" />
</asp:DropDownList>
在代码隐藏:
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
string value = ddl.SelectedValue;
SetValue(DropDownList1, value);
SetValue(DropDownList2, value);
SetValue(DropDownList3, value);
}
protected void SetValue(DropDownList ddl, string value)
{
ddl.SelectedIndex = ddl.Items.IndexOf(ddl.Items.FindByValue(value));
}
只需键入ddl1.SelectedValue = ddl2.SelectedValue
将无法正常工作,因为DropDownList.SelectedValue
是只读的。
请注意,我没有将所有DDL的SelectedIndex
设置为发件人的SelectedIndex
。你的可以在你的示例场景中使用它,但是如果你的一个DDL的ListItems的顺序与其他顺序不同,代码将会中断。在我看来,这使得它危险的做法,但YMMV。另外,如果您决定推广SetValue方法(我经常在整个项目中将其作为扩展方法添加到DropDownList
控件中),则应该处理在DDL中找不到目标值的情况,推测是抛出异常。您也可以使用FindByText
制作SetText版本。
将第2个和第3个下拉列表中的selectedvalue属性设置为第1个上的选定值。将DropDown设置为autopostback =“true”,以便将其发送回服务器,并且可以适当地进行设置。
或者,当更改客户端事件触发第一个选择元素时,使用客户端JavaScript更改其他select元素上的selectedindex属性。
所有你需要做的是设置你的其他下拉列表的SelectedIndex
这样的:
protected void DropDownList1SelectedIndexChanged(Object sender, EventArgs e)
{
dropDownList2.SelectedIndex = dropDownList1.SelectedIndex;
dropDownList3.SelectedIndex = dropDownList1.SelectedIndex;
}
忘了提及...所有下拉列表中的值都不是相同的顺序,所以这不起作用... – chamara 2011-01-19 18:16:22
尝试以下操作:
标记:
<asp:DropDownList ID="dd1" OnSelectedIndexChanged="dd1_SelectedIndexChanged" AutoPostBack="true" runat="server" />
<asp:DropDownList ID="dd2" runat="server" />
<asp:DropDownList ID="dd3" runat="server" />
代码隐藏:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
BindData();
}
protected void dd1_SelectedIndexChanged(object sender, EventArgs e)
{
string selected = dd1.SelectedValue;
dd1.SelectedValue = dd2.SelectedValue = dd3.SelectedValue = selected;
BindData();
}
private void BindData()
{
int[] values = { 1, 2, 3, 4 };
dd1.DataSource = dd2.DataSource = dd3.DataSource = values;
dd1.DataBind();
dd2.DataBind();
dd3.DataBind();
}
我相信`dd1.SelectedValue = dd2.SelectedValue`会导致错误,因为这是一个只读属性。 – 2011-01-19 18:37:31
@Justin:不,它不是。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selectedvalue.aspx。我测试了我的代码btw。 – volpav 2011-01-19 19:08:37
- 1. 在asp mvc中的DropDown列表选择
- 2. 简单的SlickGrid DropDown选择列表celleditor
- 3. Selenium 2.0 - @FindBy - Dropdown列表选择
- 4. jquery dropdown从列表中间选择日期选择器和值
- 5. SharePoint DropDown列表筛选器
- 6. DropDown默认选择
- 7. 填充DropDown /选择基于另一个DropDown选择的值
- 8. DropDown选择不提交到表格
- 9. Dropdown-为数据库表选择
- 10. Drupal 7 DropDown选择列表以显示在视图中
- 11. 如何从PHP中的DropDown列表中选择值?问题
- 12. 问题页面生成时从DropDown列表中选择DB值
- 13. Excel:使用DropDown列表在数值选择时拉取数据
- 14. DropDown列表选择索引更改事件如何工作jquery?
- 15. 造型选择输入DROPDOWN
- 16. DateTimePicker选择只与DropDown
- 17. Dropdown默认选择值
- 18. 默认DropDown和复选框列表值
- 19. 带有复选框的DropDown列表
- 20. 用jquery按值选择多选dropDown
- 21. jQuery:HTML DropDown列表的作品,但ASP控制DropDown列表不是
- 22. 选择从选择列表
- 23. 选择列表选择更改另一个选择列表
- 24. 选择列表
- 25. First DropDown选择不会触发第二个DropDown函数
- 26. Angular 3 dropDown选择出生日
- 27. jQuery限制“Dropdown Check List”选择
- 28. 使用Selenium IDE选择Kendo Dropdown
- 29. 在selenium webdriver中选择“bootstrap dropdown”的值?
- 30. Bootstrap选择器dropdown-menu.pullright不工作?
好吧!那么什么不起作用? – Shoban 2011-01-19 18:06:00