2009-02-25 9 views
0

comment cacher ou désactiver des éléments dans une liste déroulante sur la base de l'élément sélectionné dans une autre zone de liste déroulante dans vb.net?combobox in vb.net

Répondre

2

Manipulez la source de données de la deuxième zone de liste déroulante dans l'événement de modification d'index sélectionné du premier.

2

Comme gerrie dit, vous devez faire une condition dans la deuxième zone de liste déroulante sélectionnée événement Changed indexé, comme ceci:

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged 
    If ComboBox1.SelectedValue = "my Value" Then 
     ComboBox2.Visible = False 
    End If 
End Sub 

Où « ma valeur » est une valeur que j'ai en ComboBox1

Modifier :

La liste déroulante conserve les valeurs insérées sauf si vous les effacez. En utilisant cette ligne de code

ComboBox2.Items.Clear() 

Ou sinon vous mettez les valeurs dans une liste comme un Datatable et pointez la source de données combobox de cette Datatable spécifique

+0

Je pense qu'il veut que les données à l'intérieur de Combobox2 changent. –

+0

"elle" veut ... ;-) – Cerebrus

+0

Je ne pense pas avoir mon problème. situation est comme ça .. ComboBox1 ComboBox2 pomme rouge mangue bleue de raisins verts jaune orange lorsque je sélectionne une valeur de ComboBox2 seulement 2 valeurs doivent être visibles de box1, le repos sont not..how pour le faire .. –

0

Je voulais simplement essayer de résoudre un problème avec cela. Il s'est avéré lorsque j'ai effacé les éléments dans la zone de liste déroulante et défini l'index sélectionné sur -1, il a émis une exception qu'il ne peut pas trouver l'index sélectionné. était ma solution la suivante:

using System.Web.UI.WebControls; 

namespace AjaxControlToolkit.Extensions 
{ 
    public static class ComboBoxExtension 
    { 
     public static void ForceClearSelectedIndex(this AjaxControlToolkit.ComboBox comboBox) 
     { 
      if (comboBox.Items.Count > 0) 
       comboBox.Items.Clear(); 
      comboBox.Items.Add(new ListItem(string.Empty, string.Empty)); 
      comboBox.Text = string.Empty; 
     } 
    } 
} 

Ensuite, dans le premier indice de l'événement ItemInserted de combobox, ou sélectionné/texte événement modifié, vous pouvez simplement appeler:

ComboBoxName.ForceClearSelectedIndex(); 

Mettre tous ensemble vous pouvez faire ceci:

protected void tbxCustomerName_TextChanged(object sender, EventArgs e) 
    { 
     if (Customers.Count > 0) 
     { 
      var datasource = Devices.Where(d => d.Customer.FullName == tbxCustomerName.SelectedItem.Text); 
      tbxDeviceName.DataSource = datasource; 
      tbxDeviceName.DataTextField = "Name"; 
      tbxDeviceName.DataValueField = "Device_ID"; 
      tbxDeviceName.DataBind(); 
     } 
     else 
     { 
      tbxDeviceName.ForceClearSelectedIndex(); 
     } 
    } 

Pas en VB, mais vous pouvez facilement le convertir.