Anda tidak dapat mengurut, menfilter data yang terdapat pada DataTable, untuk melakukan hal tersebut anda membutuhkan DataView.
Dengan menggunakan DataView, anda dapat mengurut, menfilter dan mencari data berdasarkan sort key. Karena kemampuan tersebut, biasanya DataView digunakan pada aplikasi yang membutuhkan data binding.
Dengan menggunakan DataView, anda dapat mengurut, menfilter dan mencari data berdasarkan sort key. Karena kemampuan tersebut, biasanya DataView digunakan pada aplikasi yang membutuhkan data binding.
Membuat DataView
Misalnya anda telah memiliki DataTable "barang" yang berada dalam DataSet ODS, maka anda dapat menggunakan penulisan berikut untuk membentuk DataView dari DataTable tersebut :Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Buat Connection OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") sSQL = "Select * From Barang" 'Buat Select Command untuk DataAdapter OledbComm = New OleDbCommand(sSQL, OledbConn) OledbComm.CommandType = CommandType.Text 'Buat DataAdapter OleDA = New OleDbDataAdapter(OledbComm) 'Isi Data ke DataSet sebagai DataTable barang OleDA.Fill(ODS, "Barang") 'Buat DataView dari DataTable barang ODV = New DataView(ODS.Tables("Barang")) 'Ikat DataView sebagai DataSource DataGrid DataGrid1.DataSource = ODV End Sub
Melakukan Filter
Misalkan txtFilter adalah sebuah textbox yang berisi ekspresi untuk filter, maka penulisan berikut untuk melakukan filter pada object DataViewODV.RowFilter = txtFilter.Text
Melakukan Sort
Misalkan kita ingin melakukan sort terhadap kolom KodeBar, maka penulisan berikut untuk melakukan hal tersebutODV.Sort = "KodeBar ASC"
Melakukan Find
Misalkan kita ingin mencari data pada kolom yang di Sort berdasarkan isi textbox txtFind, maka dapat menggunakan penulisan :Row = ODV.Find(txtFind.Text)
Dalam hal ini variabel Row akan berisi nomor baris hasil Find, atau -1 kalau tidak ditemukan.Program Kongkrit
Imports System.data.OleDb Public Class Form1 Inherits System.Windows.Forms.Form Dim OledbConn As OleDbConnection Dim OledbComm As OleDbCommand Dim sSQL As String Dim OleDA As OleDbDataAdapter Dim ODS As New DataSet Dim ODV As New DataView Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Buat Connection OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;") sSQL = "Select * From Barang" 'Buat Select Command untuk DataAdapter OledbComm = New OleDbCommand(sSQL, OledbConn) OledbComm.CommandType = CommandType.Text 'Buat DataAdapter OleDA = New OleDbDataAdapter(OledbComm) 'Isi Data ke DataSet sebagai DataTable barang OleDA.Fill(ODS, "Barang") 'Buat DataView dari DataTable barang ODV = New DataView(ODS.Tables("Barang")) 'Ikat DataView sebagai DataSource DataGrid DataGrid1.DataSource = ODV End Sub Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed Dim OCommBuilder As OleDbCommandBuilder DataGrid1.Update() OCommBuilder = New OleDbCommandBuilder(OleDA) OleDA.Update(ODS, "Barang") ODS.Dispose() OledbConn.Close() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSortKode.Click ODV.Sort = "KodeBar DESC" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSortKeterangan.Click ODV.Sort = "Keterangan" End Sub Private Sub cmdFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFilter.Click Try ODV.RowFilter = txtFilter.Text Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub cmdFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFind.Click Dim Row As Integer Try Row = ODV.Find(txtFind.Text) If Row = -1 Then MsgBox("Tidak ketemu") Else Me.BindingContext(ODV).Position = Row End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub End Class
Tidak ada komentar :
Posting Komentar