2016-11-04 8 views
1

2つのフィールドを結合してコンボボックスに表示したいですか?Combobox displaymemberとdatatableの2つのフィールド値C#

私の名前と姓はデータベースにあり、コンボボックスのフルネームを表示するにはどうすればいいですか?

私はこのコードを試してみましたが、私はいくつかのエラーを得た:

OracleDataAdapter names= new OracleDataAdapter("SELECT first, last FROM person", conn); 
DataTable dt = new DataTable(); 
names.Fill(dt); 
dt.Columns.Add("FullName", typeof(string), "first' : ' last"); //<-- error's here 
cmbCBox.DisplayMember = "FullName"; 
cmbBox.DataSource = dt; 
conn.Close(); 

エラーは次のとおりです。後

オペランドがありません ':' 演算子。あなたはこのようなフォーマット作成したい場合は

+1

私はあなたのクエリでその名前を作成します。 – LarsTech

+0

また、 'SELECT first、last'については何が良いですか? cboでメンバーを選択したら、 'id'を渡す必要があります。 '最初に選択|| ':' ||最後にFullNameとして、pesonId ... '。 。 。 'cmbCBox.ValueMember =" pesonId "' 'dt.Columns.Add'の必要はありません –

答えて

1

Donald : Duck

を次に式は次のとおりです。

dt.Columns.Add("full", typeof(string), "first + ' : ' + last"); 

例コード:

System.Data.DataTable dt = new System.Data.DataTable(); 

dt.Columns.Add("first", typeof(string)); 
dt.Columns.Add("last", typeof(string)); 
dt.Columns.Add("full", typeof(string), "first + ' : ' + last"); 

System.Data.DataRow row = dt.NewRow(); 
row["first"] = "Donald"; 
row["last"] = "Duck"; 
dt.Rows.Add(row); 
1

は単に尋ねますデータベースエンジンをcreにあなたのFullNameを食べました

この方法では、最初と最後のフィールドの合成としてFullNameだけが返されます。もちろん、必要に応じて他のフィールドを追加することはできません。たとえば、コンボのValueMemberに使用するPersonID(またはpersonテーブルのプライマリキー)が必要な場合があります。このようにして、SelectedValueを読み取って、選択したFullNameに属するPersonレコードを回復することができます。

最後のメモ。私は、DataTable式を使ってクライアント側のFullNameを構築することは、多くのシナリオでは良い選択だと思いますが、このコンテキストではデータベースエンジンがはるかに高速に実行できます。違いを確認するためにストップウォッチを使って簡単なチェックをすることをお勧めします。

関連する問題