2012-04-11 37 views
5

Tôi có một Enum như thế này được viết bằng Java:hiển thị mô tả Enum trong jqGrid thay vì 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; 
    } 
} 

enum Đây là một tài sản trong một jqGrid. Nhưng nó luôn hiển thị enum tức là ACTIVE hoặc IN_ACTIVE. Tôi muốn jqgrid hiển thị Active và InActive. Cảm ơn

+0

Bạn có thể đăng mã JavaScript xác định jqGrid không. Bạn có sử dụng 'formatter: 'select'' (xem [ở đây] (http://www.trirand.com/jqgridwiki/doku.php?id=wiki:predefined_formatter#formatter_type_select))? Bạn có thể cung cấp ánh xạ giữa trạng thái và mô tả trạng thái bên trong phản hồi của máy chủ không? Sẽ rất hữu ích nếu bạn đăng tải ví dụ về dữ liệu JSON/XML trả về máy chủ (một hàng dữ liệu sẽ là đủ). – Oleg

Trả lời

2

Bạn có thể viết custom formatter để đạt được điều này. Ví dụ:

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

Sau đó, hãy chắc chắn để sử dụng định dạng từ colmodel của bạn:

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

Điều đó giúp đỡ?

+0

Cảm ơn bạn đã trả lời. Điều này chắc chắn sẽ hoạt động. Nhưng tôi không muốn định nghĩa lại các mô tả của enum có thể trong một tập tin kịch bản hoặc jsp. Không có cách nào gọi getDescription() trên enum để có được mô tả. Lý do là, nếu tôi cần phải thực hiện một thay đổi nói Active để kích hoạt, tôi sẽ chỉ làm cho nó ở một nơi. Cảm ơn –

+0

@Uchenna - Tùy thuộc vào cách mã của bạn được cấu trúc, bạn có thể viết ra các giá trị cho các biến trên trang và sau đó sử dụng các biến đó trong trình định dạng của bạn. Ví dụ: 'return ActiveStatusValue;' –

+0

Ok. tôi nghĩ thế là ổn. Có cách nào khác để đạt được cùng. Bởi vì tôi đã suy nghĩ, nếu người ta có thể sử dụng một tài sản javabean trên một mạng lưới như user.username, tại sao không thể làm như vậy với enum. chỉ là một ý nghĩ. thanks –

1

Có một toString() thực hiện trong Liệt kê của bạn như sau

public toString() { 
    return description; 
} 

Điều này sẽ đảm bảo rằng phản ứng json của bạn có mô tả thay cho tên Enum.

+0

Cách tiếp cận này sẽ là lựa chọn tốt nhất. Nhưng vấn đề ở đây là tôi sử dụng cùng một enum trong html chọn. Vì vậy, khi sửa đổi một biểu mẫu, lựa chọn sẽ hiển thị mô tả của enum thay cho thuộc tính value của tùy chọn select. Vì vậy, các decription được gửi đến máy chủ thay vì enum. Hy vọng bạn hiểu điều này. –

Các vấn đề liên quan