2010-11-16 5 views
0

J'ai deux dropdownlist's.DropDownList2 (non lié à une source de données) et DropDownList3 (lié à une source de données)DROPDOWNLIST dans ASP.net C#

Le changement sur l'entrée dans un dropdownlist un certain contenu dans l'autre DROPDOWNLIST devrait changer. Pour cela j'avais utilisé la logique comme. Autopostback est activé pour ces deux contrôles.

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> 

Maintenant, le problème est quand je sélectionne DropDownList2.SelectedItem.Text == "Reg"STA et STM ne sont pas présents. Je veux STA et STM valeurs de retour dans la liste déroulante sur la sélection de «Reg». Quand je charge d'abord ma page et sélectionne 'Reg' toutes les valeurs dans DropDownList3 (y compris 'STA' et 'STM') sont présentes et que quand je sélectionne 'Stamp' les valeurs 'STA' et 'STM' sont perdu (comme indiqué dans le code). Maintenant encore quand je choisis 'Reg' ces valeurs ne sont pas là, je veux que ces valeurs soient présentes encore.

Que dois-je faire ?? Dois-je le relier à la base de données?

est-il une autre logique pour qu'il soit utilisé d'une manière différente? Si quelqu'un peut me aider

Répondre

0

Si vous connaissez les valeurs des éléments de liste déroulante, vous pouvez les ajouter à la clause else, si vous ne Je ne connais pas la combinaison valeur/texte que vous devrez relier.

+0

autre { DropDownList2.Items. Ajouter ("STA"); DropDownList2.Items.Add ("STM"); } j'avais fait cela mais il dint travail – Ishan

+0

vous voulez dire DropDownList3.Items.Add ("") droit? Qu'est-ce qui n'a pas fonctionné à ce sujet? ils ne sont pas apparus? Peut-être un problème de quand vous liez - pouvez-vous poster plus de code? – Prescott

+0

également sur SelectedIndexChanged les éléments ne sont pas supprimés, seulement quand je clique sur le bouton soumettre je suis capable de voir les changements. Comment ça va? – Ishan

1

Vous pouvez lier DropDownList3 chaque fois DropDownList2 changement d'indice sélectionné alors que si la valeur est « Stamp » vous supprimez les valeurs « STA » et « STM » de 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

Comment utiliser FillDataSource(); J'ai fait la liaison de données en utilisant l'assistant dans VisualWebDeveloper 2008 donc il n'y a pas beaucoup de codage – Ishan

+0

Pouvez-vous poster le code qui lie DropDownList3? –

+0

Pas besoin d'appeler FillDataSource(); équivalent. Appelez simplement DropDownList3.DataBind(); Je l'ai essayé et ça marche. –