GridView - 按字母顺序排序枚举

时间:2009-09-28 13:49:29

标签: asp.net gridview sorting enums

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

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

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

1 个答案:

答案 0 :(得分:2)

尝试使用ViewModels。基本上,您创建包含模型对象的ViewModel对象(您的IWhatever)。此ViewModel随后公开了View中使用的新属性和方法。在您的情况下,您将使用您的Enum的字符串表示形式公开一个属性。优点是,您可以执行任何您想要的转换逻辑。

请参阅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";
            } 
        }
    }
}