2014-09-05 65 views
0

我想每次從樹中選擇一個項目時查看celltable上的屬性,並刷新celltable,因此將顯示選定的數據。我有這樣的代碼:更新celltable列中的選定項目

void updateSList(int dID) { 
    m.setWidth("100%"); 
    m.setAutoHeaderRefreshDisabled(true); 
    final ListDataProvider<M> list=new ListDataProvider<M>(); 
    SimplePager.Resources pager=GWT.create(SimplePager.Resources.class); 
    simplePager=new SimplePager(TextLocation.CENTER, pager, false,0,true); 


    final List<M> me=list.getList(); 
    final ListHandler<M> sort=new ListHandler<M>(me); 
    m.addColumnSortHandler(sort); 
    Column<Metric,String> thirdColumn=new Column<M,String>(new TextCell()) { 

     @Override 
     public String getValue(M object) { 
      // TODO Auto-generated method stub 
      return object.getName(); 
     } 

    }; 
    Column<M,String> forthColumn=new Column<M,String>(new TextCell()) { 

     @Override 
     public String getValue(M object) { 
      // TODO Auto-generated method stub 
      return object.getLast(); 
     } 

    }; 

    m.addColumn(thirdColumn,"Name"); 
    thirdColumn.setSortable(true); 
    sort.setComparator(thirdColumn,new Comparator<M>() { 

     @Override 
     public int compare(M m1, M m2) { 
      // TODO Auto-generated method stub 
      return m1.getName().compareTo(m2.getName()); 
     }}); 

    m.addColumn(forthColumn,"Last"); 
    forthColumn.setSortable(true); 
    sort.setComparator(forthColumn,new Comparator<M>() { 

     @Override 
     public int compare(M m1, Mm2) { 
      // TODO Auto-generated method stub 
      return m1.getLast().compareTo(m2.getLast()); 
     }}); 


    AsyncCallback<List<M>> callback = new AsyncCallback<List<M>>() { 

     @Override 
     public void onFailure(Throwable caught) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onSuccess(final List<M> result) { 

     list.addDataDisplay(m); 

     for (final M mt : result) { 

       me.add(mt); 

      } 
     m.setVisibleRangeAndClearData(new Range(0,10), true); 
     simplePager.setDisplay(m); 
     } 

    }; 

    rpcService.getData(dID, callback); 

bevor選擇第二項:

COL1 | col2 | COL3

選擇第二項後:

COL1 | col2 | col3 | col1 | col2 | COL3

如果我從樹中選擇一個項目,我可以看到這個項目的性質,但如果我選擇下一個項目,我得到所示的列這個項目的屬性重複了兩次,但我想這通常顯示的視圖,而不是增加列。有人可以建議我在哪裏做錯了嗎?

回答

1

每次調用updateSList時,都會創建並添加新列。你只需要這個方法裏面的一行代碼:

rpcService.getData(dID, callback); 

所有其他代碼應該移到另一種方法,叫做一旦當你第一次初始化這個觀點。

+0

謝謝,你的意思是轉移到onSuccess,還是在updateSList之外創建其他方法,並將所有代碼放在那裏? – Kaly 2014-09-05 15:35:20

+0

您需要將所有內容(包括AsyncCallback)從'updateSList'中移出。移動到一個包含此CellTable的小部件或視圖。 – 2014-09-05 18:00:46