2011-07-07 24 views
1

単純なデータグリッドを表示するために、ASP.Net MVCバージョンのjqGridを使用しようとしています。私のグリッドの列の1つはEnumで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がレンダリングされるとき、ApprovalStatus列は文字列ではなくintとして表示されます。私は列のDataFormatStringを使いこなそうとしましたが、無駄にしました。

答えて

1

これは古い質問ですが、失われた魂のために、ここに来るでしょう。

最初のステップでは、列挙型の表示に使用する列にSetFormatter(Formatters.Select)を設定します。

しかし、enumマッピングのリストを提供する必要があります。 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が列挙型であること、一般的なパラメータです。

関連する問題