2010-12-16 5 views

Antwort

24

EDIT: Ab GWT 2.2 table.setWidth und table.setColumnWidth sind

unterstützt
table.setWidth("100%", true); 
table.setColumnWidth(nameColumn, 35.0, Unit.PCT); 
table.setColumnWidth(addressColumn, 65.0, Unit.PCT); 

Ich konnte den CellTable mit einem Verfahren erweitern, daß die Breiten programmatisch einstellt. Es ist ein bisschen ein Hack, da alle echten Methoden, die das tun sollten, für CellTable privat sind und es scheint, als ob GWT diese Methode direkt bereitstellen sollte, aber es scheint zu funktionieren.

public void setColumnWidths(List<Integer> widths) 
{ 
    TableElement tel = TableElement.as(getElement()); 
    NodeList<Element> colgroups = tel.getElementsByTagName("colgroup"); 
    if (colgroups.getLength() == 1) 
    { 
     TableColElement cge = TableColElement.as(colgroups.getItem(0)); 
     NodeList<Element> cols = cge.getElementsByTagName("col"); 
     for (int j = 0; j < widths.size(); j++) 
     { 
      TableColElement column = null; 
      if (cols.getLength() > j) 
      { 
       column = TableColElement.as(cols.getItem(j)); 
      } 
      else 
      { 
       column = cge.appendChild(Document.get().createColElement()); 
      } 

      column.setWidth(widths.get(j)+"px"); 

     } 

    } 
} 
4

Sie könnten einen Stilnamen für die spezifische Spalte verwenden, indem Sie die Methode addColumnStyleName(int index, java.lang.String styleName) verwenden.

Javadoc for CellTable

+0

Ich weiß, über diese Methode von nicht wissen, wie es zu benutzen. Wo sollte diese Stilklasse deklariert werden? – Opal

+0

Im Stylesheet Ihrer Anwendung. Sehen Sie sich [ClientBundle] (http://code.google.com/intl/de-DE/webtoolkit/doc/latest/DevGuideClientBundle.html) an oder fügen Sie einfach ein benutzerdefiniertes Stylesheet hinzu. – bestform

+0

Danke, es funktioniert. Ich möchte dieses Stylesheet in einer CellTable.Resource deklarieren, aber ich bekomme eine Ausnahme: [ERROR] Kann CSS nicht verarbeiten. Weißt du wie es geht? – Opal

0

Was für mich funktionierte, ist das Hinzufügen einer neuen Klasse in meinem CSS. Diese Klasse wird nur auf ausgewählte Elemente angewendet, deren Länge von Daten abhängt.

.__gwt_cell select{ 
    width:170px; 
} 

Dann ist es auf meinem speziellen Zelle Stil wie o Anwendung:

table.getColumn(3).setCellStyleNames("yourstyle");