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

本文关键字:数据源 获取 数据绑定 | 更新日期: 2023-09-27 18:30:55

我有一个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];

。但是绑定成员是一个字符串,我需要一个数据列。

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

我走

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

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];