ID Artikel: 305271 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0

Cara melakukan Paging dengan kontrol DataGrid Windows dengan menggunakan Visual Basic.NET

Tips SistemThis article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

Pada Halaman ini

Perbesar semua | Perkecil semua

RINGKASAN

The DataGrid Kontrol web memiliki built-in otomatis atau Custom Paging fungsi; Namun, DataGrid Windows control tidak memiliki fitur ini. Artikel ini menunjukkan bagaimana membangun mekanisme paging sederhana untuk DataGrid Windows control.

Contoh kode dalam artikel ini membuat penggunaan DataSet objek. Dalam ADO.NET, DataSet objek dipenuhi dalam satu operasi dan berada di dalam memori semua waktu. Jika Anda bekerja dengan besar DataSet, artikel ini menjelaskan cara menampilkan data dalam potongan atau Halaman pemrograman.

Teknik ini memiliki beberapa keterbatasan. Mohon Lihat Pemecahan Masalah bagian untuk informasi lebih lanjut.

Persyaratan

  • Microsoft Visual Basic.NET
  • Microsoft SQL Server Northwind database contoh

Langkah-langkah untuk menambahkan Paging untuk mengontrol DataGrid Windows

Ketika Anda halaman DataGrid, Anda menampilkan data dalam halaman-ukuran "potongan," itu adalah, satu halaman Catatan pada satu waktu. Contoh kode untuk mengikuti salinan DataRow objek untuk setiap halaman dari DataSet dalam memori untuk sementara meja. Tabel sementara kemudian terikat untuk DataGrid kontrol.
  1. Buka baru Visual Basic.Aplikasi NET Windows. Form1 adalah dibuat secara default.
  2. Tambahkan DataGrid kontrol, dan menetapkan yang ReadOnly properti untuk Benar.
  3. Menempatkan kontrol tambahan berikut pada Form1, dan mengatur sifat-sifat mereka seperti yang ditunjukkan di bawah ini:
    Perkecil tabel iniPerbesar tabel ini
    KontrolNama propertiTeks properti
    TombolbtnFirstPageHalaman pertama
    TombolbtnNextPageHalaman berikutnya
    TextBoxtxtDisplayPageNo
    TombolbtnPreviousPageHalaman sebelumnya
    TombolbtnLastPageHalaman terakhir
    TextBoxtxtPageSize5
    TombolbtnFillGridMengisi Grid

  4. Copy dan paste kode berikut ke Form1's umum Deklarasi bagian:
    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
    					
  5. Copy dan paste kode berikut sebelum wilayah ini "Windows Form Designer dihasilkan kode" yang menyatakan level format variabel untuk Form1:
        Private da As SqlDataAdapter
        Private ds As DataSet
        Private dtSource As DataTable
        Private PageCount As Integer
        Private maxRec As Integer
        Private pageSize As Integer
        Private currentPage As Integer
        Private recNo As Integer
    					
  6. Menghapus kode dihasilkan otomatis berikut untuk Beban acara Form1.
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _
      Handles MyBase.Load
    
    End Sub
    					
  7. Copy dan paste kode berikut Setelah region "Windows Form Designer dihasilkan kode":
    Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
    
        'Open Connection.
        Dim conn As SqlConnection = New SqlConnection( _ 
    "Server=(local)\netsdk;uid=sa;pwd=;database=northwind")
    
        'Set the DataAdapter's query.
        da = New SqlDataAdapter("select * from customers", conn)
        ds = New DataSet()
    
        ' Fill the DataSet.
        da.Fill(ds, "customers")
    
        ' Set the source table.
        dtSource = ds.Tables("customers")
    
    End Sub
    
    Private Sub btnNextPage_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnNextPage.Click
    
        'If the user did not click the "Fill Grid" button then Return
        If Not CheckFillButton() Then Return
    
        'Check if the user clicked the "Fill Grid" button.
        If pageSize = 0 Then
            MessageBox.Show("Set the Page Size, and then click the ""Fill Grid"" button!")
            Return
        End If
    
        currentPage = currentPage + 1
    
        If currentPage > PageCount Then
            currentPage = PageCount
    
            'Check if you are already at the last page.
            If recNo = maxRec Then
                MessageBox.Show("You are at the Last Page!")
                Return
            End If
        End If
    
        LoadPage()
    End Sub
    
    Private Sub btnPreviousPage_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnPreviousPage.Click
    
        If Not CheckFillButton() Then Return
    
        If currentPage = PageCount Then
            recNo = pageSize * (currentPage - 2)
        End If
    
        currentPage = currentPage - 1
    
        'Check if you are already at the first page.
        If currentPage < 1 Then
            MessageBox.Show("You are at the First Page!")
            currentPage = 1
            Return
        Else
            recNo = pageSize * (currentPage - 1)
        End If
    
        LoadPage()
    End Sub
    
    Private Sub LoadPage()
        Dim i As Integer
        Dim startRec As Integer
        Dim endRec As Integer
        Dim dtTemp As DataTable
        Dim dr As DataRow
    
        'Duplicate or clone the source table to create the temporary table.
        dtTemp = dtSource.Clone
    
        If currentPage = PageCount Then
            endRec = maxRec
        Else
            endRec = pageSize * currentPage
        End If
    
        startRec = recNo
    
        'Copy the rows from the source table to fill the temporary table.
        For i = startRec To endRec - 1
            dtTemp.ImportRow(dtSource.Rows(i))
            recNo = recNo + 1
        Next
    
        DataGrid1.DataSource = dtTemp
        DisplayPageInfo()
    
    End Sub
    
    Private Sub btnFirstPage_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnFirstPage.Click
    
        If Not CheckFillButton() Then Return
    
        ' Check if you are already at the first page.
        If currentPage = 1 Then
            MessageBox.Show("You are at the First Page!")
            Return
        End If
    
        currentPage = 1
        recNo = 0
    
        LoadPage()
    
    End Sub
    
    Private Sub btnLastPage_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnLastPage.Click
    
        If Not CheckFillButton() Then Return
    
        ' Check if you are already at the last page.
        If recNo = maxRec Then
            MessageBox.Show("You are at the Last Page!")
            Return
        End If
    
        currentPage = PageCount
    
        recNo = pageSize * (currentPage - 1)
    
        LoadPage()
    
    End Sub
    
    Private Sub DisplayPageInfo()
        txtDisplayPageNo.Text = "Page " & currentPage.ToString & "/ " & PageCount.ToString
    End Sub
    
    Private Sub btnFillGrid_Click(ByVal sender As System.Object, _ 
        ByVal e As System.EventArgs) Handles btnFillGrid.Click
    
        'Set the start and max records. 
        pageSize = txtPageSize.Text
        maxRec = dtSource.Rows.Count
        PageCount = maxRec \ pageSize
    
        ' Adjust the page number if the last page contains a partial page.
        If (maxRec Mod pageSize) > 0 Then
            PageCount = PageCount + 1
        End If
    
        'Initial seeings
        currentPage = 1
        recNo = 0
    
        ' Display the content of the current page.
        LoadPage()
    
    End Sub
    
    Private Function CheckFillButton() As Boolean
    
        'Check if the user clicks the "Fill Grid" button.
        If pageSize = 0 Then
            MessageBox.Show("Set the Page Size, and then click the ""Fill Grid"" button!")
            CheckFillButton = False
        Else
            CheckFillButton = True
        End If
    End Function
    					
  8. Memodifikasi ConnectionString parameter dalam kode jadi itu poin untuk contoh yang ada Northwind database.
  9. Tekan tombol F5 untuk membangun dan menjalankan proyek.
  10. Secara default, ukuran halaman diatur ke 5 Catatan, sehingga Anda dapat perubahan dalam kotak teks.
  11. Klik Mengisi Grid. Perhatikan bahwa Grid diisi dengan 5 records.
  12. Klik Halaman pertama, Halaman berikutnya, Halaman sebelumnya, dan Halaman terakhir untuk menelusuri antara halaman.

