プロが教える店舗&オフィスのセキュリティ対策術

ASP.Net にて日々壁が立ち上がっております。

GridView のデータソースであるSQLDataSourceのSQL文を変更し、尚且つページング、ソーティングも行いたいと思うのですが、なかなかうまく行きません。

Dim SQL As String

条件が複雑なので、SQL には自作したSQL文が入っております。

Me.SqlDataSource.SelectCommand = SQL
Me.SqlDataSource.DataBind()

このように記述するとGridViewのデータはSQL文に指定した通りに表示されるのですが、ページング、ソーティングを行うと、元々SqlDataSourceに指定してあるSQL文のモノが適応されて表示画面も元データの適応になってしまいます。

何かのサイトでこういう場合は DataSourceID をどうにかすると、ページング、ソーティングともに指定したSQL文のデータソース上で行われるみたいなことが書かれていたのですが、どう記述してよいかわかりません。

例えば・・・

Me.GridView.DataSourceID = ""
Me.GridView1.DataBind()

Me.GridView1.DataSourceID = Me.SqlDataSource.ID
Me.GridView1.DataBind()

こんな記述をしてみても、ページング、ソーティングはうまく動作しません。
動的なSQL文をGridViewに適応でき、ソーティング、ページングも適応させるにはどうしたらよいでしょうか?
GridView にそういう事が簡単にできれば非常に使い勝手が良いのですが、
初心者的な考えなのかもしれませんが、何卒ご教授いただければと存じます。
よろしくお願い申し上げます。

A 回答 (1件)

SQLDataSourceコントロールてのは、データソースコントロールの中で一番簡単なコントロールなので、凝ったデータアクセスには向いていません。


ページング取得など、全件取得した後でページング部分を抽出するロジックであり、ある程度のデータ量を超えると、トラフィックが巨大になって使えないと思います。

そのあたりも含め、データソースコントロールによるデータ処理については、以下の書籍を参考にされたらと思います。
.NET 2.0時代の書籍なので、最近はもっと進んでますが。。

Microsoft-Visual-Studio-2005によるWebアプリケーション構築技法
赤間信幸 著

http://www.amazon.co.jp/Microsoft-Visual-Studio- …

で、今回望んでおられる、GridView + Paging / Sortingを解決するには、SQLDataSourceではなく、カスタムSQLに対応できるObjectDataSourceが正解だと思います。
また、GridViewのページャについても、自動処理ではなく、正しく部分抽出SQLをハンドリングできる設定が必要です。


このあたりのサンプルを学習してください。
http://www.codeproject.com/Articles/13963/Implem …
http://www.codeproject.com/Articles/42043/Optimi …
http://www.atmarkit.co.jp/fdotnet/bookpreview/vs …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています