jqGrid отображает перечисление в виде строки - PullRequest
1 голос
/ 07 июля 2011

Я пытаюсь использовать 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 Ответ

1 голос
/ 07 сентября 2015

Я вижу, что это старый вопрос, но для любой потерянной души это придет сюда.

Первый шаг - установить 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 - универсальный параметр, являющийся типом перечисления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...