2012-04-11 5 views
5

У меня есть Enum, как это написано в Java:Дисплей Описание Enum в Jqgrid вместо Enum

public enum Status 
{ 
    ACTIVE("Active"), IN_ACTIVE("InActive"); 

    Status(String desc) 
    { 
    this.description = desc; 
    } 

    private String description; 

    public String getDescription() 
    { 
    return description; 
    } 

    public void setDescription(String desc) 
    { 
    this.description = desc; 
    } 
} 

Это перечисление является свойством в jqGrid. Но он всегда отображает перечисление, то есть ACTIVE или IN_ACTIVE. Я хочу, чтобы jqgrid показывал Active и InActive. Thanks

+0

Не могли бы вы разместить код JavaScript, определяющий jqGrid. Используете ли вы 'formatter: 'select'' (см. [Здесь] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter#formatter_type_select))? Не могли бы вы предоставить сопоставление между статусом и статусом внутри ответа сервера? Это будет полезно, если вы опубликуете на примере JSON/XML-данных, которые возвращают сервер (одной строки данных будет достаточно). – Oleg

ответ

2

Для достижения этой цели вы можете написать custom formatter. Например:

formatStatus: function (cellvalue, options, rowObject){ 
    if (cellvalue == "ACTIVE") 
     return "Active"; 
    return "InActive"; 
} 

Затем убедитесь, что использовать форматировщик от вашего colmodel:

{name: 'status', formatter: formatStatus, ...}, 

ли это помощь?

+0

Спасибо за ваш ответ. Это определенно сработает. Но я не хочу переопределять описания перечисления, вероятно, в файле сценария или jsp. Нет способа вызвать getDescription() в перечислении, чтобы получить описание. Причина в том, что, если мне нужно внести изменения, скажем, Active to Activated, я сделаю это только в одном месте. Спасибо –

+0

@Uchenna - В зависимости от того, как структурирован ваш код, вы можете записать значения в переменных на странице, а затем использовать эти переменные в своем форматировании. Например: 'return ActiveStatusValue;' –

+0

Ок. Я думаю, что все в порядке. Есть ли другие способы достижения того же. Потому что я думал, если можно использовать свойство javabean на сетке, например user.username, почему нельзя сделать то же самое с перечислением. просто мысль. спасибо –

1

Есть ToString(), реализованный в вашей Enum следующим

public toString() { 
    return description; 
} 

Это позволит убедиться, что ваш ответ JSON имеет описание вместо названия Enum.

+0

Этот подход был бы лучшим вариантом. Но проблема здесь в том, что я использую этот же перечисление в html select. Таким образом, при изменении формы, выбор будет отображать описание перечисления вместо атрибута value опции select. Таким образом, decription отправляется на сервер вместо перечисления. Надеюсь, вы это поняли. –

Смежные вопросы