İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. SDN Forum
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

VB.NET DataGrid Filtreleme

blazedanger3516.04.201212 cevap8.190 görüntüleme
#1
Merhabalar , vb.net te datagrid de visual studio içerisinden query ekleyip filtreleyebiliyorum.

Fakat bu işlemi kodla yapamıyorum , nerede yanlış yapıyorum ?

Videoyu izleyerek yaptığım fakat kod ile yapamadığım video.

http://www.youtube.com/watch?v=6Z3E2mHVo24&feature=plcp&context=C4c16bf4VDvjVQa1PpcFNwgKCAEwdbMkjlLr1d96shsSWO9HmFWNg=

Pek bi kod yazmadan yaptığım ve sorunsuz çalışan :
Private Sub ara_TextChanged(sender As System.Object, e As System.EventArgs) Handles ara.TextChanged        If rboyuncu.Checked = True Then
            Try
                Me.ListeTableAdapter.FillByOyuncu(Me.VeritabaniDataSet.Liste, ara.Text)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
        ElseIf rbfilm.Checked = True Then


            Try
                Me.ListeTableAdapter.FillByFilm(Me.VeritabaniDataSet.Liste, ara.Text)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
        ElseIf rbtur.Checked = True Then
            Try
                Me.ListeTableAdapter.FillByTur(Me.VeritabaniDataSet.Liste, ara.Text)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
        ElseIf rbdil.Checked = True Then
            Try
                Me.ListeTableAdapter.FillByDil(Me.VeritabaniDataSet.Liste, ara.Text)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
        ElseIf rbyonetmen.Checked = True Then
            Try
                Me.ListeTableAdapter.FillByYonetmen(Me.VeritabaniDataSet.Liste, ara.Text)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
        End If
    End Sub


Kod yazıp yapamadığım , çalışmayan kod :

Imports System.Data.OleDbPublic Class FilmListe
    Dim sqlliste As String = "select * from Liste"


    Private Sub FilmListe_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        baglan.Open()
        Dim da As New OleDbDataAdapter(sqlliste, baglan)
        Dim ds As New DataSet
        da.Fill(ds, "Liste")
        ListeBindingSource.DataSource = ds
        ListeBindingSource.DataMember = "Liste"
        ListeGrid.DataSource = ListeBindingSource
        baglan.Close()
    End Sub


    Private Sub ara_TextChanged(sender As System.Object, e As System.EventArgs) Handles ara.TextChanged
        Try
            baglan.Open()
            sqlliste += " where (Film like '" & ara.Text & "%')"
            Dim da As New OleDbDataAdapter(sqlliste, baglan)
            Dim ds As New DataSet
            da.Fill(ds, "Liste")
            ListeBindingSource.DataSource = ds
            ListeBindingSource.DataMember = "Liste"
            ListeGrid.DataSource = ListeBindingSource
            baglan.Close()
        Catch ex As Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class
Cevaplar
#2
VB.Net bilgim yok, bu yüzden yardımcı olamayacağım bu kodun için. Yinede belirtmek istedim.

Filtreleme işlemleri için RowFilter kullanman performans açısından açısından daha yararlı olacaktır. Senin yaptığın şekilde her seferinde DB ye bağlanıp sorgu yapacak. Fakat RowFilter grid üzerinde anlık filtreleme yapacaktır.

Dim dv As New DataView(ds)
dv.RowFilter = string.Format("Film like '{0}%'", ara.Text)
blazedanger35 Konuyu açan
#3
Value of type 'System.Data.DataSet' cannot be converted to 'System.Data.DataTable'.

hatası veriyor hocam.

--- Mesaj Güncellendi ---

Dim dv As New DataView(ds) yerine Dim dv As New DataView(dt) yazdım o da olmadı.

#4
VB.Net bilmiyorum sadece yardım etmek için çabalıyorum bilgin olsun. :D

Dim dt As DataTable = ds.Tables(0)
Dim dv As New DataView(dt)
dv.RowFilter = string.Format("Film like '{0}%'", ara.Text)

diye denermisin
blazedanger35 Konuyu açan
#5
yok hocam hiç bir değişiklik :D
hata yok ama çalışan birşey yok :D

--- Mesaj Güncellendi ---

çok teşekkür ederim artık yatma zamanı , sabah oldu :D
#6
Gündüz bilen biri yardım edecektir mutlaka. Kusura bakma yardımcı olamadım. :D
blazedanger35 Konuyu açan
#7
Estağfurullah :D , çok çok teşekkür ederim ben :D

--- Mesaj Güncellendi ---

ara textbox'ın text changed olayına şunu yazdım ve oldu.

ListeBindingSource.Filter = String.Format("Film Like '" & ara.Text) & "*'"

saatlerdir şunun için uğraşıyordum.

--- Mesaj Güncellendi ---

