web-dev-qa-db-fra.com

Comment définir le premier index comme vide dans la zone de liste déroulante

J'ai une zone de liste déroulante qui est liée à une source de données. Dans cette zone de liste déroulante, je dois ajouter un champ vide à l'index 0.

J'ai écrit le code suivant pour obtenir des enregistrements.

 public List<TBASubType> GetSubType(int typ)
        {
            using (var tr = session.BeginTransaction())
            {
                try
                {
                    List<TBASubType> lstSubTypes = (from sbt in session.Query<TBASubType>()
                                                    where sbt.FType == typ
                                                    select sbt).ToList();


                    tr.Commit();
                    return lstSubTypes;
                }
                catch (Exception ex)
                {
                    CusException cex = new CusException(ex);
                    cex.Write();
                    return null;
                }
            }
        }

Après cela, il se lie avec combobox avec la source de liaison de données comme ci-dessous.

M3.CM.BAL.CM CMobj = new M3.CM.BAL.CM(wSession.CreateSession());
                lstSubTypes = CMobj.GetSubType(type);
                this.tBASubTypeBindingSource.DataSource = lstSubTypes;
14
Amit Kumar

Si vous ne voulez rien sélectionner au départ, vous pouvez utiliser

comboBox1.SelectedIndex=-1;
27
Energy

Ainsi, vous ne pouvez pas modifier les éléments lorsque vous êtes lié à DataSource, alors seule l'option pour ajouter une ligne vide modifie votre source de données. Créez un objet vide et ajoutez-le à la source de données. Par exemple. si vous avez une liste de quelques Person entités liées au combobox:

var people = Builder<Person>.CreateListOfSize(10).Build().ToList();
people.Insert(0, new Person { Name = "" });
comboBox1.DisplayMember = "Name";
comboBox1.DataSource = people;

Vous pouvez définir la propriété statique Empty dans votre classe:

public static readonly Person Empty = new Person { Name = "" };

Et utilisez-le pour insérer un élément vide par défaut:

people.Insert(0, Person.Empty);

Cela permettra également de vérifier si l'élément sélectionné est celui par défaut:

private void comboBox_SelectedIndexChanged(object sender, EventArgs e)
{
    Person person = (Person)comboBox.SelectedItem;
    if (person == Person.Empty)
        MessageBox.Show("Default item selected!");
}    
13
Sergey Berezovskiy