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

VB - ADO.NET , Posted at : Feb/08/2007   [Click this link to download code sample]
7586 Views   6 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...


[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)"


[Write your comment]
Name (required)
Email (required-will not published)
 
Comment

46az
Input code above below (Case Sensitive) :
About Me 
Rully Yulian MF
My Name is Rully Yulian Muhammad Firmansyah. I am an IT Trainer, IT Consultant and Application Developer spesializing in Microsoft .NET technology and SQL Server database. I live in Bandung, Indonesia. My hobby is to play Guitar. [Read More...]
Top Download 
Bagaimana caranya menginstal database ketika deploying sebuah aplikasi? : Downloaded 4194 times  
Mapping Hak Akses User Pada MenuStrip Sampai Control Button : Downloaded 4098 times  
Change Group,Sort Order, Filtering By Date in Crystal Reports : Downloaded 2997 times  
Simple Voice Engine Application With Sound Player Class... : Downloaded 2751 times  
WinForms DataGrid Paging With SqlDataAdapter : Downloaded 2266 times  
Article Category 
Links 
Award 
Certifications 
MOS 2007
MCAS
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench
Native Enterprise 
Follow Me 
Facebook   LinkedIn   Twitter
Syndication 
Hosted By 
Native Enterprise News