2013-08-07 14 views
7

Mam combobox, który jest związany ze źródłem danych. W tym polu wyboru muszę dodać puste pole o indeksie 0.Jak ustawić pierwszy indeks jako pusty w combobox

Napisałem następujący kod dla uzyskania zapisów.

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

Następnie połączy się z combobox ze źródłem danych jak poniżej.

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

Dołącz pusty ciąg rekordu w źródle wiążąca? –

Odpowiedz

9

W ten sposób nie można modyfikować elementów, gdy są one powiązane z DataSource, wtedy tylko opcja dodawania pustych wierszy modyfikuje źródło danych. Utwórz pusty obiekt i dodaj go do źródła danych. Na przykład. jeśli masz listę niektórych Person podmioty zobowiązane do combobox:

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

Można zdefiniować właściwości statycznej Empty w swojej klasie:

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

i użyć go do wstawienia domyślny pusty element:

people.Insert(0, Person.Empty); 

Pozwoli to również sprawdzić, czy wybrana pozycja jest domyślna:

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

Jeśli chcesz po prostu wybrać nic początkowo, można użyć

comboBox1.SelectedIndex=-1; 
+0

Nie Chcę dodać pustego wiersza w combobox. –

Powiązane problemy