我有三个DropDown List Controls.each下拉列表包含静态值1,2,3,4 我需要做的是当在第一个下拉列表中选择一个项目时(在SelectedIndexChanged事件上),应该在其他两个下拉列表中选择相同的项目
答案 0 :(得分:1)
将2nd和3rd上的selectedvalue属性设置为第一个上的选定值。将DropDown设置为autopostback =“true”,以便它回发到服务器,您可以适当地设置它。
OR,当更改客户端事件触发第一个时,使用客户端JavaScript更改其他选择元素上的selectedindex属性。
答案 1 :(得分:1)
这是你做的。
在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
设置为发件人的DropDownList
。您可以在示例场景中使用它,但如果您的某个DDL的ListItems与其他DDL的顺序不同,则代码将会中断。在我看来,这使得它成为危险的做法,但是YMMV。
此外,如果您决定概括SetValue方法(我经常将其作为扩展方法添加到整个项目中的FindByText
控件),您应该处理在目标值中找不到目标值的情况。 DDL,大概是通过抛出异常。您还可以使用{{1}}制作SetText版本。
答案 2 :(得分:0)
您需要做的就是设置其他下拉列表的SelectedIndex
,如下所示:
protected void DropDownList1SelectedIndexChanged(Object sender, EventArgs e)
{
dropDownList2.SelectedIndex = dropDownList1.SelectedIndex;
dropDownList3.SelectedIndex = dropDownList1.SelectedIndex;
}
答案 3 :(得分:0)
尝试以下方法:
标记:
<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();
}