2013-08-07 15 views
7

Ho una casella combinata associata a un'origine dati. In questa casella combinata devo aggiungere un campo vuoto all'indice 0.Come impostare il primo indice come vuoto nella casella combinata

Ho scritto il seguente codice per ottenere i record.

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; 
       } 
      } 
     } 

Dopo questo si associa a una casella combinata con origine associazione dati come sotto codice.

M3.CM.BAL.CM CMobj = new M3.CM.BAL.CM(wSession.CreateSession()); 
       lstSubTypes = CMobj.GetSubType(type); 
       this.tBASubTypeBindingSource.DataSource = lstSubTypes; 
+1

Includere un record stringa vuota nell'origine vincolante? –

risposta

9

Pertanto non è possibile modificare gli elementi quando si è associati a DataSource, quindi l'unica opzione per aggiungere righe vuote è la modifica dell'origine dati. Crea un oggetto vuoto e aggiungilo all'origine dati. Per esempio. se avete elenco di alcuni Person soggetti legati alla casella combinata:

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

È possibile definire proprietà statica Empty nella classe:

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

e utilizzarlo per inserire di default elemento vuoto:

people.Insert(0, Person.Empty); 

Ciò consentirà anche di verificare se l'elemento selezionato è quello predefinito:

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

Se si desidera solo per selezionare nulla, inizialmente, è possibile utilizzare

comboBox1.SelectedIndex=-1; 
+0

No Voglio aggiungere una riga vuota nella casella combinata. –

Problemi correlati