DropDown列表选择

时间:2011-01-19 18:03:46

标签: asp.net drop-down-menu

我有三个DropDown List Controls.each下拉列表包含静态值1,2,3,4 我需要做的是当在第一个下拉列表中选择一个项目时(在SelectedIndexChanged事件上),应该在其他两个下拉列表中选择相同的项目

4 个答案:

答案 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();
}