2012-04-11 8 views
5

Mam Enum tak napisany w Javie:Wyświetlacz Enum Opis w jqGrid zamiast wyliczenia

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; 
    } 
} 

Ten enum jest nieruchomość w jqGrid. Ale zawsze wyświetla wyliczenie, tzn. ACTIVE lub IN_ACTIVE. Chcę, aby jqgrid pokazywał Active i InActive. Dzięki

+0

Czy możesz opublikować kod JavaScript definiujący jqGrid. Czy używasz 'formatter: 'select'' (patrz [tutaj] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter#formatter_type_select))? Czy możesz podać odwzorowanie statusu i opisu statusu w odpowiedzi serwera? Przydatne będzie, jeśli zamieścisz na przykład dane JSON/XML, które zwrócą serwer (wystarczy jeden wiersz danych). – Oleg

Odpowiedz

2

Możesz napisać custom formatter, aby to osiągnąć. Na przykład:

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

Następnie upewnij się, aby skorzystać z formatowania z colmodel:

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

Czy to pomoże?

+0

Dziękuję za odpowiedź. To na pewno zadziała. Ale nie chcę redefiniować opisów enum prawdopodobnie w pliku skryptu lub jsp. Czy nie ma sposobu wywoływania getDescription() w enum, aby uzyskać opis. Powodem jest to, że jeśli muszę wprowadzić zmianę, powiedzmy Aktywny na Aktywny, zrobię to tylko w jednym miejscu. Dzięki –

+0

@Uchenna - w zależności od tego, jak zbudowany jest twój kod, możesz zapisać wartości na zmiennych na stronie, a następnie użyć tych zmiennych w swoim formatyzatorze. Na przykład: 'return ActiveStatusValue;' –

+0

Ok. myślę, że to w porządku. Czy istnieją inne sposoby na osiągnięcie tego samego. Ponieważ myślałem, jeśli można użyć właściwości javabean na siatce, np. User.username, dlaczego nie można zrobić tego samego z wyliczaniem. tylko myśl. dzięki –

1

Mają toString() realizowany w Enum następująco

public toString() { 
    return description; 
} 

Pozwoli to upewnić się, że odpowiedź JSON ma opisu zamiast nazwy Enum.

+0

Takie podejście byłoby najlepszą opcją. Ale problem polega na tym, że używam tego samego wyliczenia w html select. Tak więc w przypadku modyfikacji formularza, opcja wyrenderuje opis wyliczenia zamiast atrybutu wartości opcji select. Tak więc opis jest przesyłany na serwer zamiast wyliczenia. Mam nadzieję, że to rozumiesz. –