Ungebundenes Datagridview filtern

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Goof.

    Ungebundenes Datagridview filtern

    Hallo zusammen,

    wie kann ich ein ungebundenes Datagridview z.B. nach Nachname filtern?

    Befüllt wird es so:

    Quellcode

    1. ' start outlook
    2. Dim outlookApplication = New Outlook.Application()
    3. ' enum contacts
    4. Dim index As Integer
    5. Dim contactFolder As Outlook.MAPIFolder = outlookApplication.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts)
    6. For Each item As COMObject In contactFolder.Items
    7. If (TypeName(item) = "ContactItem") Then
    8. index += 1
    9. DataGridView1.ColumnCount = 7
    10. DataGridView1.Columns(0).Name = "ID"
    11. DataGridView1.Columns(1).Name = "Ordner"
    12. DataGridView1.Columns(2).Name = "CompanyAndFullName"
    13. DataGridView1.Columns(3).Name = "Email1Address"
    14. DataGridView1.Columns(4).Name = "FirstName"
    15. DataGridView1.Columns(5).Name = "LastName"
    16. DataGridView1.Columns(6).Name = "Initials"
    17. Dim contact As Outlook.ContactItem = item
    18. Dim row As String() = New String() _
    19. {index.ToString(),
    20. contactFolder.Name,
    21. contact.CompanyAndFullName,
    22. contact.Email1Address,
    23. contact.FirstName,
    24. contact.LastName,
    25. contact.Initials}
    26. DataGridView1.Rows.Add(row)
    27. End If
    28. Next
    29. 'close outlook and dispose
    30. outlookApplication.Quit()
    31. outlookApplication.Dispose()



    So geht es leider nicht:

    Quellcode

    1. Dim bs As BindingSource = New BindingSource()
    2. bs.DataSource = DataGridView1.DataSource
    3. bs.Filter = "LastName like '%" & TextBox1.Text & "%'"
    4. DataGridView1.DataSource = bs



    Vielen Dank

    Goof
    Da das DGV keine DataSource hat, sondern manuell mit Daten befüllt wird, kannst Du der BS nicht die DataSource des DGV zuweisen. Ist ja nix da. Dann lieber Deine Daten in ne Klasse packen, die BindingSource daran binden und das DGV an die BindingSource. Sowas hatten wir neulich schon. Oder gleich mit nem tDS arbeiten. Siehe VVV-Tutorial.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Eh ... ist das Problem nun beseitigt? Ich werd da bei Deiner Antwort nicht schlau draus, denn das DGV-an-die-BS-Binden hattest Du doch schon probiert:

    Goof schrieb:

    So geht es leider nicht:

    Quellcode
    Dim bs As BindingSource = New BindingSource()
    bs.DataSource = DataGridView1.DataSource
    bs.Filter = "LastName like '%" & TextBox1.Text & "%'"
    ===> DataGridView1.DataSource = bs <===
    Von daher: Wenn es nun wirklich funktioniert, wie bist Du vorgegangen? Für welche Lösung hast Du Dich entschieden? Die anderen mit ähnlichem Problem wollen es bestimmt auch wissen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Meine Lösung:

    Quellcode

    1. oConn = New SQLiteConnection(CONNECTION_STR)
    2. oConn.Open()
    3. da = New SQLiteDataAdapter("SELECT * FROM Kontakte", oConn)
    4. cmdBuilder = New SQLiteCommandBuilder(da)
    5. dt = New DataTable
    6. da.Fill(dt)
    7. Me.DataGridView1.DataSource = dt