2012-01-26 27 views

Trả lời

15

Bạn phải cung cấp đối tượng RowStyles trả về tên lớp css cho mỗi hàng. Vì vậy, để thiết lập một màu cụ thể cho một hàng, bạn phải xác định một lớp css với màu đó, và sau đó gây ra đối tượng RowStyles của bạn để trả về lớp đó cho các hàng có liên quan.

Tôi nghĩ rằng bạn đặt cài đặt này với cellTable.setRowStyles hoặc nội dung tương tự.

cellTable.setRowStyles(new RowStyles<T>() { 
    @Override 
    public String getStyleNames(T rowObject, int rowIndex) { 
     if (rowIndex == 3) { 
      return "bluetext"; 
     } else { 
      return "normaltext"; 
     } 
    }); 
2

Nếu bạn cần cập nhật màu hàng dựa trên một giá trị thay đổi theo một trong các tế bào, bạn có thể thêm đoạn mã sau vào fieldUpdater của tế bào này:

@Override 
public void update(int index, Object object, String value) { 
    if (someConditionIsMet) { 
     myTable.getRowElement(index).addClassName("redBackground"); 
    } 
} 

Trong file CSS của bạn add phong cách này:

.redBackground { 
    background-color: red !important; 
} 
+0

tệp CSS bạn muốn nói là your_module.css?! bởi vì nó không hiệu quả với tôi. cảm ơn. – amrfaissal

+0

Bất kể tệp CSS nào bạn sử dụng cho ứng dụng của mình. Nếu bạn có nhiều, họ có thể xung đột với nhau. Bạn có thể sử dụng các công cụ trình duyệt để xem kiểu nào thực sự được áp dụng cho hàng của bảng và kiểu nào bị bỏ qua. –

+1

Tôi thấy rằng lớp css được áp dụng cho phần tử nhưng phong cách không được hiển thị! – amrfaissal

1

Để trả lời bình luận cuối cùng rằng phong cách là trong các yếu tố liên tiếp nhưng không được hiển thị: Sử dụng setRowStyles (RowStyles mới() ... Cách duy nhất tôi có phong cách xuất hiện là sử dụng vũ lực. Tôi phải xóa hàng khỏi cửa hàng Danh sách của tôi, thêm nó trở lại cùng một chỉ mục và sau đó làm mới RowModel. Đối với những gì nó có giá trị.

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