Ist es möglich, die Spaltenbreite von CellTable
in GWT einzustellen?GWT CellTable - Spaltenbreite einstellen
Antwort
EDIT: Ab GWT 2.2 table.setWidth und table.setColumnWidth sind
unterstützttable.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");
}
}
}
Sie könnten einen Stilnamen für die spezifische Spalte verwenden, indem Sie die Methode addColumnStyleName(int index, java.lang.String styleName)
verwenden.
Die Dokumentation GWT für CellTable dies umfasst unter: http://www.gwtproject.org/doc/latest/DevGuideUiCellTable.html
Unter "Steuern des Spaltenbreite".
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");
Ich weiß, über diese Methode von nicht wissen, wie es zu benutzen. Wo sollte diese Stilklasse deklariert werden? – Opal
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
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