2

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

我想要一种使用控件的 DataBindings 属性从 DataTable 获取值的方法,而不是直接引用它。也就是说,我想通过MyLookupEdit.DataBindings[0].SomethingSomething而不是通过引用它MyDataTable[MyLookupEditColumn]。这样我就可以在一个事件处理程序中得到它(在那里我被赋予了调用 LookupEdit)并将该事件处理程序重新用于不同的 LookupEdits(它绑定到我的 DataTable 中的不同列)。

我想做这样的事情:

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

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

4

1 回答 1

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];
于 2013-09-11T19:49:54.890 回答