C# 在DevXPress的LookupEdit上显示多列
我将C# 在DevXPress的LookupEdit上显示多列,c#,winforms,devexpress,C#,Winforms,Devexpress,我将数据源绑定到查找编辑。例如,我有两列FirstName和LastName,我想将DisplayMember属性设置为这两列。 我发现我应该订阅lookUp\u CustomDisplayText()并像这样编辑显示文本属性: private void lookUpCompanyPerson_CustomDisplayText(object sender, CustomDisplayTextEventArgs e) { LookUpEdit edit = sender as Look
数据源
绑定到查找编辑
。例如,我有两列FirstName
和LastName
,我想将DisplayMember
属性设置为这两列。
我发现我应该订阅lookUp\u 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
,我想为所选行显示另一列,而不是所选行的valuemember
以下是将数据源绑定到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"));
}
这就是我的数据源的样子:来自DevExpress文档:
获取或设置编辑器的当前值e.Value
获取或设置编辑器的显示文本e.DisplayText
e.Value
设置为要在控件中显示的值
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))
{
object row = props.GetDataSourceRowByKeyValue(e.Value);
if (row != null)
{
e.Value = String.Format("{0} {1}", (DataRowView)row["FirstName"], (DataRowView)row["LastName"]);
e.Handled = true;
}
}
}
最后,以下是一些有用的页面,其中包含更多文档:
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"]);
}
}
}
我已经用过了,就这样
cmb_tip.Properties.DataSource = _dt;
cmb_tip.Properties.ValueMember = "Value";
cmb_tip.Properties.DisplayMember = "Type";
cmb_tip.Properties.PopulateColumns();
cmb_tip.Properties.Columns["Value"].Visible = false;
这是它如何与版本15.2.7中的LookupEditControl和类一起工作的:
private void lookUpEditPatients_CustomDisplayText(object sender, DevExpress.XtraEditors.Controls.CustomDisplayTextEventArgs e)
{
var edit = sender as LookUpEdit;
var props = edit.Properties;
var pat = (Patients4ComboBoxVm) props?.GetDataSourceRowByKeyValue(e.Value);
if (pat != null)
{
e.DisplayText = pat.Nachname + ", " + pat.Vorname + "; " + pat.Geburtsdatum + "; " + pat.Versicherungsnummer;
}
}
您可能应该发布完整的方法。这是一个事件处理程序,对吗?好的,谢谢-我想要进一步了解,我需要了解您的数据源是什么样的,以及它是如何绑定到LookUpEdit的。错误1:无法将带[]的索引应用于第[“FirstName]行和第[“LastName”]行上“object”类型的表达式myDataSet的类型是什么?如果它是System.Data.DataTable或System.Data.DataView,则可以使用上面已编辑的代码将对象强制转换为DataRowView。
公共部分类myDataSet:global::System.Data.DataSet