DevExpress LookupEdit设置EditValue不起作用

时间:2017-08-29 15:19:00

标签: c# devexpress

我正在尝试让LookUpEdit在显示表单时显示初始值。我绑定了一个国家/地区列表作为数据源,然后在表单加载时设置EditValue,这应该将国家/地区显示为LookUpEdit中的选定项目。不幸的是,它只显示一个空值。 LookUpEdit似乎无法正常工作,并允许我滚动浏览国家/地区列表并选择一个项目,并在我提交表单时传回值。

国家课程:

public class Country
{
    public Country();
    public int CountryId {get; set;}
    public string CountryName {get; set;}
    public string IsoCode {get; set; }
}

包含LookUpEdit的表单背后的代码:

this.country.Properties.DataSource = this.Countries;
this.country.Properties.DisplayMember = "CountryName";
this.country.Properties.ValueMember = "CountryId";

this.country.EditValue = initialCountry;
this.country.DataBindings.Add("EditValue", viewModel.Address, "AddressCountry", false, DataSourceUpdateMode.OnPropertyChanged);

在此示例中,this.Countries是已填充的List<Country>initialCountry设置为Country的实例,viewModel.Address包含属性Country AddressCountry

我已尝试直接设置EditValue并将数据绑定设置为自己的EditValue。无论我尝试什么,当表单加载时,LookUpEdit始终为空白,我需要将其设置为initialCountry。我确信这是非常简单的事情,但我没有看到它,所以任何帮助都非常感激。

3 个答案:

答案 0 :(得分:2)

您不应将this.country.EditValue设置为Country的实例,而应设置为CountryId,因为这是您的ValueMember

this.country.EditValue = initialCountry.CountryId;

编辑:如果您想获取所选对象,则应使用GetDataSourceRowByKeyValue

var selectedCountry = this.country.GetDataSourceRowByKeyValue(this.country.EditValue) as Country;

答案 1 :(得分:2)

除了Marko的回答:

查找中有data binding to the entire business objects的特殊模式:

this.country.Properties.DataSource = this.Countries;
this.country.Properties.DisplayMember = "CountryName";
this.country.Properties.KeyMember = "CountryId";
this.country.EditValue = initialCountry;

此模式允许查找机制通过关键字段查找编辑器的值(Country业务对象)与查找数据源中的另一个Country业务对象之间的匹配项(&#34; CountryId&#34;)被分配到RepositoryItemLookUpEditBase.KeyMember属性。

以下是此模式的其他一些好处:

  • 您可以使用多个关键字段(&#34;复合/复合键&#34;功能);

    //使用&#39;;&#39;分隔的字段名称性格
    this.city.Properties.KeyMember =&#34; CountryId; RegionId; CityName&#34;;

  • 您可以匹配从单独的数据上下文加载的业务对象,并使用延迟加载方法的所有优点:

    // CountryId值足以匹配。
    //加载时可以跳过所有其他字段(例如CountryName) this.country.EditValue = new Country(){CountryId = 5}

答案 2 :(得分:0)

编辑值需要与数据库中的数据类型完全相同的数据, 因此使用适当数据类型的转换函数分配数据