2012-04-11 4 views
5

Ho un Enum come questo scritto in Java:display Enum descrizione in jqGrid al posto del 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; 
    } 
} 

Questa enum è una proprietà in un jqGrid. Ma mostra sempre l'enum i.e. ACTIVE o IN_ACTIVE. Voglio che jqgrid mostri Active e InActive. Grazie

+0

Potrebbe pubblicare il codice JavaScript che definisce jqGrid. Usi 'formatter: 'select'' (vedi [qui] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter#formatter_type_select))? Potresti fornire la mappatura tra lo stato e la descrizione dello stato all'interno della risposta del server? Sarà utile se pubblichi un esempio di dati JSON/XML che restituiscono il server (una riga di dati sarà sufficiente). – Oleg

risposta

2

Per ottenere questo è possibile scrivere un custom formatter. Per esempio:

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

quindi assicurarsi di utilizzare il formattatore dal colmodel:

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

fa questo aiuto?

+0

Grazie per la risposta. Questo funzionerà sicuramente. Ma non voglio ridefinire le descrizioni dell'enum probabilmente in un file di script o jsp. Non c'è modo di chiamare getDescription() sull'enumerazione per ottenere la descrizione. Il motivo è che, se ho bisogno di fare un cambiamento, dire Attivo ad Attivato, lo farò solo in un posto. Grazie –

+0

@Uchenna - A seconda di come è strutturato il tuo codice, puoi scrivere i valori sulle variabili nella pagina e quindi utilizzare quelle variabili all'interno del tuo formattatore. Ad esempio: 'return ActiveStatusValue;' –

+0

Ok. penso che vada bene. Ci sono altri modi per raggiungere lo stesso.Perché stavo pensando, se si può usare una proprietà javabean su una griglia come user.username, perché non si può fare lo stesso con enum. solo un pensiero. grazie –

1

Avere un toString() implementato nel vostro Enum come segue

public toString() { 
    return description; 
} 

Questo farà in modo che la vostra risposta JSON ha descrizione al posto del nome Enum.

+0

Questo approccio sarebbe stata l'opzione migliore. Ma il problema qui è che io uso questa stessa enumerazione in html select. Quindi, in caso di modifica di un modulo, la selezione renderà la descrizione dell'enum al posto dell'attributo value dell'opzione select. Quindi la decription viene inviata al server invece dell'enum. Spero tu capisca questo. –