2011-01-23 35 views
6

Tôi có một HTMLPanel với một bên là <table>. Tôi muốn hiển thị/ẩn một số <tr> từ mã java.GWT - hiển thị/ẩn <tr> trong HTMLPanel

Tôi đã cố gắng đặt <tr> bên trong HTMLPanel khác và ẩn Bảng điều khiển. Một cái gì đó như thế này:

... 
<tr> 
    ... 
</tr> 
<g:HTMLPanel ui:field="name"> 
    <tr> 
    ... 
    </tr> 
</g:HTMLPanel> 
<tr> 
    ... 
</tr> 

mã:

name.setVisible(false); 

và nó hoạt động, nhưng nó gây ra một hành vi kỳ lạ trong cách trình bày.

Tôi làm cách nào để thực hiện điều này ???

Thx rất nhiều !!!

Trả lời

9

Sử dụng @UiField TreeRowElement rowName với HTML là ...<tr ui:field="rowName">...</tr>.... Sau đó sử dụng TreeRowElement để hiển thị/ẩn hàng đó.

+1

Xin chào, tôi đoán bạn có nghĩa là TableRowElement, trong trường hợp này, cách tôi hiển thị/ẩn phần tử? nó không có phương thức setVisible ... thx rất nhiều – david

+2

Hãy thử 'rowName.getStyle(). setDisplay (Display.NONE);' –

+0

Hi Tassos, bạn nói đúng !, Tôi có thể thề là tôi đã tìm phương thức getStyle. ... anyway thx rất nhiều !!!! – david

5

Mở rộng trên @Tassos câu trả lời:

Java

@UiField TableRowElement expanded; 

boolean exp=false; 

    expandme.addClickHandler(new ClickHandler() { 
     public void onClick(ClickEvent clickevent) { 
      if(exp){ 
       expanded.getStyle().setDisplay(Display.NONE); 
      } else { 
       expanded.getStyle().clearDisplay(); //took a little while to find. 
      } 
      exp = !exp; 
     } 
    }); 

HTML:

<tr ui:field="expanded"> 

đâu expandme là bất kỳ yếu tố mà bạn có thể đính kèm một handler nhấp chuột để, (ví dụ: Neo, Nút , vv)

+0

clearDisplay() hữu ích, nếu không hàng bảng không nhớ chiều rộng ban đầu của nó sau khi ẩn/hiển thị (chỉ cần đặt lại thành BLOCK hoặc INLINE một lần nữa không hoạt động). Cảm ơn! – joscarsson

+0

@sjakubowski Cảm ơn 'clearDisplay()'! – eugene82