jqGrid将enum显示为字符串

时间:2011-07-07 00:54:20

标签: asp.net-mvc-3 jqgrid

我正在尝试使用ASP.Net MVC版本的jqGrid来显示简单的数据网格。我网格中的一列是Enum,jqGrid显示为int,而我想将其显示为字符串。如何让jqGrid将其显示为字符串?

new JQGridColumn { DataField = "ApprovalStatus", 
     DataType = typeof(ApplicationStatusTypes),
     Editable = false,
     Width = 200},

public enum ApplicationStatusTypes
{
    Unassessed = 0,
    AssessmentInProgress = 1,
    RequirementsNotMet = 2,
    RequirementsPartiallyMet = 3,
    RequirementsMet = 4,
    Approved = 5
}

当呈现jqGrid时,ApprovalStatus列显示为int而不是字符串。我已经尝试在列上乱搞DataFormatString,但无济于事。

1 个答案:

答案 0 :(得分:1)

我看到这是一个古老的问题,但对于任何失去的灵魂,这将来到这里。

第一步是为用于显示枚举的列设置SetFormatter(Formatters.Select)

但是你需要提供一个枚举映射列表。 jqGrid希望它们以 enumValue1:enumName1; enumValue2:enumName2 的格式直接提供给.SetEditOptions(new EditOptions { Value = ... }) - 不幸的是,API命名约定在此处被破坏。

字符串生成本身非常简单,可以推广到以下表达式:

string.Join(";", Enum.GetNames(typeof(T)).Zip(Enum.GetValues(typeof(T)).Cast<int>(), (text, val) => val.ToString() + ":" + text));

,其中T是通用参数,是枚举类型。