2013-11-09 54 views
0

如何在使用CellTableBuilder的GWT datagird中添加類似以下內容?在GWT數據網格的列標題上方添加標題

enter image description here

+0

您是否看到過[showcase](http://gwt.googleusercontent.com/samples/Showcase/Showcase.html#!CwCustomDataGrid)示例?:) –

+0

是的,我已經看到它了。但這部分代碼不適用於我: buildHeader(tr,firstNameHeader,firstNameColumn,sortedColumn,isSortAscending,false,false);構建頭部(tr,lastNameHeader,lastNameColumn,sortedColumn,isSortAscending,false,false); buildHeader(tr,ageHeader,ageColumn,sortedColumn,isSortAscending,false,false); buildHeader(tr,categoryHeader,categoryColumn,sortedColumn,isSortAscending,false,false);構建頭部(tr,addressHeader,addressColumn,sortedColumn,isSortAscending,false,true); buildHeader不應該有任何參數 – Obtice

回答

0

這應該作爲提供情況的簡單解決方案。請將「YourPage」替換爲您的實際頁面,將「YourClass」替換爲您的類,將「yourColumn1」,「yourColumn2」替換爲您的實際列,將「object.getYourColumnValue」替換爲您的實際獲取值方法。另請注意,不要忘記將數據綁定到表格(使用:「ContactDatabase.get()。addDataDisplay(dataGrid1);」,如展示中所示或「dataGrid1.setRowData(0,yourData);」

public class YourPage extends Composite { 

    ... 

    // attributes 
    private Column<YourClass, String> yourColumn1; 
    private Column<YourClass, String> yourColumn2; 

    ... 

    public DataGrid<YourClass> buildGrid() { 
     dataGrid1 = new DataGrid<YourClass>(); 

     dataGrid1.setWidth("100%"); 
     dataGrid1.setHeight("100%"); 

     dataGrid1.setAutoHeaderRefreshDisabled(true); 

     // Generating columns 
     yourColumn1 = new Column<YourClass, String>(new TextCell()) { 
       @Override 
       public String getValue(YourClass object) { 
       return object.getYourColumnValue(); 
       } 
      }; 
     dataGrid1.addColumn(yourColumn1, "Column 1"); 
     dataGrid1.setColumnWidth(0, 50, Unit.PCT); 

     yourColumn2 = new Column<YourClass, String>(new TextCell()) { 
       @Override 
       public String getValue(YourClass object) { 
       return object.getYourColumnValue(); 
       } 
      }; 
     dataGrid1.addColumn(yourColumn2, "Column 2"); 
     dataGrid1.setColumnWidth(1, 50, Unit.PCT); 

     // setHeaderBuilder 
     dataGrid1.setHeaderBuilder(
       new dataGrid1HeaderBuilder(
         dataGrid1, false)); 
     ... 

     return dataGrid1; 
    } 

    // your private header builder class 
    private class dataGrid1HeaderBuilder extends AbstractHeaderOrFooterBuilder<YourClass> { 

     public tblValidatorsGroupsAnalysisResultsHeaderBuilder(
       AbstractCellTable<YourClass> table, boolean isFooter) { 
      super(table, false); 
      setSortIconStartOfLine(false); 
     } 

     @Override 
     protected boolean buildHeaderOrFooterImpl() { 
      Style style = dataGrid1.getResources().style(); 
      TableRowBuilder tr = startRow(); 
      TableCellBuilder th = tr.startTH().colSpan(1); 
      th.style().trustedProperty("border-right", "10px solid yellow").cursor(Cursor.POINTER).endStyle(); 
      th.text("Name").endTH(); 

      // Your "Header" for 2 column 
      th = tr.startTH().colSpan(2); 
      th.text("Header").endTH(); 

      // Add Column1 and Column2 headers 
      tr = startRow(); 
      buildHeader(tr, new TextHeader("Column1"), yourColumn1, null, false, false, false); 
      buildHeader(tr, new TextHeader("Column2"), yourColumn2, null, false, false, false); 
      tr.endTR(); 

      return true; 
     } 

     private void buildHeader(TableRowBuilder out, Header<?> header, Column<YourClass, ?> column, 
       Column<?, ?> sortedColumn, boolean isSortAscending, boolean isFirst, boolean isLast) { 
       Style style = dataGrid1.getResources().style(); 

       boolean isSorted = (sortedColumn == column); 
       StringBuilder classesBuilder = new StringBuilder(style.header()); 

       // Create the table cell. 
       TableCellBuilder th = out.startTH().className(classesBuilder.toString()); 

       // Render the header. 
       Context context = new Context(0, 0, header.getKey()); 
       renderSortableHeader(th, context, header, isSorted, isSortAscending); 

       // End the table cell. 
       th.endTH(); 
     } 
    } 
} 
相關問題