2009/11/15

AjaxFallbackDefaultDataTableのカラム幅指定

AjaxFallbackDefaultDataTableが作ってくれるテーブルの、各カラムのサイズを指定したくていろいろ調べてみたけど、なかなか良い方法が見つからなかった。一応実現できたけど、むちゃくちゃ強引な気がする。

public Page(){
DataTable table = new AjaxFallbackDefaultDataTable( ... );

MarkupContainer headers = (MarkupContainer)get(table, "topToolbars/2/toolbar/headers");
if(headers != null){
get(headers, "1/header").add(new AttributeAppender("width", new Model("20%"), ""));
get(headers, "2/header").add(new AttributeAppender("width", new Model("20%"), ""));
get(headers, "3/header").add(new AttributeAppender("width", new Model("60%"), ""));
}
}

private static Component get(MarkupContainer root, String path){
String[] paths = path.split("\\/");
MarkupContainer current = root;
for(String p : paths){
Component c = current.get(p);
if(c == null) return null;
if(!(c instanceof MarkupContainer)) return null;
current = (MarkupContainer)c;
}
return current;
}

こんなんでいいのかね。

0 件のコメント: