2013-08-07 20 views
7

データソースにバインドされたコンボボックスがあります。このコンボボックスでは、インデックス0に空白フィールドを追加する必要があります。コンボボックスの最初のインデックスを空白に設定する方法

私はレコードを取得するために次のコードを書いています。

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

この後、データバインディングソースとともに以下のコードでコンボボックスとバインドします。あなたは、その後、空白行を追加するための唯一のオプションは、あなたのデータソースを変更している、データソースにバインドされている場合

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

を使用することができ、あなたのバインディングソースに空の文字列のレコードを含めますか? –

答えて

9

したがって、あなたはアイテムを変更することはできません。空のオブジェクトをいくつか作成し、データソースに追加します。例えば。あなたはコンボボックスにバインドされたいくつかのPersonエンティティのリストを持っている場合:

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

を、デフォルトの空白項目を挿入するためにそれを使用します:

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

は、あなたのクラスの静的プロパティEmptyを定義することができます

people.Insert(0, Person.Empty); 

これにより、選択した項目がデフォルトの項目であるかどうかを確認することもできます。

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

あなただけの最初に何を選択しないようにしたい場合は、

comboBox1.SelectedIndex=-1; 
+0

いいえコンボボックスに空白の行を追加します。 –

関連する問題