我正在尝试使用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,但无济于事。
答案 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
是通用参数,是枚举类型。