c# - 在 Devexpress 的 LookupEdit 上显示多列

标签 c# winforms devexpress

我有一个绑定(bind)到 LookUpEditDataSource。例如,我有 2 列 FirstNameLastName,我想将 DisplayMember 属性设置为这两列。 我发现我应该订阅 lookUp_CustomDisplayText() 并像这样编辑显示文本属性:

private void lookUpCompanyPerson_CustomDisplayText(object sender, CustomDisplayTextEventArgs e)
{
     LookUpEdit edit = sender as LookUpEdit;

     if (e.DisplayText != "")
     {
           e.DisplayText = e.DisplayText + " " + (string)e.Value;          
     }            
}

但我不明白什么是e.Value,我想为所选行显示另一列,而不是所选行的值成员。

这就是我将数据源绑定(bind)到 lookupedit 的方式:

 private void populateComboBoxForCompanyPerson()
 {
     lookUpCompanyPerson.Properties.ForceInitialize();
     bs = new BindingSource(myDataSet, "CompanyPerson");            
     lookUpCompanyPerson.Properties.DataSource = bs;
     lookUpCompanyPerson.Properties.DisplayMember = "CompanyName";
     lookUpCompanyPerson.Properties.ValueMember = "PersonID";
     this.lookUpCompanyPerson.Properties.Columns.Add(new LookUpColumnInfo("PersonID"));
     this.lookUpCompanyPerson.Properties.Columns["PersonID"].Visible = false;            
     this.lookUpCompanyPerson.Properties.Columns.Add(new LookUpColumnInfo("FirstName"));
     this.lookUpCompanyPerson.Properties.Columns.Add(new LookUpColumnInfo("LastName"));
     this.lookUpCompanyPerson.Properties.Columns.Add(new LookUpColumnInfo("CompanyName"));                
 }

这就是我的数据源的样子:datasource

最佳答案

我稍微更改了 Ian O'Brien 的代码,它可以正常工作:

private void lookUpCompanyPerson_CustomDisplayText(object sender, CustomDisplayTextEventArgs e)
{
      RepositoryItemLookUpEdit props;
      if (sender is LookUpEdit)
      props = (sender as LookUpEdit).Properties;
      else
      props = sender as RepositoryItemLookUpEdit;

      if (props != null && (e.Value is int))
      {
          DataRowView row = props.GetDataSourceRowByKeyValue(e.Value) as DataRowView;

          if (row != null)
          {
              e.DisplayText = String.Format("{0} {1}", row["FirstName"], row["LastName"]);

          }
      }
}

关于c# - 在 Devexpress 的 LookupEdit 上显示多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13753257/

相关文章:

javascript - 我可以使用 Javascript 而不是 C# 来使用经纪公司的 API 吗?

c# - 从 ImageList 中获取的图像看起来与直接从资源中获取的图像不同

c# - WinForms 设计器在控件更改时删除事件

c# - 有没有办法自动确定语句可能抛出的异常?

sql - 在组合框中列出搜索结果

c# - 在 C# 项目中运行 SAS 9.2 程序?

c# - 通过 ASHX 服务查询 OLAP 多维数据集

c# - 使用 backgroundworker 手动停止调试

使用 MVC 和 Angular JS 的 DevExpress 报告

c# - DevExpress 日期时间选择器