2010-09-22 59 views
0

這可能已經被問到,但我似乎無法找到這個具體的問題,所以在這裏...如何將數據字段值綁定到組合框索引?

我有一個C#中的窗體,其中每個文本框綁定到一行中的字段。行可以通過底部的一些按鈕循環,但是一次顯示的所有數據都是從一行開始的。當用戶單擊「更新」時,所做的任何更改都會更新回數據庫

一個字段(類)是一個枚舉(0,1,2),其中只有值存儲在數據庫中,但不會'對用戶來說意義重大。我被要求讓這個對用戶更加明顯,所以我決定使用下拉式組合框。由於數據庫沒有任何引用的意思,我決定使用DataBindings而不是DataSource,所以我可以只使用索引作爲數據綁定,但似乎SelectedItem或Value不是這樣做的方式。

這是我的目標:
1存在於數據庫中,所以在組合框中選擇「B」。
用戶選擇「C」並更新數據庫,2現在存儲在數據庫中。

有什麼想法,我需要得到這個工作?

回答

0

我假設你在表單上有一個BindingSource來綁定數據。您可以按如下的ComboBoxSelectedIndex屬性綁定:

comboBox.DataBindings.Add("SelectedIndex", bindingSource, "PropertyInTheDataSource"); 
+0

但是我......他......我......呃 - 你說得對:主席先生:) 我應該比使用設計編輯器更好地瞭解我的選項 – Fry 2010-09-23 00:05:27

0

其實我能夠將其綁定到一個自定義對象。對於這樣一個簡單的任務來說,這工作太多了。但是您可以完全控制顯示/值對。無論如何,我想我會分享並決定:
2個字段創建一個新的類(比如定製項目):

Public int Value{get;set;} 
public string Title {get;set;} 

然後形成:

var item1 = new CustomItem() { Title = "A", Value = 10 }; 
     var item2 = new CustomItem() { Title = "B", Value = 20 }; 
     var item3 = new CustomItem() { Title = "C", Value = 30 }; 
     var lst = new List<CustomItem>(); 
     lst.Add(item1); 
     lst.Add(item2); 
     lst.Add(item3); 
     comboBox1.DataSource = lst; 
     comboBox1.DisplayMember = "Title"; 
     comboBox1.ValueMember = "Value"; 

現在你有一個數據綁定如果您的表單中沒有BndingSource,則爲組合框。
只要記住將你的班級的標題和價值定義爲屬性,否則它將無法工作。