すいません、VB4しかやってないんです、VBAはやったけど(ぼそ) チラシの裏だって立派な書き込み空間なんだからねっ!資源の有効活用なんだからねっ!とか偉そうに言ってるけど、実は色々と書き残したいだけ

だからなに? どうしろと? くるみサイズの脳みそしかないあやしいジャンガリアンベムスターがさすらう贖罪蹂躙(ゴシックペナルティ)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  632  : 記事  35  : コメント  11686  : トラックバック  143

ニュース


片桐 継 は
こんなやつ

かたぎり つぐ ってよむの

大阪生まれ河内育ちなんだけど
関東に住みついちゃったの
和装着付師だったりするの
エセモノカキやってたりするの
VBが得意だったりするの
SQL文が大好きだったりするの
囲碁修行中だったりするの
ボトゲ好きだったりするの
F#かわいいよF#

正体は会った人だけ知ってるの

空気読まなくてごめんなさいなの


わんくまリンク

C#, VB.NET 掲示板
C# VB.NET掲示板

わんくま同盟
わんくま同盟Blog


WindowsでGo言語
WindowsでGo言語


ネット活動


SNSは疲れました

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

イベント活動

プログラムの活動

さて、怪しい妖しいサイト、おかげさまで盛況です。ありがとうございます。色んな方からの色んな要望・希望・イチャモン・わけわからん中傷などなどをいただいておりますが、食欲の秋でもあるので美味しいトコだけカジリつつ精進させていただいてます。かまってもらえるって幸せだナァ(おい)

ってことで、このサイト実現に至る&メンテナンスの過程で見つけたことなんかをちょこちょこと書いてみようかなんぞとおもってみたわけです。何かのお役にたてれば幸いですですですよ。

そして、今日の~てぇまはぁ~っ…… (By加賀丈史)

VB.NETのLINQでページング

ページングって何ぞ?という人はこちら

http://japan.internet.com/developer/20060509/26.html
http://japan.internet.com/developer/20060620/25.html

 早くからここの部分は手を入れよう、と思っていたのがこれでした。情報収集&リスト一覧検索がメインのサイトである以上レコードが増え続ける事がわかっていたのですし、検索さえ機能してしまえばあまり一覧は使わなくなるだろうと思っていましたし。かといってページ開いてイキナリ検索ボックスだけだと寂しいし<おい
なので、効率よく、かつ、サイトが重くならない範囲でのリスト表示制御、を実現したい時にページングはとても有効な手段ってわけなのですです。

さて、まずは旧ソース。元記事はこっちね

 Gd.DataSource = From L In pMContext.MissionList Where L.MID Join M In dMl On L.MID Equals M.MID _
                        Select MID = L.MID, _
                        DNGN = L.DNGN, _
                        PNAME = L.PNAME, _
                        RANK = L.RNK, _
                        EXMM = L.EXMM, _
                        RWD = L.RWRD, _
                        PWD = L.PWD 
  Gd.DataBind()


こちら、新ソース。

Gd.DataSource = From L In pMContext.MissionList Where L.MID Join M In dMl On L.MID Equals M.MID _
                        Select MID = L.MID, _
                        DNGN = L.DNGN, _
                        PNAME = L.PNAME, _
                        RANK = L.RNK, _
                        EXMM = L.EXMM, _
                        RWD = L.RWRD, _
                        PWD = L.PWD _
                        Skip (Gd.PageIndex * Gd.PageSize) _
                        Take (Gd.PageSize)
 Gd.DataBind()

 

ステートメントが増えてます。ポイントはそこ

SKIP →取得するレコード開始位置指定
TAKE →取得するレコード件数指定

この二つさえ押さえてしまえば、ページングの考え方を簡単簡潔即実装。LINQの超便利ステートメント、TAKEとSKIPを駆使することで、一ページ分に必要なレコードだけをピンポイントで取得、これをGridViewへバインドさせることで処理が高速できるってシカケです。次の応用としては、一ページに何行表示するかをユーザーが設定できるようにしたいのですけれど、このロジックのどの変数に対して何をすれば良いのか、もう大体の方は直感でお分かりいただけると思います。

なお、このやり方はほんの一例。プログラミングにはいくつかのセオリーがあるとはいえ、答えは一つとは限りませんので、そこんところもよろしくです<何がだオイ

こうやって見るとカンタンじゃん、なんだけど、知って触ってこういうことかと理解するまでは時間がかかったの。というわけで

参考にしたサイトはこちら

まずはどどーんとブックマーク必須的LINQサンプルコード集。素晴らしいラインナップです。
http://msdn2.microsoft.com/en-us/vbasic/bb688084.aspx

そしてLINQの勉強にあたってはScottGuさんのブログは欠かせないですね。判りやすい解説に感謝。
http://weblogs.asp.net/scottgu/

ピンポイントなLINQ、Gridviewページングに関する記事はこちらに翻訳版で。
http://blogs.wankuma.com/chicasharp/archive/2007/09/09/94926.aspx
毎度の事ながら、Chicaちゃん翻訳GJ&Thanksです。だってニホンジンだもの。

投稿日時 : 2007年10月9日 23:15

コメント

No comments posted yet.

Post Feedback

タイトル
名前
Url:
コメント