Ajouter une entrée vide à la liste déroulante liée à la liste d'entités

c# combobox data-binding entity-framework winforms

Question

J'utilise un ComboBox lié à une liste <> d'entités. Comment ajouter une entrée "Non sélectionné" à la liste déroulante? L'ajout de null à la liste entraîne une liste déroulante vide.

Réponse acceptée

Vous devez utiliser une chaîne vide ou un autre modèle de texte unique au lieu de null.

Et ensuite, vous pouvez gérer l'événement Format de la liste déroulante pour intercepter le <empty> et afficher un texte de remplacement.

private void comboBox1_Format(object sender, ListControlConvertEventArgs e)
{
   e.Value = FormatForCombobox(e.ListItem);
}


private string FormatForCombobox(object value)
{
  string v = (string) value;
  if (v == string.Empty)
     v = "<no Selection>";
  return v;
}

Réponse populaire

Si vous vous IEnumerable liste d'entités IEnumerable vous pouvez certainement ajouter votre objet vide manuellement.

Par exemple

var qry = from c in Entities
          select c;
var lst = qry.ToList();

var entity = new Entity();
entity.EntityId= -1;
entity.EntityDesc = "(All)";
lst.Insert(0, entity);

MyComboBox.DataSource = lst;
MyComboBox.DisplayMember = "EntityDesc"
MyComboBox.ValueMember = "EntityId"


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow