<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    幸せのちから

    平凡的世界
    看似平常實(shí)崎嶇
    成如容易卻艱辛

    Chapter 13. AutoGenerateColumns

    Chapter 13. AutoGenerateColumns

    13.1. 引言

    大多數(shù)情況下你按照你需要的列來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù)表。但是,有時(shí)候需要運(yùn)行時(shí)動(dòng)態(tài)生成一些列。 為了實(shí)現(xiàn)這點(diǎn),eXtremeTable需要使用ColumnsTag并設(shè)置autoGenerateColumns屬性。

    AutoGenerateColumns為singleton并且不是線(xiàn)程安全的,因此不要定義任何類(lèi)變量。

    13.2. ColumnsTag

    ColumnsTag只有autoGenerateColumns這一個(gè)屬性。所有你必須做的就是實(shí)現(xiàn)AutoGenerateColumns接口, 并設(shè)置autoGenerateColumns屬性為類(lèi)的全路徑。

    <ec:table
    items="presidents"
    action="${pageContext.request.contextPath}/autoGenerateColumns.run"
    title="Presidents"
    >
    <ec:columns autoGenerateColumns="org.extremesite.controller.AutoGenerateColumnsImpl"/>
    </ec:table>

    AutoGenerateColumns接口只有一個(gè)方法:

    public void addColumns(TableModel model);

    你需要做的就是添加列(columns)到model里。最簡(jiǎn)單的示例如下:

    public class AutoGenerateColumnsImpl implements AutoGenerateColumns {
    public void addColumns(TableModel model) {
    Iterator iterator = columnsToAdd().iterator();
    while (iterator.hasNext()) {
    Map columnToAdd = (Map) iterator.next();
    Column column = new Column(model);
    column.setProperty((String) columnToAdd.get(PROPERTY));
    column.setCell((String) columnToAdd.get(CELL));
    model.getColumnHandler().addAutoGenerateColumn(column);
    }
    }
    }

    示例中columnsToAdd()方法簡(jiǎn)單返回一個(gè)包含生成列(columns)需要的所有信息的集合。 作為參考,下面是我在eXtremeComponents網(wǎng)站實(shí)例中使用的columnsToAdd()方法:

    private List columnsToAdd() {
    List columns = new ArrayList();
    columns.add(columnToAdd("fullName", "display"));
    columns.add(columnToAdd("nickName", "display"));
    columns.add(columnToAdd("term", "display"));
    columns.add(columnToAdd("born", "date"));
    columns.add(columnToAdd("died", "date"));
    columns.add(columnToAdd("career", "display"));

    return columns;
    }

    private Map columnToAdd(String property, String cell) {
    Map column = new HashMap();
    column.put(Column.PROPERTY, property);
    column.put(Column.CELL, cell);
    return column;
    }

    另外,我想聲明的是只創(chuàng)建列一次。eXtremeTable為了高效,不會(huì)每行創(chuàng)建一列, 而是通過(guò)循環(huán)持續(xù)插入新列值到已經(jīng)存在的列。記住TableModel能夠訪(fǎng)問(wèn)Context,因此 你可以在Controller(Spring)或Action(Struts)中定義樣式(look like)并通過(guò)request傳輸集合。 所以你得AutoGenerateColumns實(shí)現(xiàn)只需要構(gòu)建列(Columns)并添加到model.columns里。

    posted on 2006-02-28 21:50 Lucky 閱讀(965) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): extremeComponents

    <2006年2月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627281234
    567891011

    導(dǎo)航

    隨筆分類(lèi)(125)

    文章分類(lèi)(5)

    日本語(yǔ)

    搜索

    積分與排名

    最新隨筆

    最新評(píng)論

    主站蜘蛛池模板: avtt天堂网手机版亚洲| 久久久国产精品亚洲一区| 亚洲AV无码之国产精品| 成年性午夜免费视频网站不卡| 亚洲国产成a人v在线| 国产电影午夜成年免费视频| 亚洲制服丝袜一区二区三区| 国产精品免费观看久久| 亚洲av无码成人精品区一本二本| 永久免费av无码网站大全| 国产亚洲漂亮白嫩美女在线| 中文字幕亚洲一区二区三区| 在线观看免费视频一区| 亚洲精品欧洲精品| 在线播放免费人成视频在线观看| 久久无码av亚洲精品色午夜| 亚洲高清无码专区视频| 97在线免费观看视频| 亚洲国产成人精品电影| 永久免费观看的毛片的网站| 四虎影视永久在线精品免费| 国产精品亚洲精品日韩已满| 久久九九兔免费精品6| 久久久亚洲精华液精华液精华液| 亚洲乱码国产一区网址| 久9这里精品免费视频| 亚洲精品亚洲人成在线播放| 国产zzjjzzjj视频全免费| 水蜜桃视频在线观看免费播放高清| 亚洲综合日韩中文字幕v在线| 国产一精品一AV一免费孕妇| 日本一区二区三区在线视频观看免费 | 色多多A级毛片免费看| 久久精品7亚洲午夜a| 成全影视免费观看大全二| 国产人成网在线播放VA免费| 亚洲一区二区三区无码国产| 免费国产成人午夜电影| 国产99视频精品免费专区| 亚洲欧美成人av在线观看| 亚洲第一AV网站|