2010-11-16 4 views
0

У меня есть два dropdownlist's.DropDownList2 (не связан с источником данных) и DropDownList3 (связанный с источником данных)DropDownList в ASP.net C#

об изменении на входе в одном DropDownList некоторое содержание в другом меню списка следует изменить. Для этого я использовал логику как.

Автоповтор включен для обоих этих элементов управления.

protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (DropDownList2.SelectedItem.Text == "Stamp") 
     { 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("STA")); 
      DropDownList3.Items.Remove(DropDownList3.Items.FindByText("STM")); 
     } 


<asp:DropDownList ID="DropDownList3" runat="server" 
      DataSourceID="SqlDataSource1" DataTextField="skey" DataValueField="casecode" 
      AppendDataBoundItems="True" AutoPostBack="True"> 
      <asp:ListItem Selected="True" Value="S">Select</asp:ListItem> 
     </asp:DropDownList> 

Теперь проблема, когда я выбираю DropDownList2.SelectedItem.Text == "Reg"STA и STM нет. Я хочу STA и STM значения в раскрывающемся списке на выбор 'Reg'.

Когда я впервые загружаю свою страницу и выбираю «Reg», все значения в DropDownList3 присутствуют, и когда я выбираю «Stamp», значения STA и STM потерянный (как показано в коде). Теперь снова, когда я выбираю «Reg», этих значений нет, я хочу, чтобы эти значения присутствовали снова.

Что мне делать? Нужно ли мне снова привязывать его к базе данных?

Есть ли другая логика для того, чтобы использовать по-другому? Если кто-то может помочь мне

ответ

0

Если вы знаете, значения элементов раскрывающихся, вы можете добавить их в предложении еще, если вы не Не знаете комбинацию значений/текста, которую вам придется перестроить.

+0

еще { DropDownList2.Items. Добавить ("СТО"); DropDownList2.Items.Add ("STM"); } Я сделал это, но это работает – Ishan

+0

Вы имеете в виду DropDownList3.Items.Add ("") правильно? Что не сработало? они просто не появились? Возможно, проблема в том, когда вы привязываетесь - можете ли вы разместить больше кода? – Prescott

+0

также на SelectedIndexChanged, элементы не удаляются, только когда я нажимаю кнопку отправки, я могу видеть изменения. Как это так? – Ishan

1

Вы можете связать DropDownList3 каждый DropDownList2 изменения выбранного индекса только тогда, если значение «Stamp» вы удалите значения «STA» и «СТМ» от DropDownList3

protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e)  
{ 
    // Fill DropDownList3 data source and bind it again to restore all the items 
    FillDataSource(); // This method gets all the data from DropDownList3 
    DropDownList3.DataBind(); 

    if (DropDownList2.SelectedItem.Text == "Stamp") 
    { 
     DropDownList3.Items.Remove(DropDownList3.Items.FindByText("STA")); 
     DropDownList3.Items.Remove(DropDownList3.Items.FindByText("STM"));   
    } 
    ... 
+0

Как использовать FillDataSource(); Я сделал привязку данных с помощью мастера в VisualWebDeveloper 2008, поэтому не так много кода – Ishan

+0

Можете ли вы опубликовать код, который связывает DropDownList3? –

+0

Не нужно вызывать FillDataSource(); эквивалент. Просто позвоните в DropDownList3.DataBind(); Я попробовал, и он работает. –

Смежные вопросы