ObjectDataSourceを使って、GridViewにページングを実装する方法。
今日、はまったのでまとめておきます。
1.GridViewとObjectDataSourceを配置する。
ドラッグアンドドロップで、普通に配置します。
2.DACでデータとデータ件数を取得するメソッドを実装する。
例としてProductRepository.csを実装します。
[sourcecode language=”csharp”]
public int CountProducts () {…}
//offset:テーブル内のデータの取得位置
//limit:1ページあたりのデータ件数
public List<Product> LoadAllProducts (int offset, int limit) {…}
[/sourcecode]
3.ObjectDataSource(以降、ODS)を編集する
ObjectDataSource(以降、ODS)の設定を行います。
データソースの構成で、ビジネスオブジェクトには「ProductRepository」を選び、
データメソッドのSELECTには「LoadAllProducts」を選びます。
パラメタの設定は行いません。
続いて、GUIのプロパティにてページングのための情報を記述します。
aspxのソース表示ではこのようになります。
[sourcecode language=”csharp”]
<asp:ObjectDataSource
ID="ProductObjectDataSource"
runat="server"
EnablePaging="True"
SelectCountMethod="Count"
SelectMethod="LoadAllProduct"
TypeName="ProductRepository"
MaximumRowsParameterName="limit"
StartRowIndexParameterName="offset"
</asp:ObjectDataSource>
[/sourcecode]
このように設定すると、ODSがlimitの値とoffsetの値をLoadAllProductsに渡してくれます。
4.GridViewのデータソースに前述のODSを選ぶ
データソースの選択で、上述のODSを選びます。
5.GridViewを編集する。
AllowPageをTrueにしたり、PageSizeを変更したりします。
これでOK!!
F5で実行すると、ページングが実装されています。
6.おわりに
最後のGridViewのPageSizeがどうやってODSに伝わるのでしょうか?
内部的な処理でしょうけど、ちょっと気になります。
以下のサイトを参考にしました。
Implement Paging using ObjectDataSource with GridView
コメント