如何在 c#,wpf 的 GridController 中将 ICollection 显示为一个字符串
Posted
技术标签:
【中文标题】如何在 c#,wpf 的 GridController 中将 ICollection 显示为一个字符串【英文标题】:How to show ICollection as one String in GridController in c#, wpf 【发布时间】:2020-11-24 07:40:21 【问题描述】:我有一个对象“用户”,其中包含 ICollection“电话”。我想在一列中将它们显示在 DevExpress 的 TableView-GridController 上,如下所示:
<dxg:GridColumn VisibleIndex="2"
FieldName="User.Phone"
IsSmart="True"
ReadOnly="True"
MinWidth="120"
Header="Phone" />
我试图在我的实体中创建一个新变量,将所有这些电话放在一个字符串中,如下所示:
[NotMapped]
public string AllPhones
get
string allPhones = "";
if (Phone != null)
foreach (var p in Phone)
allPhones += p.Lable + "\n";
return allPhones;
将FieldName="User.Phone"
转换为FieldName="User.AllPhones"
但它不起作用。
还有另一种解决此问题的方法,例如在 DropDownList 中显示 Phones 或显示第一个。
下面是我如何放入 GridController 的数据
var qry = SharedBll.Db.Patient.Take(100);
ContactGridControl.ItemsSource = qry.ToList();
【问题讨论】:
也许问题出在字母的情况下。绑定是“User.allPhones”,属性是“AllPhones”。 不一样 您能看到 FieldName 属性中的内容:null 还是 string.Empty? virtual ICollection尝试使用eager loading 明确包含电话:
var qry = SharedBll.Db.Patient.Include(x => x.Phone).Take(100);
ContactGridControl.ItemsSource = qry.ToList();
【讨论】:
现在 null 的问题消失了,但他们不获取电话“我有 2 个对象包含 db 中的电话” 那么qry.ToList()
中任何项目的Phone
属性是否返回非空集合?
所有这些都是 null idk 发生了什么
那么您似乎没有任何相关实体。可能你的映射不正确。
怎么错了。我把 public virtual ICollection[NotMapped]
public string AllPhones
get
string allPhones = "";
foreach (var p in Phone)
allPhones += p.Lable + "\n";
return allPhones;
【讨论】:
以上是关于如何在 c#,wpf 的 GridController 中将 ICollection 显示为一个字符串的主要内容,如果未能解决你的问题,请参考以下文章
WPF 工具包,如何在 C# 中为日期选择器控件应用日期格式?