2011-04-07 58 views
1

將不勝感激的任何想法。表和分頁

要求

(A)含表

A.1 text columns 
A.2 one column for HTML content 
A.3 one column to house a radio button group 

(B)通過所述記錄的能力,以頁,例如通過使用SimplePager。

替代迄今認爲

  1. FlexTable - 可以提供所有的(A),但不(B)
  2. CellTable - 可以提供A.1和(B),但不甲.2也沒有A.3

任何人都可以提供一個替代品提供所有的A和B嗎?我也看過Smart GWT,但沒有看到我可以使用的任何東西。但是我對GWT或Smart GWT都不是很有經驗。

謝謝。


[編輯1]現在創建如下三個按鈕單選按鈕組(「InterimReport」是我的數據類型):

Column<InterimReport, SafeHtml> radioButtonColumn = new Column<InterimReport, SafeHtml>(new SafeHtmlCell()) { 

    @Override 
    public SafeHtml getValue(InterimReport object) { 
    String s = "<input type=\"radio\" name=\"selection\"" + object.get("dbIndex") + " value=\"match\" /> match<br />"+ "<input type=\"radio\" name=\"selection\"" + object.get("dbIndex")+ " value=\"nomatch\" /> no match<br />" + "<input type=\"radio\" name=\"selection\""+ object.get("dbIndex") + " value=\"urlnotfound\" /> URL not found</>"; 

    return SafeHtmlUtils.fromTrustedString(s); 
    } 
}; 

[編輯2]但是,如何捕獲用戶的選擇一個單選按鈕?這段代碼似乎並不做任何事情:

radioButtonColumn.setFieldUpdater(new FieldUpdater<InterimReport, SafeHtml>() { 
    public void update(int index, InterimReport object, SafeHtml value) { 
     System.out.println("Reached here"); 
     if (value.equals("match")) { 
      setMatch(object.get("dbIndex"), index); 
     } else if (value.equals("nomatch")) { 
      setNoMatch(object.get("dbIndex"), index); 
     } else if (value.equals("urlnotfound")) { 
      setUrlNotFound(object.get("dbIndex"), index); 
     } 
    } 
}); 
+0

爲什麼這麼說CellTable不能提供A.2和A.3? – 2011-04-07 16:32:56

回答

0

一個CellTable可以保存HTML內容(SafeHtmlCell)等也可以按住一個單選按鈕組。只需使用<input type="radio" name="whatever"/>作爲HTML。你不能在CellTable中使用Widgets - 其他所有東西都能正常工作。

Column<YourType, SafeHtml> radioColumn = new Column<YourType, SafeHtml>(new SafeHtmlCell()) 
{ 
    @Override 
    public SafeHtml getValue(YourType object) 
    { 
     return generateInputHtmlFromObject(object); 
    } 
} 

cellTable.addColumn(radioColumn); 

(對不起,未測試的代碼。也許我misremember方法簽名,或某事)

+0

非常感謝您的回覆,萊利。我已成功創建單選按鈕組(請參閱上面的編輯1),但無法讓用戶選擇單選按鈕進行註冊 - 編輯器2中的println未到達。我正確使用setFieldUpdater()嗎? – cvh 2011-04-08 11:38:37

+0

是的,這是setFieldUpdater的正確方法,但不幸的是,SafeHtmlCell實現並未實際調用其字段更新程序!令人沮喪,我知道。你可以在''標籤上設置一個id,並使用'DOM'包來獲取值(只能被動地(:()或者你可以繼承SafeHtmlCell以使它在你點擊或者選擇輸入時調用它的valueupdater看看「com.google.gwt.cell.client.CheckboxCell」的來源,看看谷歌是如何做它的複選框的。祝你好運!一旦你通過了麻木的學習曲線,細胞的東西是相當的不錯。 – 2011-04-08 12:32:22

+0

謝謝,我會放棄它! – cvh 2011-04-09 08:08:22