تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
datagridview paging
#1
السلام عليكم، 


نظرا لكبر البيانات في قواعد البيانات عند اظهارها في datagridview سوف نحتاج لعمل صفحات، و انا حايا استخدم نظام الصفحات لكن بطريقع اعتقد انها صعبة وطويله 

فا يا ريت من لديه طريقه لعمل نظام الصفحات لل datagridview يساعدني بالطريقه او بالمثال وله جزيل الشكر

الطريقة المتبعة :

PHP كود :
 Dim mintTotalRecords As Integer 0
    Dim mintPageSize 
As Integer 0
    Dim mintPageCount 
As Integer 0
    Dim mintCurrentPage 
As Integer 1
    Private Sub btnFirst_Click
(ByVal sender As ObjectByVal e As System.EventArgsHandles btnFirst.Click
        mintCurrentPage 
0
        loadPage
()
 
   End Sub

    Private Sub btnPrevious_Click
(ByVal sender As ObjectByVal e As System.EventArgsHandles btnPrevious.Click
        If mintCurrentPage 
mintPageCount Then mintCurrentPage mintPageCount 1
        mintCurrentPage 
-= 1
        If mintCurrentPage 
1 Then mintCurrentPage 0
        loadPage
()
 
   End Sub

    Private Sub btnNext_Click
(ByVal sender As ObjectByVal e As System.EventArgsHandles btnNext.Click
        mintCurrentPage 
+= 1
        If mintCurrentPage 
> (mintPageCount 1Then mintCurrentPage mintPageCount 1
        loadPage
()
 
   End Sub

    Private Sub btnLast_Click
(ByVal sender As ObjectByVal e As System.EventArgsHandles btnLast.Click
        mintCurrentPage 
mintPageCount 1
        loadPage
()
 
   End Sub
    Private Sub FillGridB
()
 
       'فحص الاتصال بقاعدة البيانات
        If SQL.conn.State = ConnectionState.Open Then
            SQL.conn.Close()
        End If
        SQL.conn.Open()
        ' 
For Page view.
 
       mintPageSize Integer.Parse(tbPageSize.Text)
 
       mintTotalRecords GetRowsCount()
 
       mintPageCount = (mintTotalRecords mintPageSize)
 
       ' Adjust page count if the last page contains partial page.
        If ((mintTotalRecords Mod mintPageSize) > 0) Then
            mintPageCount = (mintPageCount + 1)
        End If
        mintCurrentPage = 0
        loadPage()
        SQL.conn.Close()
    End Sub

    Private Function GetRowsCount() As Integer
        Dim strSqll As String = ""
        If ComboBox1.SelectedItem = "الرجاء أختيار الصنف . . ." Or ComboBox1.SelectedItem = "أظهار الكل" Then
            strSqll = "SELECT * FROM covers_goods_in_view Where date BETWEEN '" & DateTime1.Text & "' AND '" & DateTime2.Text & "'"
        ElseIf ComboBox1.SelectedItem IsNot "الرجاء أختيار الصنف . . ." Or ComboBox1.SelectedItem IsNot "أظهار الكل" Then
            strSqll = "SELECT * FROM covers_goods_in_view WHERE p_name =N'" & cover_name & "' AND date BETWEEN '" & DateTime1.Text & "' AND '" & DateTime2.Text & "'"
        End If
        Dim da As New SqlDataAdapter(strSqll, SQL.conn)
        Dim ds As New DataSet
        da.Fill(ds)
        Return ds.Tables(0).Rows.Count
    End Function

    Private Sub loadPage()
        Dim strSql As String = ""
        Dim intSkip As Integer = 0
        intSkip = (mintCurrentPage * mintPageSize)

        If ComboBox1.SelectedItem = "الرجاء أختيار الصنف . . ." Or ComboBox1.SelectedItem = "أظهار الكل" Then
            strSql = "SELECT TOP " & mintPageSize & " * FROM covers_goods_in_view WHERE ID NOT IN (SELECT TOP " & intSkip & " ID FROM covers_goods_in_view) and date BETWEEN '" & DateTime1.Text & "' AND '" & DateTime2.Text & "' ORDER BY Date DESC"
        ElseIf ComboBox1.SelectedItem IsNot "الرجاء أختيار الصنف . . ." Or ComboBox1.SelectedItem IsNot "أظهار الكل" Then
            strSql = "SELECT TOP " & mintPageSize & " * FROM covers_goods_in_view WHERE ID NOT IN (SELECT TOP " & intSkip & " ID FROM covers_goods_in_view) and p_name =N'" & cover_name & "' AND date BETWEEN '" & DateTime1.Text & "' AND '" & DateTime2.Text & "'ORDER BY Date DESC"
        End If

        Dim cmd As SqlCommand = SQL.conn.CreateCommand()
        cmd.CommandText = strSql
        Dim da As SqlDataAdapter = New SqlDataAdapter(cmd)
        Dim ds As DataSet = New DataSet()

        RGridview.CancelEdit()
        RGridview.Columns.Clear()
        RGridview.DataSource = Nothing

        Dim dt As New DataTable
        da.Fill(dt)

        '
Delete Button
        Dim btnDelete 
As New DataGridViewButtonColumn()
 
       btnDelete.FlatStyle FlatStyle.Flat
        RGridview
.Columns.Insert(0btnDelete)
 
       RGridview.Columns.Add("""رقم الصنف")
 
       RGridview.Columns.Add("""الصنف")
 
       RGridview.Columns.Add("""الحجم")
 
       RGridview.Columns.Add("""سعر المتر")
 
       RGridview.Columns.Add("""سعر الشراء")
 
       RGridview.Columns.Add("""التاريخ")
 
       RGridview.Columns.Add("""الملاحظات")
 
       RGridview.Columns.Add("""ID")
 
       RGridview.Columns(8).Visible False

        Dim i 
As Integer
        For i 
0 To dt.Rows.Count 1
            RGridview
.Rows.Add()
 
           RGridview.Rows(i).Cells(1).Value dt.Rows(i).ItemArray(1)
 
           RGridview.Rows(i).Cells(2).Value dt.Rows(i).ItemArray(2)
 
           RGridview.Rows(i).Cells(3).Value dt.Rows(i).ItemArray(3)
 
           RGridview.Rows(i).Cells(4).Value dt.Rows(i).ItemArray(4)
 
           RGridview.Rows(i).Cells(5).Value dt.Rows(i).ItemArray(5)
 
           RGridview.Rows(i).Cells(6).Value dt.Rows(i).ItemArray(6)
 
           RGridview.Rows(i).Cells(7).Value dt.Rows(i).ItemArray(7)
 
           RGridview.Rows(i).Cells(8).Value dt.Rows(i).ItemArray(0)
 
       Next
        SQL
.conn.Close()

 
       RGridview.Columns(7).AutoSizeMode DataGridViewAutoSizeColumnMode.Fill
        RGridview
.CellBorderStyle DataGridViewCellBorderStyle.SingleHorizontal
        Me
.RGridview.GridColor Color.WhiteSmoke

        lblStatus
.Text = (mintCurrentPage 1).ToString() & " / " mintPageCount.ToString()
 
       cmd.Dispose()
 
       da.Dispose()
 
       ds.Dispose()
 
   End Sub 
الرد
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاتة


ما رأيك لو طرحك طريقتك أولاً 
وذكر نوع قاعدة البيانات والإصدارة التي تستخدمها من قواعد البيانات

بناءا على المعلومات سيسهل على الأعضاء المساعدة وطرح طرق مختلفة 
لأن الــ Pagination أو نظام ( ترقيم الصفحات ) يستند على جزئين
الأول   : في قاعدة البيانات
الثاني : في المشروع


لذلك مهم ذكر بعض المعلومات
الرد
#3
تم تحديث الموضوع اخي، لطفا القي نظرة
الرد
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم