2013-11-20 45 views
0

我有一個由數據適配器填充的組合框。我根本沒有任何問題,但是我想弄清楚如何抓取顯示成員而不是選定的值。從組合框中抓取顯示組件並用於填充文本框

cotcommand = new SqlCommand(); 
       cotguestadapter = new SqlDataAdapter(); 
       cotcommand.Connection = cottageconnect; 
       cotcommand.CommandText = "SELECT Phone, (\"Last Name\" + ', ' + \"First Name\") AS NAME FROM Guests ORDER BY NAME"; 
       cotguestadapter.SelectCommand = cotcommand; 
       cotguestadapter.Fill(cotguestdataset); 
       cboGuests.DataSource = cotguestdataset.Tables[0]; 
       cboGuests.DisplayMember = "NAME"; 
       cboGuests.ValueMember = "Phone"; 

我可以很容易地得到valuemember,做我想做的事情,但我真的想拉將DisplayMember(這是級聯的名稱),並顯示在一個文本框。我需要確認框的顯示名稱,用戶可以選擇是,然後我的代碼會將註冊插入到當時的數據庫中。

我可以從組合框中獲取displaymember並在文本框中使用它嗎?

+0

沒有像把SQL的東西作爲字符串後面的代碼UI。提醒我或「VB6好日子」。 –

+0

是的......我有一位老師;)我的問題有幫助嗎? – Marty

+0

是的,不要嘗試從用戶界面「讀取數據」。 UI不是數據,即使在winforms中也不行。只需從任何「IEnumerable」中獲取數據項即可。 –

回答

0

DisplayMember在這種情況下其實列名,所以你可以只提取基礎數據綁定項目和獲得的價值:

var someDisplay = ((DataRowView) someItem).Row[comboBox1.DisplayMember]; 
//someDisplay is still an object, just cast or convert to what you want. 
+0

在DataRowView之後,你有一個「someItem」是否該項目意味着這是從這個表中拉出?我試圖把名字放在NAME裏,因爲那是列的名字,而且似乎沒有工作。 我試過了: string someDisplay =((DataRowView)NAME).Row [cboGuests.DisplayMember]; – Marty

+0

@ user2966944'someItem'這裏是'comboBox1'的一些項目,例如'comboBox1.Items [0]',你也可以通過你的'comboBox1.Items'做一些循環,並將每個項目作爲相同的角色傳遞給'someItem'在我的代碼中,並獲取DisplayMember作爲你想要的。 –

+0

aaahhh ...我現在看到了!謝謝你,先生。這做了我想要的大部分工作。現在我只需要弄清楚如何獲得正確的行號。我可以在組合框中選擇第五個人,但它仍然會顯示第一行人員,而不是數據庫第五行中的人員。如果這是有道理的。例如:如果我選擇了第五個名稱,那麼我希望它是comboBox1.Items [4] – Marty