سأقوم بنشر الكود المصدري لفئة الترحيل أولاً، ثم سأقوم بنشر بعض الأمثلة لشرح استخدامه وكيفية توسيع وظائفه عندما يكون لدي الوقت.
الكود الأصلي للفئة هو كما يلي:
<%
"======================================================================================
"نسخة XDOWNPAGE ASP."
"الإصدار الحالي: 2.0
'
'
"النسخة الأصلية 1.00
'الكود بواسطة zykj2000
'البريد الإلكتروني: [email protected]
بي بي اس: http://bbs.513soft.net
'
'
'ترقية الإصدار: 1.5 (asp + أوراكل)
تم تحديثه بواسطة مزدوج
بريد إلكتروني:
المدونة: https://blog.csdn.net/double/
'تعليمات الترقية:
'
'
"إصدار الترقية: 2.0" (asp + oracle) ----> الإصدار الحالي
'احتفظ بالاسم الأصلي: XDOWNPAGE
تم التحديث بواسطة نورثسنو
"البريد الإلكتروني: [email protected]
"المدونة: http://blog.csdn.net/precipitant
'تعليمات الترقية:
'1، عند الاستعلام عن البيانات، يتم الاستعلام عن السجلات الموجودة في الصفحة الحالية فقط، مما يقلل بشكل كبير من كمية نقل البيانات.
'2، إذا كان التنقل في الصفحة طبيعيًا، فلن تحتاج إلى الاستعلام عن العدد الإجمالي للسجلات في كل مرة، طالما أنك تستعلم عنه لأول مرة ثم تمرره عبر المعلمات.
'3، يدعم تغيير حجم الصفحة ديناميكيًا
'4، يدعم الفرز الديناميكي
'5، هذا البرنامج يدعم Oracle فقط، إذا كنت تريد استخدامه في sqlserver أو أنواع أخرى من قواعد البيانات، فيرجى تعديله بنفسك: Public Property Let GetSQL(str_sql).
'
'
'للحصول على معلومات أخرى حول معدّل البرنامج، يرجى التحقق منها في الكود المصدري! ! !
'يمكن استخدام هذا البرنامج وتعديله ونسخه وإعادة إنتاجه والاقتباس منه مجانًا. آمل أن يتمكن برنامجي من توفير الراحة لعملك.
"ولكن يرجى الاحتفاظ بالمعلومات المذكورة أعلاه، وخاصة المعلومات الأصلية. بالإضافة إلى ذلك، إذا تم استخدامه لأغراض تجارية، فيرجى الترقية إلى العمل الأصلي وهذا الإصدار.
"اتصل للحصول على إذن."
'
'
'مميزات البرنامج
'يقوم هذا البرنامج بشكل أساسي بتغليف جزء ترحيل البيانات، ويتم تخصيص جزء عرض البيانات بالكامل من قبل المستخدم.
'دعم معلمات URL متعددة
'
'تعليمات الاستخدام
'وصف معلمة البرنامج
'PapgeSize يحدد عدد السجلات في كل صفحة من صفحات الترحيل
'يقوم GetRS بإرجاع مجموعة السجلات المقسمة إلى صفحات. هذه الخاصية للقراءة فقط.
'يحصل GetConn على اتصال قاعدة البيانات
'يحصل GetSQL على بيان الاستعلام
وصف طريقة البرنامج
لإجمالي عدد السجلات
'يعرض ShowPage شريط التنقل الخاص بالترحيل، وهو الطريقة العامة الوحيدة
يعرض 'ShowPageSizeChange() قائمة بأحجام الصفحات المتغيرة
'
'مثال:
'
'''تضمين الملفات.''
'
'Set mypage=new xdownpage' إنشاء كائن
'mypage.getconn=conn' احصل على اتصال قاعدة البيانات
' mypage.getsql = "اختر * من معلومات المنتج بالترتيب حسب المعرف تصاعديًا"
' mypage.pagesize=5 'اضبط بيانات السجل لكل صفحة على 5
'mypage.totalRecordCount=rsTotalCount يعين العدد الإجمالي للسجلات
'set rs=mypage.getrs()'إرجاع مجموعة السجلات
'mypage.GetSubmitForm="frmQuery" 'النموذج المقدم افتراضيًا للترحيل، معلمة الصفحة الحالية
"Response.write(mypage.GetSubmitForm1())" وظيفة إرسال ترحيل الصفحات للإخراج
'mypage.showpage() 'عرض معلومات الترحيل يمكن استخدام هذه الطريقة بعد تعيين rs=mypage.getrs().
'اتصل في أي مكان، ويمكن الاتصال عدة مرات
' do while not rs.eof 'العملية التالية هي نفس تشغيل كائن Recordset العادي.
'استجابة.اكتب rs(0) &"
' " 'هنا يمكنك تخصيص طريقة العرض
'rs
' حلقة
'
'تمت إضافة نص الإرسال لحفظ رقم الصفحة الحالية
'الوظيفة هي GetSubmitForm()
'تحتاج إلى إرسال اسم النموذج إلى الوظيفة GetSubmitForm
'احفظ المعلمات الأربعة للمتغيرات: العلم، الصفحة الحالية، حجم الصفحة، rsTotalCount في هذا النموذج المقدم
'المثال على النحو التالي
'علم=طلب("علم")
'الصفحة الحالية=طلب("الصفحة الحالية")
'الصفحة الحالية=طلب("حجم الصفحة")
'الصفحة الحالية=طلب("rsTotalCount")
'أضف المدخلات الأربعة التالية إلى النموذج المقدم
'<اسم الإدخال = "العلم" نوع = "مخفي" القيمة = "< % = العلامة٪ >">
'<اسم الإدخال = "الصفحة الحالية" نوع = "مخفي" القيمة = "< % = الصفحة الحالية٪ >">
'<اسم الإدخال = "حجم الصفحة" نوع = "مخفي" القيمة = "< % = حجم الصفحة% >">
'<اسم الإدخال = "rsTotalCount" نوع = "مخفي" القيمة = "< % =rsTotalCount% >">
'
====================================================
"<fontface=""webdings"">9</font>" 'تحديد نمط عرض الزر في الصفحة الأولى
Const Btn_Prev="<fontface=""webdings"">3</font>" 'تحديد نمط عرض زر الصفحة السابقة
Const Btn_Next="<fontface=""webdings"">4</font>" 'تحديد نمط عرض زر الصفحة التالية
Const Btn_Last="<fontface=""webdings"">:</font>" 'تحديد نمط عرض زر الصفحة الأخيرة
Const XD_Align = "center" 'تحديد محاذاة معلومات الترحيل
Const XD_Width="100%" 'تحديد حجم مربع معلومات الترحيل
كونست XD_Height = "20"
تعريف متغير
للفئة Xdownpage "الفصل يبدأ هنا
".
int_totalPage العام "إجمالي عدد الصفحات."
int_curcount العام "عدد السجلات في الصفحة الحالية."
XD_PageSize العام "حجم الصفحة."
int_curpage الخاص "رقم الصفحة الحالية".
int_totalRecord الخاص "إجمالي عدد السجلات".
كائن اتصال قاعدة البيانات XD_Conn الخاص
كائن مجموعة التسجيل الخاص XD_Rs
بيان SQL الرئيسي الخاص بـ XD_SQL
عبارة SQL خاصة XD_Count_SQL للاستعلام عن العدد الإجمالي للسجلات
أخطاء Str_errors الخاصة
عنوان URL خاص
XD_sURL خاص
نموذج إرسال خاص "اسم نموذج الاستعلام المطلوب (إخفاء اسم النموذج)"
'======================================================================== = =============
"خاصية حجم الصفحة."
'ضبط حجم الترحيل لكل صفحة
'======================================================================== = =============
الملكية العامة تسمح لـ PageSize(int_PageSize)
إذا كان IsNumeric(Int_Pagesize) ثم
إذا كان clng(Int_Pagesize)>0 ثم
XD_PageSize=CLng(int_PageSize)
آخر
XD_PageSize=10
نهاية إذا
آخر
XD_PageSize=10
نهاية إذا
نهاية الملكية
الملكية العامة احصل على PageSize
إذا كان XD_PageSize = "" أو (ليس (IsNumeric(XD_PageSize))) إذن
حجم الصفحة = 10
آخر
حجم الصفحة=XD_PageSize
نهاية إذا
نهاية الملكية
'======================================================================== = =============
'خاصية GetRS
'إرجاع مجموعة السجلات المرقّمة
'======================================================================== = =============
الملكية العامة احصل على GetRs()
تعيين XD_Rs=Server.createobject("adodb.recordset")
'XD_Rs.PageSize=PageSize
XD_Rs.CursorLocation=3
XD_Rs.Open XD_SQL,XD_Conn,3,1
int_curcount=XD_Rs.RecordCount
إذا كان int_totalRecord = "" أم لا هو Numeric(int_totalRecord) ثم int_totalRecord=0 'تطبيع قيمة int_totalRecord
إذا int_totalRecord=0 و(int_curcount>=PageSize أو int_curpage>1) ثم اتصل queryRsCount() 'الاستعلام عن العدد الإجمالي للسجلات
إذا err.number<>0 ثم
الاستجابة.اكتب خطأ.واضح
نهاية إذا
اضبط GetRs=XD_RS
الخاصية النهائية
'================================== ================
طريقة "الاستعلامRSCount".
'الاستعلام عن العدد الإجمالي للسجلات
'======================================================================== = =============
استعلام فرعي عامRsCount()
'يتم استخدام الكود التالي لحساب العدد الإجمالي للسجلات
إذا كان XD_Count_SQL<>"" إذن
تعيين rs_sqlcount=server.createobject("adodb.recordset")
rs_sqlcount.CursorLocation=3
rs_sqlcount.open XD_Count_SQL,conn,3,1
إذا (rs_sqlcount.eof و rs_sqlcount.bof) ثم
int_totalRecord=0
آخر
int_totalRecord=rs_sqlcount(0)
int_totalRecord=clng(int_totalRecord)
نهاية إذا
rs_sqlcount.إغلاق
تعيين rs_sqlcount=لا شيء
نهاية إذا
النهاية الفرعية
======================================================================= ============================================================
'يحصل GetConn على اتصال قاعدة البيانات
'
'======================================================================== = =============
الملكية العامة دع GetConn(obj_Conn)
اضبط XD_Conn=obj_Conn
الخاصية النهائية
'================================== ===============
'يحصل GetSQL على بيان الاستعلام
'
'======================================================================== = =============
الملكية العامة دع GetSQL(str_sql)
إذا (str_sql<>"") إذن
'استنادًا إلى بيان الاستعلام المحدد، قم بإنشاء بيان الاستعلام النهائي (فقط خذ محتوى الصفحة الحالية): مناسب لقاعدة بيانات Oracle
XD_SQL = "حدد * من (اختر رونوم r_n،تيمبتابل.* من ("
XD_SQL=XD_SQL&str_sql
XD_SQL=XD_SQL&" ) temptable ) حيث r_n بين " & cstr((int_curpage -1) * XD_PageSize +1) & " و " & cstr(int_curpage * XD_PageSize)
'بيان الاستعلام للاستعلام عن العدد الإجمالي للسجلات
XD_Count_SQL = "اختر العد (*) من ("& str_sql & ")"
نهاية إذا
نهاية الملكية
'======================================================================== = =============
'تقوم الخاصية GetSubmitForm بتعيين النموذج لشروط الاستعلام
'
'======================================================================== = ==============
الملكية العامة Let GetSubmitForm(frmName)
إرسال النموذج = تقليم (frmName)
الخاصية النهائية
'================================== ===============
'تقوم طريقة GetSubmitForm1 بإخراج البرنامج النصي المطلوب للتنقل بين الصفحات
'
'======================================================================== = =============
GetSubmitForm1 () الفرعي العام
'وظيفة جافا سكريبت للتنقل في الصفحة
Response.اكتب " "+vrcrlf
Response.Write ("<Script language=""javascript"">") +vbcrlf
Response.Write "وظيفة GeneralSubmit(i)"+vbcrlf
استجابة.اكتب " {"+vbcrlf
Response.Write "مستند."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Response.Write " document."&SubmitForm&".currentpage.value=i;"+vbcrlf
Response.Write " "&SubmitForm&".submit();"+vbcrlf
Response.اكتب " }"+vbcrlf
وظيفة جافا سكريبت لتغيير حجم الصفحة
Response.Write "وظيفة ChangePageSize(ii)"+vbcrlf
استجابة.اكتب " {"+vbcrlf
Response.Write "مستند."&SubmitForm&".flag.value=""query1111111155555"";"+vbcrlf
Response.Write " document."&SubmitForm&".currentpage.value=1;"+vbcrlf
Response.Write " document."&SubmitForm&".pagesize.value=ii;"+vbcrlf
Response.Write " "&SubmitForm&".submit();"+vbcrlf
Response.Write " }"+vbcrlf
Response.Write ("</Script>")+vbcrlf
Response.اكتب " "+vrcrlf
النهاية الفرعية
=============================================================================== = ============================================================================
الخاصية "totalRecordCount".
'حول العدد الإجمالي للسجلات
'
'======================================================================== = =================
الملكية العامة دع TotalRecordCount(int_totalRecordCount)
إذا كان IsNumeric(int_totalRecordCount) ثم
int_totalRecord=CLng(int_totalRecordCount)
نهاية إذا
نهاية الملكية
الملكية العامة احصل على TotalRecordCount
إذا لم يكن (int_totalRecord = "" أو (ليس (IsNumeric (int_totalRecord)))) إذن
TotalRecordCount=int_totalRecord
نهاية إذا
نهاية الملكية
'======================================================================== ============================================================
"طريقة GetRecordCount."
'إرجاع العدد الحالي من السجلات
'
'======================================================================== ============================================================
الوظيفة العامة GetRecordCount()
GetRecordCount=int_totalRecord
وظيفة النهاية
'======================================================================== ============================================================
'Class_Initialize تهيئة الفصل
"تهيئة قيمة الصفحة الحالية."
'
'======================================================================== ============================================================
فئة فرعية خاصة_تهيئة
'=========================
'قم بتعيين القيم الافتراضية لبعض المعلمات
'=========================
' XD_PageSize=10 'اضبط القيمة الافتراضية للترحيل على 10
'=========================
"احصل على القيمة الحالية."
'=========================
إذا كان الطلب ("الصفحة الحالية") = "" إذن
int_curpage=1
ElseIf not(IsNumeric(Request("currentpage"))) إذن
int_curpage=1
ElseIf CInt(Trim(Request("currentpage")))<1 ثم
int_curpage=1
آخر
Int_curpage=CInt(Trim(Request("الصفحة الحالية")))
End If
End Sub
'================================================================== =
يقوم ShowPage بإنشاء شريط تنقل للصفحات
'هناك الصفحة الرئيسية، الصفحة السابقة، الصفحة التالية، الصفحة الأخيرة، والتنقل الرقمي
'
"======================================================================================
صفحة العرض الفرعية العامة ()
خافت str_tmp
XD_sURL = GetUrl()
' int_totalRecord=XD_Rs.RecordCount
إذا int_totalRecord<=0 ثم
str_error=str_error & "إجمالي عدد السجلات صفر، الرجاء إدخال البيانات"
استدعاء ShowError()
نهاية إذا
إذا int_totalRecord = "" ثم
int_TotalPage=1
آخر
'تعديل بواسطة wls 041215 لعرض الصفحات الصحيحة ---------------
إذا كان int_totalRecord mod PageSize = 0 إذن
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1) *-1
آخر
int_TotalPage = CLng(int_TotalRecord XD_PageSize * -1)*-1+1
النهاية إذا
النهاية إذا
إذا Int_curpage>int_Totalpage ثم
int_curpage=int_TotalPage
النهاية إذا
============================================================= ========
'عرض معلومات الترحيل، كل وحدة تغير موضع العرض وفقًا لمتطلباتها الخاصة
'======================================================================== = =======
'رد.اكتب " "
str_tmp=ShowFirstPrv
استجابة. اكتب str_tmp
str_tmp=showNumBtn
استجابة. اكتب str_tmp
str_tmp=ShowNextLast
استجابة. اكتب str_tmp
str_tmp=ShowPageInfo
استجابة. اكتب str_tmp
الرد.اكتب " "
ShowGoto
End Sub
"======================================================================================
'يعرض ShowFirstPrv الصفحة الرئيسية والصفحة السابقة
'
'
"======================================================================================
الوظيفة الخاصة ShowFirstPrv()
Dim Str_tmp,int_prvpage
إذا كان int_curpage=1 إذن
str_tmp=Btn_First&" "&Btn_Prev
السيف int_curpage=0 إذن
str_tmp=Btn_First&" "&Btn_Prev
آخر
int_prvpage=int_curpage-1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('1')"" alt=""الصفحة الأولى"">" & Btn_First&"</a> <a href="" # "" onclick=""javascript:generalSubmit('"&int_prvpage&"')" alt=""الصفحة السابقة"">" & Btn_Prev&"</a>"
نهاية إذا
ShowFirstPrv=str_tmp
الدالة
النهائية
'ShowNextLast الصفحة التالية، الصفحة الأخيرة
'
'
"======================================================================================
الوظيفة الخاصة ShowNextLast()
خافت str_tmp,int_Nextpage
إذا كان Int_curpage>=int_totalpage بعد ذلك
str_tmp=Btn_Next & " " & Btn_Last
آخر
Int_NextPage=int_curpage+1
str_tmp="<a href=""#"" onclick=""javascript:generalSubmit('"&int_nextpage&"')" alt=""Nextpage"">" & Btn_Next&"</a> <a href= "" #"" onclick=""javascript:generalSubmit('"&int_totalpage&"')" alt=""الصفحة الأخيرة"">" & Btn_Last&"</a>"
نهاية إذا
ShowNextLast=str_tmp
وظيفة النهاية
"وظيفة النهاية".
"======================================================================================
'ShowNumBtn تم تعديل التنقل الرقمي
'
"======================================================================================
عرض الدالةNumBtn()
Dim i,str_tmp,end_page,start_page
start_page=1
'إضافة بواسطة sll 2005.05.20 int_curpage=0.'
إذا int_curpage=0 ثم
str_tmp=str_tmp&"0"
آخر
إذا int_curpage>1 ثم
start_page=int_curpage
إذا (int_curpage<=5) إذن
start_page=1
نهاية إذا
إذا (int_curpage>5) إذن
start_page=int_curpage-2
نهاية إذا
نهاية إذا
end_page=start_page+5
إذا end_page>int_totalpage ثم
end_page=int_totalpage
نهاية إذا
بالنسبة إلى i=start_page إلى end_page
strTemp=XD_sURL & CStr(i)
str_tmp=str_tmp & "[<a href=""#"" onclick=""javascript:generalSubmit('"&i&"')"">"&i&"</a>] "
التالي
نهاية إذا
showNumBtn=str_tmp
الدالة
النهائية
"انتقال صفحة ShowGoto."
"تنتقل الصفحة تلقائيًا
'أضف بواسطة SLL 2005.05.20
"======================================================================================
عرض الوظائف الخاصة ()
'response.write int_totalPage
ديمينتي
إذا كان int_totalPage <=0، فقم
بالرد. اكتب "<select name='goto' Disable>"
Response.اكتب "<option value='0'>0</option>"
استجابة.اكتب "</select>"
else
Response.write "<select name='goto' onchange='javascript:generalSubmit(this.value)'>"
لـ inti=1 إلى int_totalPage
Response.Write "<option value='"&inti&"'"
إذا كان cstr(inti)=cstr(int_curpage) إذن
استجابة.اكتب "المحددة"
نهاية إذا
Response.write" >"&inti&"</option>"
التالي
استجابة.اكتب "</select>"
نهاية إذا
وظيفة النهاية
"======================================================================================
'ShowPageInfo معلومات الترحيل
'تعديل كما هو مطلوب
'
"======================================================================================
الوظيفة الخاصة ShowPageInfo()
خافت str_tmp
str_tmp=" [الصفحة:<font color=red>"&int_curpage&"</font>/"&int_totalpage&"] [إجمالي العناصر "&int_totalrecord&"] ["&XD_PageSize&" العناصر/الصفحة]"
ShowPageInfo=str_tmp
وظيفة النهاية
"======================================================================================
'ShowPageSizeChange يغير حجم الصفحة
'تعديل كما هو مطلوب
'
"======================================================================================
ShowPageSizeChange () الفرعي العام
خافت str_tmp
str_tmp="حجم الصفحة: <select name='sssssPageSize' onchange='changePageSize(this.value)'>"
str_tmp=str_tmp & "<الخيار"
إذا كان XD_PageSize=10 ثم str_tmp =str_tmp & "محدد"
str_tmp=str_tmp & " value='10'>10</option>"
str_tmp=str_tmp & "<الخيار"
إذا كان XD_PageSize=20 ثم str_tmp =str_tmp & "محدد"
str_tmp=str_tmp & " value='20'>20</option>"
str_tmp=str_tmp & "<الخيار"
إذا كان XD_PageSize=50 ثم str_tmp =str_tmp & "محدد"
str_tmp=str_tmp & " value='50'>50</option>"
str_tmp=str_tmp & "<الخيار"
إذا كان XD_PageSize=int_totalRecord ثم str_tmp =str_tmp & "تم التحديد"
str_tmp=str_tmp & " value='" & int_totalRecord & "'>الكل</option>"
str_tmp=str_tmp & "</select>"
استجابة.اكتب str_tmp
النهاية الفرعية
==================================================================
'وظيفة معدلة للحصول على معلمات URL الحالية
"الترميز بواسطة Redsun."
'تعليق Northsnow: لا أعرف أين أستخدمه، لكن احتفظ به
"======================================================================================
وظيفة خاصة GetUrl()
خافت ScriptAddress، M_ItemUrl، M_item
ScriptAddress = CStr(Request.ServerVariables("SCRIPT_NAME"))&" 'الحصول على العنوان الحالي
إذا (Request.QueryString <> "") ثم
M_ItemUrl = ""
لكل M_item في Request.QueryString
إذا كان InStr("page",M_Item)=0 إذن
M_ItemUrl = M_ItemUrl & M_Item &"="& Server.URLEncode(Request.QueryString(""&M_Item&"")) & "&"
نهاية إذا
التالي
ScriptAddress = ScriptAddress & M_ItemUrl 'احصل على العنوان مع المعلمات
نهاية إذا
GetUrl = ScriptAddress '& "الصفحة ="
وظيفة النهاية
"======================================================================================
'قم بتعيين حدث الإنهاء.
"======================================================================================
فئة فرعية خاصة_إنهاء
'XD_RS.إغلاق
'ضبط XD_RS=لا شيء
نهاية الفرعية
"======================================================================================
"رسالة خطأ ShowError."
"======================================================================================
خطأ ShowError الفرعي الخاص ()
إذا str_Error <> "" ثم
الاستجابة.كتابة("" & SW_Error & "")
الاستجابة.النهاية
نهاية إذا
إنهاء
فئة النهاية
الفرعية
%>