如何从数据绑定中获取数据源的值?

时间:2013-09-11 19:16:23

标签: c# winforms data-binding

我有一个DevExpress LookupEdit(基本上是一个下拉列表)。在某些情况下,LookupEdit绑定的DataTable可以从数据库加载一个值,该值不会出现在LookupEdit可以显示的值列表中。在这种情况下,LookupEdit的EditValue属性在从其数据绑定中读取时设置为DBNull,但保留DataTable中的值。

我想通过直接引用它来使用控件的DataBindings属性,从DataTable 获取值。也就是说,我想通过MyLookupEdit.DataBindings[0].SomethingSomething而不是MyDataTable[MyLookupEditColumn]来引用它。这样我就可以在一个事件处理程序(我给它调用LookupEdit)中获取它,并为不同的LookupEdit重新使用该事件处理程序(它绑定到我的DataTable中的不同列)。

我想做这样的事情:

Binding bind = (sender as LookupEdit).DataBindings[0];
DataTable table = bind.DataSource as DataTable;
object data = table[binding.DataMemberInfo.BindingMember];

...但是BindingMember是一个字符串,我需要一个DataColumn。

1 个答案:

答案 0 :(得分:1)

我在正确的轨道上,还有几个步骤。这就是我需要的:

Binding bind = (sender as Control).DataBindings[0];
DataTable table = (bind.DataSource as DataSet).Tables[0];
string table_column_name = bind.BindingMemberInfo.BindingMember;
string column_name = table_column_name.Split(new char[] { '.' })[1];
DataColumn column = table.Columns[table.Columns.IndexOf(column_name)];
object data = table.Rows[0][column];