Pourquoi la liste déroulante ne montre-t-elle pas d’abord mon élément vierge? Voici ce que j’ai
drpList.Items.Add(New ListItem("", "")) With drpList .DataSource = myController.GetList(userid) .DataTextField = "Name" .DataValueField = "ID" .DataBind() End With
Edit ~ Je suis lié à une liste Generig, cela pourrait-il être le coupable?
Après votre databind:
drpList.Items.Insert(0, new ListItem(Ssortingng.Empty, Ssortingng.Empty)); drpList.SelectedIndex = 0;
La liaison de données a lieu après avoir ajouté votre élément de liste vide et il remplace ce qui existe déjà. Vous devez append l’élément vide au début de la liste à partir de votre contrôleur ou l’append après la liaison de données.
MODIFIER:
Après avoir googlé cela rapidement à partir de ASP.Net 2.0, il y a une propriété true “AppendDataBoundItems” que vous pouvez définir pour … append les éléments de la firebase database.
pour plus de détails voir
Vous pouvez utiliser AppendDataBoundItems=true
pour append facilement:
Je pense qu’un meilleur moyen est d’insérer d’abord l’élément vide, puis de lier les données comme vous l’avez fait. Toutefois, vous devez définir la propriété AppendDataBoundItems
du contrôle de liste.
Nous utilisons la méthode suivante pour lier toute source de données à tout contrôle de liste …
public static void BindList(ListControl list, IEnumerable datasource, ssortingng valueName, ssortingng textName) { list.Items.Clear(); list.Items.Add("", ""); list.AppendDataBoundItems = true; list.DataValueField = valueName; list.DataTextField = textName; list.DataSource = datasource; list.DataBind(); }
Comme “Whisk” Said, le tour est dans la propriété “AppendDataBoundItems”
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DropDownList1.AppendDataBoundItems = true; DropDownList1.Items.Insert(0, new ListItem(Ssortingng.Empty, Ssortingng.Empty)); DropDownList1.SelectedIndex = 0; } }
Merci “Fouetter”
Faites votre liaison de données puis ajoutez les éléments suivants:
Dim liFirst As New ListItem("", "") drpList.Items.Insert(0, liFirst)
il semble que vous ajoutiez un élément vide, puis une liaison de données qui viderait la liste; essayez d’insérer l’élément vide après la liaison de données
simple
enfin
ddlProducer.Items.Insert(0, "");
ddlCategory.DataSource = ds;
ddlCategory.DataTextField = "CatName";
ddlCategory.DataValueField = "CatID";
Cách 1:
ddlCategory.Items.Add(new ListItem("--please select--", "-1"));
ddlCategory.AppendDataBoundItems = true;
ddlCategory.SelectedIndex = -1;
ddlCategory.DataBind();
Cách 2:
ddlCategory.Items.Insert(0, new ListItem("-- please select --", "0"));
(Testé OK)
Vous pouvez également avoir une union de la sélection vide avec le contenu sélectionné:
select '' value, '' name union select value, name from mytable