如何根据另一个下拉列表的操作设置下拉列表的值?

时间:2013-04-20 18:17:37

标签: c# asp.net

我是C#和asp.net的初学者。

在我的工作中,特定的webform包含两个下拉列表,其ID分别为“DepartFrom”和“DepartTo”。每个列表包含相同的文本项。文字是“Dhaka,Chittagong,Sylhet,Cox'sbazar”。

现在我想采取以下行动:

  1. 当我在“DepartFrom”列表中选择“Dhaka”时,它不会出现在“DepartTo”列表中,但其他人将会出现。
  2. 当我在'DepartFrom'列表中选择'Dhaka'以外的'Text'时,只有'Dhaka'会出现在“DepartTo”列表中。
  3. 我试过这个,但它没有用。

    `protected void Page_Load(object sender, EventArgs e)
            {
    
                    if (DepartFrom.Items.ToString() == "Dhaka")
                    {
                        DepartTo.Items.Clear();
                        DepartTo.Items.Add("Chittagong");
                        DepartTo.Items.Add("Cox'sbazar");
                        DepartTo.Items.Add("Sylhet");
                        DepartTo.SelectedIndex = 0;
                    }
    
                    else
                    {
                        DepartTo.Items.Clear();
                        DepartTo.Items.Add("Dhaka");
                        DepartTo.SelectedIndex = 0;
                    }
    
            }
    `
    

    有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您可以将AutoPostBack="true"设置为定义第二个下拉列表行为的下拉列表,并在此下拉列表中定义SelectedIndexChanged事件

asp:DropDownList ID="DepartTo" runat="server" AutoPostBack="True" 
        onselectedindexchanged="itemSelected">
    </asp:DropDownList>

背后的代码

protected void itemSelected(object sender, EventArgs e)
{
   var control = (DropDownList)sender; 
   if(control.SelectedValue == "")
   {
     .....
   }
}

答案 1 :(得分:0)

这是一个漫长但易于理解的方式:

<asp:DropDownList ID="DepartFrom" runat="server" AutoPostBack="True" 
        onselectedindexchanged="fromSelected">
    </asp:DropDownList>

<asp:DropDownList ID="DepartTo" runat="server">
 </asp:DropDownList>

代码背后。

string[] items={"Dhaka", "Chittagong", "Sylhet", "Cox'sbazar"};
protected void fromSelected(object sender, EventArgs e)
{

 if((sender as DropDownList)!=null)
  {
   DepartTo.Items.Clear();
   foreach(string str in items)
    {
       if((sender as DropDownList).SelectedItem.ToString()!=str)
       {
        DepartTo.Items.Add(str);
       }
     }
   }

}