编辑1
我认为我的问题源于以下原因。填充下拉部分的功能将显示成员设置为CountyName。然后,如我建议的那样,当我尝试设置SelectedText或EditValue时,该函数仅返回它要与DropDown列表DisplayMember中的内容匹配的CountyID。我需要它来将其与ValueMember列表中的内容匹配。
使用以下代码,我可以使它工作,但是它是一个HACK,非常感谢您找到一个真正的解决方案。
lkuResidenceCounty.ItemIndex = Convert.ToInt32(row["ResidencyCountyID"].ToString());
原始帖子
我在成员表单上有一个查询框(DevExpress),我用以下代码从数据库中填充了可能的值->
lkuResidenceCounty.Properties.DataSource = ConnectBLL.BLL.Person.CountyList();
lkuResidenceCounty.Properties.PopulateColumns();
lkuResidenceCounty.Properties.DisplayMember = "CountyName";
lkuResidenceCounty.Properties.ValueMember = "CountyID";
lkuResidenceCounty.Properties.Columns[0].Visible = false;
lkuResidenceCounty.Properties.Columns[2].Visible = false;
lkuResidenceCounty.Properties.Columns[3].Visible = false;
正如预期显示的CountyName一样,这可以正常工作。
但是,当我尝试使用以下方法为此字段加载现有成员的值时,这是从DataSet中获取一行的函数的一部分->
lkuResidenceCounty.Properties.ValueMember = row["ResidencyCountyID"].ToString();
我得到一个空白框。我已逐步完成代码,并为该成员返回了正确的ID。
不幸的是,用于填充下拉选项的存储过程从维护表中拉出了“ CountyName”和“ CountyID”列。这是正确的。不幸的是,用于加载特定人员当前县的存储过程是从“人员表”中提取的,该表中有一列称为“ ResidencyCountyID”。之所以这样命名,是因为还有一个“ ResponsibilityCountyID”列。
我需要让他们俩共存的解决方案吗?
谢谢!
最佳答案
DisplayMember和ValueMember用于用可选值列表填充控件。要设置填充的LookUpEdit控件的选定值,请设置其EditValue属性:
lkuResidenceCounty.EditValue = row["ResidencyCountyID"].ToString();
响应您的编辑:根据文档:
当前选择的行确定编辑器的编辑值和显示文本的值。 BaseEdit.EditValue的值是从RepositoryItemLookUpEditBase.ValueMember字段中获取的,而要显示在编辑框中的文本是从所选行的RepositoryItemLookUpEditBase.DisplayMember字段中获取的。
当您更改BaseEdit.EditValue时,
编辑器找到并选择行
谁的
RepositoryItemLookUpEditBase.ValueMember
字段包含新值。文本
在编辑框中被更改以反映
新选择的行。
我没有使用这些控件,但是在我看来,它不应该像您所描述的那样起作用。我认为ToString()是个问题,因为EditValue接受一个对象,因此它可能期望值是int。尝试:
lkuResidenceCounty.EditValue = (int)row["ResidencyCountyID"];