Bagaimana caranya melakukan paging record pada DataGrid Winforms dengan DataAdapter...

Posted at : Feb/08/2007
15382 Views | 8 Comments

Kalau kita menggunakan DataGrid control yang terdapat di dalam asp.net maka untuk melakukan paging merupakan hal yang mudah. Tetapi bagaimana caranya hal tersebut dapat kita lakukan pada DataGrid Winforms control? Sebenarnya mudah juga sih   Contoh paging ini menggunakan SqlDataAdapter dengan memanfaatkan Overload method yang dimiliki oleh SqlDataAdapter yaitu Fill method. Pada overload method Fill terdapat pilihan untuk passing parameter berupa start record index yang digunakan untuk menentukan pada record ke berapa kita akan ambil datanya dan paramater max record untuk membatasi jumlah record yang akan ditampilkan dari start record indexnya.

Code dibawah ini dapat digunakan untuk VB.Net versi 2001 s/d 2005, tetapi untuk contohnya saya gunakan versi 2005...Nah kalau anda menggunakan VS versi 2005 maka secara default SQLDataAdapter tidak nampak di Toolboxnya...Anda harus menambahkannya secara manual, yaitu : Klik kanan toolboxnya kemudian pilih Choose Items...Nah di tab .net fx component anda cari SQLDataAdapter...

Sekarang lakukan langkah-langkah berikut ini :
1. Anda buat sebuah windows application project template
2. Tambahkan control textbox, numericupdown, button, gridview, label :


3. Tambahkan kode seperti dibawah ini :

   1:  Imports System.Data.SqlClient
   2:   
   3:  Public Class Form1
   4:   
   5:      '//deklarasi variables:
   6:      Private intStartRec, intRecPerPage, intTotalRec As Integer
   7:   
   8:      '//fungsi untuk menghitung jumlah record 
   9:      '//yg ada di tabel customers (Northwind)
  10:      Private Function GetTotalRecord() As Integer
  11:          Using sqlCmd As New SqlCommand
  12:              Using sqlConn As New SqlConnection _
  13:              ("Database=Northwind;Server=localhost;" & _
  14:              "Integrated Security=SSPI")
  15:   
  16:                  sqlCmd.CommandType = CommandType.Text
  17:                  sqlCmd.Connection = sqlConn
  18:                  sqlCmd.CommandText = _
  19:                  "Select Count(*) From Customers"
  20:   
  21:                  If sqlConn.State <> ConnectionState.Open _
  22:                  Then sqlConn.Open()
  23:   
  24:                  intTotalRec = Convert.ToInt32( _
  25:                  sqlCmd.ExecuteScalar)
  26:   
  27:                  Return intTotalRec
  28:              End Using
  29:          End Using
  30:      End Function
  31:   
  32:      '//prosedur untuk mengambil data dari tabel (Customers) 
  33:      '//yang ada di database Northwind. 
  34:      '//Di prosedur inilah paging record dilakukan 
  35:      '//dengan memanfaatkan overload method Fill 
  36:      '//yang dimiliki oleh SqlDataAdapter...sederhana bukan ??
  37:      Private Sub GetData(ByVal startRecord As Integer, _
  38:      ByVal maxRecord As Integer)
  39:          Using sqlConn As New SqlConnection _
  40:          ("Database=Northwind;Server=localhost;" & _
  41:          "Integrated Security=SSPI")
  42:              Using sqlDa As New SqlDataAdapter _
  43:              ("Select CustomerID,CompanyName From Customers", _
  44:              sqlConn)
  45:   
  46:                  Dim dsCustomers As New DataSet
  47:   
  48:                  sqlDa.Fill(dsCustomers, startRecord, _
  49:                  maxRecord, "dtCustomers")
  50:   
  51:                  DataGridView1.DataSource = _
  52:                  dsCustomers.Tables("dtCustomers")
  53:   
  54:              End Using
  55:          End Using
  56:      End Sub
  57:   
  58:      '//prosedur untuk menampilkan status record index :
  59:      Private Sub SetRecordLabel()
  60:          Label2.Text = "Start Index Record : " + _
  61:          intStartRec.ToString + _
  62:          " From total record : " + intTotalRec.ToString
  63:      End Sub
  64:   
  65:      '//prosedur event handler Form Load : 
  66:      Private Sub Form1_Load(ByVal sender As System.Object, _
  67:      ByVal e As System.EventArgs) Handles MyBase.Load
  68:          '//jumlah record per page
  69:          intRecPerPage = NumericUpDown1.Value
  70:   
  71:          '//index record awal
  72:          intStartRec = 0
  73:   
  74:          GetData(intStartRec, intRecPerPage)
  75:          intTotalRec = GetTotalRecord()
  76:          SetRecordLabel()
  77:      End Sub
  78:   
  79:      '//prosedur untuk melakukan navigasi record. 
  80:      '//Jumlah record per page ditentukan
  81:      '// dari nilai numericupdown yang di set user.  
  82:      '//Disini numericupdownya saya set min value nya ke 1 :
  83:      Private Sub btnFirst_Click(ByVal sender As System.Object, _
  84:      ByVal e As System.EventArgs) Handles btnFirst.Click
  85:          intRecPerPage = NumericUpDown1.Value
  86:          intStartRec = 0
  87:          GetData(intStartRec, intRecPerPage)
  88:          SetRecordLabel()
  89:      End Sub
  90:   
  91:      '//prosedur untuk melakukan navigasi record :
  92:      Private Sub btnPrevious_Click(ByVal sender As System.Object, _
  93:      ByVal e As System.EventArgs) Handles btnPrevious.Click
  94:          intRecPerPage = NumericUpDown1.Value
  95:          intStartRec -= intRecPerPage
  96:          'cek jika start index recordnya < 0
  97:          'maka berarti recordnya sudah tidak ada lagi
  98:          '(stop Previous!)
  99:          If intStartRec >= 0 Then
 100:              GetData(intStartRec, intRecPerPage)
 101:              SetRecordLabel()
 102:          Else
 103:              'reset kembali start record indexnya
 104:              intStartRec += intRecPerPage
 105:          End If
 106:      End Sub
 107:   
 108:      '//prosedur untuk melakukan navigasi record :
 109:      Private Sub btnNext_Click(ByVal sender As System.Object, _
 110:      ByVal e As System.EventArgs) Handles btnNext.Click
 111:          intRecPerPage = NumericUpDown1.Value
 112:          intStartRec += intRecPerPage
 113:          'cek jika start index recordnya sama dengan 
 114:          'jumlah record total atau
 115:          'lebih besar dari total record
 116:          'maka berarti recordnya sudah tidak ada lagi(stop Next!)
 117:          If intStartRec < GetTotalRecord() Then
 118:              GetData(intStartRec, intRecPerPage)
 119:              SetRecordLabel()
 120:          Else
 121:              'reset kembali start record indexnya
 122:              intStartRec -= intRecPerPage
 123:          End If
 124:      End Sub
 125:   
 126:      '//prosedur untuk melakukan navigasi record :
 127:      Private Sub btnLast_Click(ByVal sender As System.Object, _
 128:      ByVal e As System.EventArgs) Handles btnLast.Click
 129:          intRecPerPage = NumericUpDown1.Value
 130:          intTotalRec = GetTotalRecord()
 131:          intStartRec = intTotalRec - intRecPerPage
 132:          GetData(intStartRec, intRecPerPage)
 133:          SetRecordLabel()
 134:      End Sub
 135:   
 136:  End Class
 137:   

