2011-07-07 105 views
1

我正在嘗試使用ASP.Net MVC版本的jqGrid來顯示一個簡單的數據網格。我的網格中的一列是一個枚舉,並且jqGrid顯示爲int,而我想將其顯示爲一個字符串。我如何讓jqGrid將其顯示爲一個字符串?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在呈示審批狀態欄顯示爲一個int而不是字符串。我試圖在列上使用DataFormatString搞亂,但無濟於事。

回答

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是通用的參數是枚舉類型。