ページング クラスを作成するときに、クラス オブジェクト参照の受け渡しという非常に巧妙な問題に遭遇しました。ここで何が起こっているのかを説明すると、誰もが明確に理解するのは難しいかもしれません。ページングを使用するコードを見たほうがよいでしょう。クラスCPaging。
次のようにコードをコピーします。
クラスCPエージング
パブリック RS ' RecordSet オブジェクト
パブリック マーク ' ポインタ ラベル
Private sSize ' ページごとの表示数
Private sTotal 'レコードの総数
Private sPage '現在のページ番号
Private sCount ' 総ページ数
プライベートサブクラス_初期化
サイズ = 20
sページ = 1
sカウント = 1
エンドサブ
プライベートサブクラス_Terminate
閉じるオブジェクトRS
エンドサブ
'ページごとの表示数
プロパティレットサイズ(値)
sサイズ = 値
終了プロパティ
プロパティの取得サイズ
サイズ=sサイズ
終了プロパティ
'現在のページ番号
プロパティレットページ(値)
IsNumeric(Value) ではない場合
sページ = 1
それ以外
sPage = 値
終了の場合
終了プロパティ
プロパティ取得ページ
If (sPage - 1) * sSize > sTotal then
sTotal Mod sSize = 0 の場合
ページ=合計/サイズ
それ以外
ページ = 合計 / サイズ +1
終了の場合
ElseIf sPage < 1 then
ページ=1
それ以外
ページ=sページ
終了の場合
終了プロパティ
' 総ページ数
プロパティ取得数
sTotal Mod sSize = 0 の場合
カウント = sTotal / sSize
それ以外
カウント = sTotal / sSize + 1
終了の場合
終了プロパティ
'レコードの総数
PropertyGetTotal()
合計 = s合計
終了プロパティ
パブリック関数 Open(Byval SQLString)
DB.Openquery(RS,SQLString) を試してください。
sTotal = RS.RecordCount
終了機能
終了クラス
以下が呼び出しページです
次のようにコードをコピーします。
ディムプロダクツ
セット製品 = 新しい CPaging
製品あり
.Size = 15 'ページごとの表示数
.Page = PageNum '現在のページ
で終わる
Products.Open(ListSQL) を試す
Products.RS.Bof および Products.RS.Eof の場合
Response.Write(<TR><TDcolspan=8>レコードが見つかりません</TD></TR>)
それ以外
ディム・アイ
i = 0
Products.RS.Move (Products.ページ - 1) * Products.Size
Do While Not Products.RS.Eof
Response.Write(<TR onmouseup=MouseUp(this); onmousedown=MouseDown(this); onmouseover=MouseOver(this); onclick=Click(this); onmouseout=MouseOut(this);>&vbCrLf)
Response.Write(<TD align=middle nowrap> & Products.RS(ProductsClassName) & </TD>&vbCrLf)
Response.Write(<TD align=left nowrap> & Products.RS(ProductsName) & </TD>&vbCrLf)
Response.Write(</TR>&vbCrLf)
i=i+1
i >= Products.Size の場合、終了します。
製品.RS.MoveNext
ループ
終了の場合
8行目を見たとき、.net - 名前空間の影を垣間見た気がしました。