26-10-12, 06:25 PM
26-10-12, 06:44 PM
الان يتم عرض الاسماء من الجدول بالتعديل التالي:
كود :
' For i As Integer = 1 To All ' اضافة العناصر في المصفوفة
'list.Add("<a href=""Members.aspx?ID=" + i.ToString + """ target=""_blank"">Member " + i.ToString + "</a>")
' Next
'||||||||||||||||||||||||||||
Dim gt As New OleDbCommand("select * from tb", conn)
If conn.State = System.Data.ConnectionState.Closed Then
conn.Open()
End If
Dim dr As Data.OleDb.OleDbDataReader = gt.ExecuteReader
Do While dr.Read
'list.Add("<a href=""Members.aspx?ID=" + i.ToString + """ target=""_blank"">Member " + i.ToString + "</a>")
list.Add("<a href=""Members.aspx?ID=" & dr.Item("tid") & """ target=""_blank"">" & dr.Item("tname") & "</a>")
Loop
'||||||||||||||||||||||||||||26-10-12, 07:11 PM
في غاية الروعة 
اتصور ان هذا معناه انك استطعت ربطها .. اليس كذلك ؟

اتصور ان هذا معناه انك استطعت ربطها .. اليس كذلك ؟
26-10-12, 07:52 PM
انا الحين اتقدم وارجع خطوات واقول ماشاء الله تبارك الله ... احاول افهم الكود الذي وضعته انت والى الان....لكن لا يهم الاهم اني الان احاول بناء مشروع من جديد.
اخي الكريم اذا كان لدينا 21 سجل بالجدول او بالمصفوفة والعدد المطلوب بكل صفحة لنقل 5 نقوم بتقسيم 21 على 5 الناتج 4 والباقي 1
السؤال هل يمكن اختصار الكود الذي اضفته انت بهذا(اقصد مسالة التقسيم؟؟؟ -- اظن اني كل مااخطو للامام ارجع
)
اخي الكريم اذا كان لدينا 21 سجل بالجدول او بالمصفوفة والعدد المطلوب بكل صفحة لنقل 5 نقوم بتقسيم 21 على 5 الناتج 4 والباقي 1
السؤال هل يمكن اختصار الكود الذي اضفته انت بهذا(اقصد مسالة التقسيم؟؟؟ -- اظن اني كل مااخطو للامام ارجع
)26-10-12, 08:32 PM
كيف تقصد باختصاره ؟
انا وضعت هذا الكود على اساس ان : عدد الصفحات = عدد العناصر الكلي ÷ عدد العناصر الذي يجب عرضه في كل صفحة
مثلا لو ان عدد العناصر الكي هو 20 .. و عدد العناصر الذي يجب عرضه في كل صفحة هو 5 اذا
عدد الصفحات = 20 ÷ 5 = 4
لكن ماذا لو وجد هناك باقي ؟
مثلا اذا كان العدد الكلي هو 23 و عدد العناصر المطلوب وضعه في كل صفحة هو 5 سيكون الناتج هو 4.6
كما ترى فان هذا الناتج يعتبر خاطئ .. فعدد البيجات الذي يجب ان يظهر هو 5
لذلك نقوم بالتقريب ..عن طريق الدالة Math.Round ليصبح الرقم هو 5
لكن احيانا يكون الناتج اصلا هو 4.2 مثلا
فالتقريب سيكون 4 و هذا شيء خاطئ بالطبع . لذلك وضعنا الجملة الشرطية التي تقول اذا كان العدد المقرب اصغر من العدد الاصلي نضيف 1 اليه
هذا كل شيء ^_^
[COLOR="#FF0000"]ملاحظة : ارجو منك ان لا تقوم باستخدام الكود الا عندما تفهمه كله .. حيث انك اذا حفظته بدون فهم لن تستفاد منه قط
و اذا لم تفهم اي جزئ منه و لو حرف واحد فارجوك اخبرني
[/COLOR]
تحياتي

انا وضعت هذا الكود على اساس ان : عدد الصفحات = عدد العناصر الكلي ÷ عدد العناصر الذي يجب عرضه في كل صفحة
مثلا لو ان عدد العناصر الكي هو 20 .. و عدد العناصر الذي يجب عرضه في كل صفحة هو 5 اذا
عدد الصفحات = 20 ÷ 5 = 4
لكن ماذا لو وجد هناك باقي ؟
مثلا اذا كان العدد الكلي هو 23 و عدد العناصر المطلوب وضعه في كل صفحة هو 5 سيكون الناتج هو 4.6
كما ترى فان هذا الناتج يعتبر خاطئ .. فعدد البيجات الذي يجب ان يظهر هو 5
لذلك نقوم بالتقريب ..عن طريق الدالة Math.Round ليصبح الرقم هو 5
لكن احيانا يكون الناتج اصلا هو 4.2 مثلا
فالتقريب سيكون 4 و هذا شيء خاطئ بالطبع . لذلك وضعنا الجملة الشرطية التي تقول اذا كان العدد المقرب اصغر من العدد الاصلي نضيف 1 اليه
هذا كل شيء ^_^
[COLOR="#FF0000"]ملاحظة : ارجو منك ان لا تقوم باستخدام الكود الا عندما تفهمه كله .. حيث انك اذا حفظته بدون فهم لن تستفاد منه قط
و اذا لم تفهم اي جزئ منه و لو حرف واحد فارجوك اخبرني
[/COLOR]
تحياتي

26-10-12, 11:12 PM
بصراحة انا استفدت من مثالك الكثير والكثير قمت بالاستفادة من مثالك بحل مشكلة الصفحة الاخيرة ثم استخدمت ترقيم الصفحات مثل 123456 وهكذا
26-10-12, 11:18 PM
ليست بقدر الفائدة التي اخذتها منك يا اخي .. 







26-10-12, 11:27 PM
انظر للكود بالصفحة بشكل كامل وانظر للتعديل الذي اجريته حتى يتم رسم اداة هايبرلينك بعدد الصفحات ارجو لو وجدت خلل ان تقوم باصلاحه
كود :
Imports System.Data.OleDb
Partial Class _Default
Inherits System.Web.UI.Page
Dim page As Integer
Dim lastpage As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim cm As New OleDbCommand("", conn)
cm.CommandText = "select count (tid) from tb"
If conn.State = System.Data.ConnectionState.Closed Then
conn.Open()
End If
Dim xcount As Integer = cm.ExecuteScalar
Dim ItemsNumber As Integer = 5 'عدد العناصر في كل صفحة
' Dim All As Integer = 107 'العدد الكلي للعناصر
Dim All As Integer = xcount 'العدد الكلي للعناصر
'////////////////////////
Dim Pages As Double = xcount / ItemsNumber 'الحصول على عدد الصفحات
Dim Rounded As Integer = Math.Round(Pages) 'تحويل عدد الصفحات الى عدد صحيح
If Rounded < Pages Then
Pages = Rounded + 1
Else
Pages = Rounded
End If
For t = 1 To Pages
Dim hyp As New HyperLink
hyp.Text = t & " "
hyp.NavigateUrl = "?page=" & t * 5 - 5
zz.Controls.Add(hyp)
Next
'///////////////////////
If IsNothing(Request.QueryString("page")) Or Request.QueryString("page") <= 0 Then
cm.CommandText = "select top 5 * from tb"
If conn.State = Data.ConnectionState.Closed Then
conn.Open()
End If
Dim dr As OleDbDataReader = cm.ExecuteReader
Do While dr.Read
Dim hyp As New HyperLink
hyp.Text = dr.Item("tname") & "<br />"
hyp.NavigateUrl = "?tid=" & dr.Item("tid")
tt.Controls.Add(hyp)
Loop
Else
'SELECT TOP 10 * FROM [Transactions] WHERE [ID] NOT IN (SELECT TOP 10 [ID] FROM [Transactions] ORDER BY [CreatedDate] DESC) ORDER BY [CreatedDate](DESC)
Dim p As String = Request.QueryString("page")
cm.CommandText = "SELECT TOP 5 * FROM [tb] WHERE [tid] NOT IN (SELECT TOP " & p & " [tid] FROM [tb])"
' cm.CommandText = "select top 5 not in (select top 5 * from tb) * from tb"
If conn.State = Data.ConnectionState.Closed Then
conn.Open()
End If
Dim dr As OleDbDataReader = cm.ExecuteReader
Do While dr.Read
Dim hyp As New HyperLink
hyp.Text = dr.Item("tname") & "<br />"
hyp.NavigateUrl = "?tid=" & dr.Item("tid")
Me.Controls.Add(hyp)
Loop
End If
End Sub
End Class26-10-12, 11:38 PM
لا اتصور هناك خطا لكن لدي استفساران ..
الاول :
الثاني : لماذا لا تقوم باستخدام الوسم <a> بدل من هايبرلنك ؟
الاول :
إقتباس : If IsNothing(Request.QueryString("page")) Or Request.QueryString("page") <= 0 Thenفي الجملة الشرطية لا اجد كلمة Not .. لماذا .. لم افهمها بالشكل الواضح ..
الثاني : لماذا لا تقوم باستخدام الوسم <a> بدل من هايبرلنك ؟
27-10-12, 02:59 PM
بالنسبة للاول عادي ممكن تستخدم النفي للشرط الموجود لكن لازم تغير جواب الشرط اي تضع مابعد else قبلها وما قبلها بعدها.
اما الثاني فالهايبر هي نفسها سيقوم فيجوال استوديو بترجمتها الى الوسم الذي ذكرت.
اما الثاني فالهايبر هي نفسها سيقوم فيجوال استوديو بترجمتها الى الوسم الذي ذكرت.