编辑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"];

10-04 13:01