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
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.
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
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.
Je pense qu'il veut que les données à l'intérieur de Combobox2 changent. –
"elle" veut ... ;-) – Cerebrus
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 .. –