2016-11-04 19 views
1

我想將兩個字段綁定在一起並顯示在組合框中。Combobox顯示成員和數據表中的兩個字段值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爲您的全名命名

// Oracle operator to concatenate strings is || 
string query = @"SELECT first || ' ' || last as FullName FROM person"; 
OracleDataAdapter names= new OracleDataAdapter(query, conn); 
... 
cmbCBox.DisplayMember = "FullName"; 

此方法將返回FullName作爲第一個和最後一個字段的組合。當然,如果你需要它們,沒有什麼能夠阻止你添加其他的字段。例如,您可能需要使用PersonID(或任何人員表上的主鍵)用於組合的ValueMember。通過這種方式,您可以讀取SelectedValue以恢復屬於所選FullName的Person記錄。

最後一點。我認爲使用DataTable表達式構建客戶端FullName對於許多場景來說是一個不錯的選擇,但在數據庫引擎可以更快速地完成這一場景的情況下不是這樣。我建議使用秒錶進行簡單檢查以驗證差異。

相關問題