【问题标题】:GridView - Sorting Enum in Alphabetical OrderGridView - 按字母顺序对枚举进行排序
【发布时间】:2009-09-28 13:49:28
【问题描述】:

对绑定到 Enum 的 GridView 中的列进行排序时,它按 Enum 的顺序排序。我需要它按枚举的字符串表示进行排序。以下是我看到的选项,其中一个我都不喜欢。

  1. 按字母顺序重新排序枚举 - 不好,因为现在演示文稿依赖于业务和数据访问层来“预排序”数据。
  2. 使用 myEnum.ToString() 创建一个新对象(数据表、新列表等)并将其绑定到 GridView - 这个不错,但我不想这样做。
  3. 在我的搜索中,检查排序的列是否为 Enum,然后按列的字符串表示形式排序 - 我必须说明为什么这样不好吗?

到目前为止,我最喜欢 2 号,但就像我说的,我不喜欢它。

更多信息以防万一 - 我将 IWhatever 列表绑定到网格,2 列是需要按字符串排序的枚举。网格中还有guid-type、string、decimal列需要排序。

【问题讨论】:

    标签: asp.net gridview sorting enums


    【解决方案1】:

    尝试使用 ViewModel。基本上,您创建的 ViewModel 对象包含您的模型对象(您的 IWhatever)。这个 ViewModel 暴露了在你的视图中使用的新属性和方法。在您的情况下,您将使用枚举的字符串表示形式公开一个属性。好处是,你可以做任何你想做的转换逻辑。

    请参阅 MVVM 模式。 http://en.wikipedia.org/wiki/Model_View_ViewModel

    编辑:小例子:

    public class WhateverViewModel
    {
        public WhateverViewModel(IWhatever model)
        {
            this.model = model;
        }
        ...
        public string MyEnumView
        {
            get
            {
                return model.MyEnum.ToString(); 
            }
        }
        public string MyEnumView2
        {
            get
            {
                switch(model.MyEnum)
                {
                    case MyEnumType.A: return "Hello";
                    case MyEnumType.B: return "World";
                } 
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 2019-02-20
      • 2011-08-29
      • 1970-01-01
      • 2014-07-11
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多