Pemecahan Masalah

  • Teknik ini hanya bekerja untuk hanya-baca DataGrid kontrol. Ketika Anda mengimpor berturut-turut untuk sementara DataTable objek, Anda membuat salinan. Dengan demikian, perubahan yang Anda buat tidak akan disimpan ke meja utama.
  • Teknik ini tidak bekerja (dan juga tidak koleksi atau sebuah array) jika Anda ingin agar pengguna dapat menavigasi ke anak records melalui DataRelation objek atau jika Anda memiliki catatan yang terkait di orangtua-anak hubungan yang muncul pada formulir pada waktu yang sama.

REFERENSI

Untuk informasi lebih lanjut tentang ADO.NET, melihat MSDN berikut Situs web:
Mengakses Data dengan ADO.NET
.aspx http://msdn2.Microsoft.com/en-us/library/e80y5yhx (vs.71) (http://msdn2.microsoft.com/en-us/library/e80y5yhx(vs.71).aspx)
Untuk selengkapnya, lihat Microsoft.NET Framework SDK Dokumentasi:
.NET Framework SDK
.aspx http://msdn2.Microsoft.com/en-us/library/aa719465 (VS.71) (http://msdn2.microsoft.com/en-us/library/aa719465(VS.71).aspx)

Berlaku bagi:
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kata kunci: 
kbdatabinding kbhowtomaster kbwindowsforms kbmt KB305271 KbMtid
Penerjemahan MesinPenerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:305271  (http://support.microsoft.com/kb/305271/en-us/ )