film , tür , dil de çalışıyor fakat oyuncu ve yönetmende yine uğraşıcam gibi , iyi geceler.
#8
Bu Örneği bir inceler misin?

Private Const SELECT_STRING As String = _ "SELECT * FROM Contacts ORDER BY LastName, FirstName"
Private Const CONNECT_STRING As String = _ "Data Source=Bender\NETSDK;Initial " & _ "Catalog=Contacts;User Id=sa"
' The DataSet that holds the data.

Private m_DataSet As DataSet' Load the data.

Private Sub Form1_Load(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles MyBase.Load

Dim data_adapter As SqlDataAdapter

' Create the SqlDataAdapter.

data_adapter = New SqlDataAdapter(SELECT_STRING, _ CONNECT_STRING)

' Map Table to Contacts.
data_adapter.TableMappings.Add("Table", "Contacts")

' Fill the DataSet.
m_DataSet = New DataSet()
data_adapter.Fill(m_DataSet)

' Bind the DataGrid control to the Contacts DataTable.
dgContacts.SetDataBinding(m_DataSet, "Contacts")

End Sub
#9
blazedanger35

Bi' de şöyle dene:

...
"Film Like '" & ara.Text & "*' OR " &
"Yonetmen Like '" & ara.Text & "*' OR " &
"Oyuncu Like '" & ara.Text & "*'"
...
#10
blazedanger35 dedi: ↑
Estağfurullah :D , çok çok teşekkür ederim ben :D

--- Mesaj Güncellendi ---

ara textbox'ın text changed olayına şunu yazdım ve oldu.

ListeBindingSource.Filter = String.Format("Film Like '" & ara.Text) & "*'"

saatlerdir şunun için uğraşıyordum.

--- Mesaj Güncellendi ---

film , tür , dil de çalışıyor fakat oyuncu ve yönetmende yine uğraşıcam gibi , iyi geceler.
Boşuna o kadar uğraşmışsın internette bir dolu örnek var benim kullandığım en kullanışlı basit yöntemi yazıyorum sana çok güzel sorunsuz çalışıyor

Imports System.Data.OleDb

Public Class Form1
    Dim cn As New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data Source=" & Application.StartupPath & "\nisa4.mdb")
    Dim ds As New DataSet
    Dim sanalCTablo As DataView

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        cariyenile()
        Me.DataGridView1.DataSource = sanalCTablo
    End Sub

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
        If Me.TextBox1.Text = "" Then
            sanalCTablo.RowFilter = ""
        Else
            sanalCTablo.RowFilter = "yetk02 LIKE '" & "*" & Me.TextBox1.Text & "*" & "'"
            ' Herhangi bir harfe göre filtreleme stringi=   "yetk02 LIKE '" & "*" & Me.TextBox1.Text & "*" & "'"
            ' İlk harfe göre filtreleme stringi         =     "yetk02 LIKE '" & Me.TextBox1.Text & "*" & "'"
            ' yetk02 sütunun adıdır sen hangi sütunda filtreleme yapacaksan o sütunun adını yaz
            ' İki sütunu birden filtreleme aynı anda=  sanalCTablo.RowFilter = String.Format("adi like '*{0}*' OR soyadi like '*{1}*'", Me.TextBox1.Text, Me.TextBox2.Text)

End If
     End Sub

Sub cariyenile()
        Dim adp As New OleDbDataAdapter
        Dim cmd As OleDbCommand
        If (cn.State = ConnectionState.Closed) Then cn.Open()
        ds.Clear()
        sanalCTablo = Nothing
        cmd = New OleDbCommand("Select * from cari", cn)
        adp.SelectCommand = cmd
        adp.Fill(ds, "cari")
        Dim Sütun1(0) As DataColumn
        Sütun1(0) = ds.Tables("cari").Columns("carino")
        ds.Tables("cari").PrimaryKey = Sütun1
        adp.Dispose()
        cmd.Dispose()
        cn.Close()
        sanalCTablo = ds.Tables("cari").DefaultView
        sanalCTablo.AllowNew = True
        sanalCTablo.AllowDelete = True
        sanalCTablo.AllowEdit = True
    End Sub
End Class
blazedanger35 Konuyu açan
#11
http://dl.dropbox.com/u/11820177/AykutKOD.7z buyrun , vatansever , teşekkürler , kendi bilgisayarıma geçince kodu deniyeceğim.

linkte program , veritabanı var , şifre admin admin , veritabanı şifresi aykut.

film - film oyuncu - oyuncu tabloları var.
Misafir
#12
üstat kodunu kullandım kod önce çalışıyordu şimdi Additional information: Nesne başvurusu bir nesnenin örneğine ayarlanmadı.
hatası veriyor ne yapabilirim
#13
Tamam verdiğim kodu kullanarak bir proje hazırladım indirip kontrol edebilirsiniz
Proje lingi
http://www.mediafire.com/?8v95eokyzmrytbf

:clover:

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.