Here is the screen shot :

Ok...Selamat mencoba...


InfoEbook-ebook yang tersedia yang dapat dipesan secara langsung atau melalui google play store.



[Comments]

Muhamad Iqbal (Jun/11/2009 04:56:23)
Yang dicontonkan itukan untuk VB.net yah?, tapi kalo yg untuk VB6... gimana?
Muhamad Iqbal (Jun/11/2009 06:24:01)
Yang dicontonkan itukan untuk VB.net yah?, tapi kalo yg untuk VB6... gimana?
Rully (Jun/11/2009 07:19:45)
Betul mas iqbal :) untuk vb6 tentunya sangat berbeda sekali,kebetulan saya sudah lama tidak pegang vb6 lagi,jadi contoh artikel yang saya buat tidak ada.
Nesco (Jan/18/2011 02:07:34)

Tq Bro Lancar Neh ahahah gw butuh bgt ud gw canibal codenya mantap.... :D ahahahha tq2

Rully (Jan/18/2011 04:13:28)

Nesco > Ok...sama-sama :)

theaa (Jul/17/2013 12:57:11)

 punya ane eror gini gan "A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)"

imam (Oct/27/2014 01:44:08)

 mas cara bikin even click di gridview supaya tampil di label , pada program web aspx gimana caranya ......!!1

Edwin (Jul/18/2017 05:09:36)

 Maksud dari dtcustomers itu gimana ya??

Mohon bantuannya

Terimakasih


[Write your comment]

Name (required)

Email (required-will not published)

 
Comment
SFCV
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6982 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.