如何在 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 电话为空,但在数据库中有一些列 所以问题不在于您显示的代码。查找“ICollection Phone”未从数据库中填充的原因。 【参考方案1】:

尝试使用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 Phone get;放; 在用户对象中我是否忘记了任何步骤??【参考方案2】:
[NotMapped]
public string AllPhones

   get
   
      string allPhones = "";
      foreach (var p in Phone)
      
         allPhones += p.Lable + "\n";
                  
      return allPhones;
   

【讨论】:

以上是关于如何在 c#,wpf 的 GridController 中将 ICollection 显示为一个字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用一种方法在网格 C# WPF 中添加行 [重复]

WPF C#如何使用鼠标使控件可拖动

如何在 WPF、C# 中按 CTRL+V 粘贴

WPF 工具包,如何在 C# 中为日期选择器控件应用日期格式?

如何在 c#,wpf 的 GridController 中将 ICollection 显示为一个字符串

wpf中的treeview如何增加2级节点?在C#中如何添加?