2010-09-22 111 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,则为组合框。
只要记住将你的班级的标题和价值定义为属性,否则它将无法工作。