【问题标题】:Datagridview formatting databound itemsDatagridview 格式化数据绑定项
【发布时间】:2014-05-15 06:13:31
【问题描述】:

您好,一旦属性绑定在 datagridview 中,是否可以对其进行格式化但保留其原始值?

例如我有这个项目:

IList<User> a = new List<User>()
{
    new User { ID = 0, LinkCode = "ABC DEF G" },
    new User { ID = 1  LinkCode = "HIJ KLM N" },
    new User { ID = 2  LinkCode = "ABC DEF G" },
};

然后我有一个数据网格视图,其中有两列代表用户集合上名为“ID”和“LinkCode”的两个属性。

是否可以绑定集合,但不是显示完整的“LinkCode”,而是只显示它的子字符串,但保留原始值以防万一我想将它保存回数据库,这就像“ ValueMember”和“DisplayMember”,其中“ABC DEF G”是值成员,但只有“G”是显示成员。

【问题讨论】:

  • 创建一个只读属性,返回“LinkCode”的子字符串?
  • 谢谢@Abhinav,就像我告诉 Robban 这个用户对象是实体框架生成的 POCO 一样
  • 试试 dataGridView.DataSource=YourListName。

标签: c# datagridview


【解决方案1】:

User 对象添加一个属性,该属性仅返回 LinkCode 的子字符串

类似:

public string FormattedLinkCode { get { return LinkCode.Last().ToString(); } }

编辑: 要将此功能添加到由 Entity Framework 创建的 POCO 对象,您可以将此属性放在部分类中。只需将部分类添加到 POCO 所在的同一个命名空间。

public partial class User { 
    public string FormattedLinkCode 
     { 
        get { 
                if(string.IsNullOrEmpty(LinkCode))
                     return string.Empty;
                return LinkCode.Last().ToString(); 
            } 
     }
}

【讨论】:

  • 谢谢@Robban,但是这个用户对象是实体框架生成的POCO。
  • 这个还是可以的,实体框架生成的POCO是部分的。我会澄清我的例子。
  • 这是一个可接受的解决方案@Robban,我的意思是在一个中等规模的项目中,这是标准吗?我有点认为这是我最后的手段。
  • 我会说这是实现您想要的最佳方式。这很简单,也可以理解。我看不出这种方法有什么缺点,如果适用的话,这就是我总是尝试解决问题的方法。 FormattedLinkCode 是 User 对象的自然组成部分,它不依赖于其他任何东西。它属于那里,以后可以在您想使用 FormattedLinkCode 而不是完整的 LinkCode 的任何地方使用。
  • 没问题。请记住也向属性添加一些空检查。 if(string.IsNullOrEmpty(LinkCode)) return "";什么的。
猜你喜欢
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
相关资源
最近更新 更多