| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| تقســـــيم النتــــائج على عـدد من الصفـحات الكثير احيانا يحب يعمل تعدد صفحات ويقسم نتائجه على اكثر من صفحة بدون الاستعانه بالجريد فيو يعني ببساطه بواسطة كود عادي بدون استخدام اي ادوات جاهزه وعرض النتائج بكود html بتعدد صفحات ان شاء الله ان هذه الطريقة تعجبكم وتفيدكم واهم شي تستخدموها ![]() في البداية سوف نفترض اننا نريد اعادة 10 نتائج في كل صفحة نقوم بتعريف متغير من نوع انتيجر ونضع فيه العدد 10 وانا هنا استخدم المتغير لان ممكن انت تجيب عدد النتائج من قاعدة البيانات فيكون معك سهولة التغيير فيما بعد من رقم 10 لاي رقم ثاني كود: Dim RequestNumberInOnePageV As Integer = 8 كود: Dim PnIdV As Integer = Request.QueryString("pid") كود: If PnIdV = 0 Then
PnIdV = 1
End If نقوم بجلب جميع المعلومات التي نريدها من قاعدة البيانات ونفرغها في داخل DataSet او بالطريقة التي تريدها انا احب ان استخدم الدانا ست ولنفرض ان اسمها هو dsMatch وهي الان تحتوي على كل السجلات الي عادت من قاعدة البيانات بعد تنفيذ جملة ال sql الان نريد معرفة عدد الصفحات التي سوف يتم تقسيم النتائج عليها وهو سيكون ناتج قسمة العدد الكلي للسجلات في الداتا ست على عدد السجلات المطلوب عرضها في الصفحة الاولى (مع وجدود بعض الاستثنائات التي سوف نتطرق لها) نخزن عدد السجلات في الداتا ست داخل متغير كود: Dim RecordsNumberV As Integer = dsMatch.Tables(0).Rows.Count ولكي نتدارك هذه المشكلة نقوم اولا بمقارنة عدد النتائج العائده في الداتا ست مع عدد النتائج المطلوبة في الصفحة الواحده فاذا كان عدد السجلات اقل من عدد النتائج المطلوب عرضها يكون عدد الصفحات واحد فقط بينما لو كان اكبر نقوم بحساب عدد الصفحات من ناتج قسمتهم كود: 'معرفة عدد الصفحات التي سوف يتم تفسيم النتائج عليها
Dim RecordsNumberV As Integer = dsMatch.Tables(0).Rows.Count
Dim PagesNumberV As Integer = 0
If RecordsNumberV <= RequestNumberInOnePageV Then
PagesNumberV = 1
Else
PagesNumberV = Math.Round(RecordsNumberV / RequestNumberInOnePageV) + 1
End If
'عدد الصفحات الذي سوف يتم تقسيم النتائج عليه
Dim ALLPageNumber As Integer = PagesNumberV استثناء اخر في حالة كان رقم الصفحة التي تم طلبها اكبر من عدد الصفحات فهذا يعني ان المستخدم قد قلب في الصفحات حتى وصل لاخر صفحة وحاول ان يطلب الصفحة التي بعدها فهنا نعيده مرة اخرى للصفحة الاخيرة ولانسمح له بالانتقال للصفحة التالية كود: If PnIdV > PagesNumberV Then
Response.Redirect("aggnews.aspx?pid=" & PagesNumberV)
Exit Sub
End If الان نقوم بوضع قائمة منسدله (دروب داون لست) ونفرغ فيها عدد الصفحات العائد لنا وعندما يختار المستخدم الصفحة التي يريدها منها تنقله لنفس صفحاتنا مع ارسال رقم الصفحة المطلوبة في المتغير كود: If Page.IsPostBack = False Then
'افراغ عدد الصفحات في قائمة الصفحات
Dim Ir As Integer = 0
For Ir = PagesList.Items.Count - 1 To 0 Step -1
PagesList.Items.RemoveAt(Ir)
Next
Dim Il As Integer = 0
For Il = 1 To PagesNumberV
PagesList.Items.Add(New ListItem("Page: " & Il, Il))
Next
PagesList.SelectedValue = PnIdV
End If الان نقوم بتعريف عدد السجلات واول سجل واخر سجل سوف يتم عرضه في هذه الصفحة كود: 'معرفة بداية ونهاية السجلات التي سيتم عرضها في هذه الصفحة
Dim StartReV As Integer = RecordsNumberV - ((PnIdV * RequestNumberInOnePageV) - RequestNumberInOnePageV)
Dim EndReV As Integer = 0
If StartReV > RequestNumberInOnePageV Then
EndReV = StartReV - RequestNumberInOnePageV
Else
EndReV = 0
End If مع العلم ان StartReV هذه متغير بداية السجلات و EndReV هذا متغير نهاية السجلات في الكود السابق في حالة كان رقم اول سجل اكبر من عدد قيم المطلوب هذا يعني انه مازال هناك صفحات اخرى فنوم بتعيين نهاية السجلات على انه رقم اول سجل منقوص منه عدد النتائج في الصفحة بينما لو كان رقم اول سجل اقل فهذا يعني ان هذه اخر صفحة فعندها يكون اخر سجل رقمه 0 وهذا اخر استثناء سوف نقوم بتداركه بهذه الطريقة الان يمكنك افراغ المعلومات من خلال استخدام حلقة تكرار او اي طريقة تريدها بالاعتماد على السجل الاول والاخير كود: Dim Ip As Integer = 0 For Ip = StartReV - 1 To EndReV Step -1 هنا السجلات المعروضه بالصفحة Next بقي الان ان نقوم بنقل المستخدم للصفحة المطلوبة في حالة اختار رقم الصفحة من القائمة المنسدلة وهذا هو كودها كود: Dim PageIdV As Long = PagesList.SelectedItem.Value
Response.Redirect("aggnews.aspx?pid=" & PageIdV) اتمنى يكون الشرح وااااااضح واي استفسار اقدر اجاوب عليه ان شاء الله بجاوب ![]() في امان الله وحفظة
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
|
المشكلة ياغالى ان المبتدىء مش هيفهم حاجة اقتباس:
طيب فهمنا نحط فين الكلام دة ونحفظ بأسم ايه ونعمل ايه
__________________ مركز حمل لتحميل الصور والملفات www.7ammil.com خطط الإعلانات والأسعار www.7ammil.com/e3lan.htm للإعلان لدينا ads@7ammil.com | |||||
|
| |||||
| مشكووور اخوي فراس على ردك ياليت تعطيني عنوان الشرح القديم الموجود ممكن نستفيد منه جميعا انا ماعرف تقصد انه شرح قديم لي انا ؟؟ ولا انه شرح موجود بالمنتدى لان فعلا ناسي وجوده ياليت تعطيني الرابط ان شاء الله نستفيد منه
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
| |||||
| اقتباس:
بخصوص الي سالت عنه هذا عدد النتائج الي رح يظهر في الصفحة الواحده بخصوص الكلام فهو يكون في كود الصفحة هذا كله يتم قبل افراغ المعلومات الي تريدها داخل الصفحة يعني في البداية نقسمها ثم نعرضها على حسب التقسيمة المطلوبة
__________________ احنا بكل فخر واخلاص باغة باروده ورصاص وصقور تحب المقناص بجو الأردن عاليه وفوق الأردن عاليه ........ | |||||
|
![]() |
| أدوات الموضوع | |
| |