[Wicket-ja-user 324] Re: DataTableで行インデックスの表示する方法について

Back to archive index

musi jiukora jiuko****@gmail*****
2009年 4月 30日 (木) 22:43:21 JST


沖野様

koohziです。早速の回答ありがとうございます。

下記の方法で実現できそうな感じがするのですが、この方法ですと、columnsの追加前にDataTableのインスタンスが生成されている必要があると思うのですが、出来るのでしょうか?

--------------------------------------------------------------------------------
List<IColumn> columns = new ArrayList<IColumn>();

CustomDataTable dataTable;

columns.add(new AbstractColumn(new ResourceModel("index")) {
    public void populateItem(Item cellItem, String componentId, IModel
rowModel) {
        int offset = dataTable.getCurrentPage() *
dataTable.getRowsPerPage();       // ★インスタンス化されてないのでエラー
        cellItem.add(new Label(componentId, new
Model(((Item)cellItem.findParent(Item.class)).getIndex() + offset + 1)));
    }
});
・・・
columns.add(new PropertyColumn(new ResourceModel("・・・"));
add(dataTable = new DataTable("table2", columns, new DataProvider(XXXX),
10));
--------------------------------------------------------------------------------

dataTableの生成を前に持ってくると、columnsがnullなのでランタイムエラーとなってしまいます。


当方の基本知識が足りないのかも知れませんが、ご教授いただければと思います。



2009/04/30 22:17 shinya okino <shiny****@gmail*****>:

> 沖野です。
>
> DataTableクラスにgetCurrentPage(),getRowsPerPage()という
> ページ位置とページの行数を取得するメソッドがあるので掛けて足せば全体のindexになります。
>
> public void populateItem(Item cellItem, String componentId,IModel rowModel)
> {
>     int offset = dataTable.getCurrentPage() * dataTable.getRowsPerPage();
>     cellItem.add(new Label(componentId, new Model(((Item)
> cellItem.findParent(Item.class)).getIndex()+ offset + 1)));
> }
>
>
> 2009/04/30 21:03 musi jiukora <jiuko****@gmail*****>:
> > はじめまして。koohziと申します。
> >
> > DataTableを使用して以下のようなページングの表を作成したいと考えています。
> >
> > << < 1 2 3 4> >>
> > No.  d1  d2  d3
> > ---------------
> > 1    a   b   c
> > 2    d   e   f
> > 3    g   h   i
> >
> > d1〜d3はあるモデルで表示させます。
> > No.に関しては行のindexを表示したいので、以下のように実装してみました。
> >
> > 【参考サイト】
> >
> http://www.mail-archive.com/wicke****@lists*****/msg31462.html
> >
> --------------------------------------------------------------------------------
> > columns.add(new AbstractColumn(new ResourceModel("index")) {
> >     public void populateItem(Item cellItem, String componentId, IModel
> > rowModel) {
> >         cellItem.add(new Label(componentId, new
> > Model(((Item)cellItem.findParent(Item.class)).getIndex() + 1)));
> >     }
> > });
> >
> --------------------------------------------------------------------------------
> >
> > 上記でうまく行きそうなんですが、2ページ目に遷移すると
> > No.が1から始まってしまいます。できればこれを4からはじめたいと考えています。
> >
> > なにかエレガントな方法があるのでしょうか?
> > そもそもDataTableはこういったものが不得意なんでしょうか?
> > ListViewだと簡単にできるのに。。。
> >
> >
> > 以上、よろしくお願いいたします。
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > Wicket-ja-user mailing list
> > Wicke****@lists*****
> > http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
> >
> >
>
>
>
> --
> 沖野信也
> shiny****@gmail*****
>
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
>
-------------- next part --------------
HTMLの添付ファイルを保管しました...
Télécharger 



Wicket-ja-user メーリングリストの案内
Back to archive index