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