Laden...

Filterung vom DataGridView über alle Felder

Erstellt von baseLine vor 4 Jahren Letzter Beitrag vor 4 Jahren 789 Views
B
baseLine Themenstarter:in
7 Beiträge seit 2017
vor 4 Jahren
Filterung vom DataGridView über alle Felder

Hallo Gemeinde,

ich fülle ein DGV mit einem Json.. Danach möchte ich einfach mit Hilfe einer Textbox frei im DGV suchen. Als Test wollte ich erstmal in der ersten Spalte ("name") suchen, wobei das später auf alle Spalten erweitert werden soll...

Hier mein Code, der leider so nicht funktioniert. Kann mir jemand sagen wo der Denkfehler liegt?


using System.Collections.Generic;
using System.Windows.Forms;

namespace Filterungstest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            List<Person> Personen = new List<Person>();

            Personen.Add(new Person { name = "Name1", vorname = "Vorname1" });
            Personen.Add(new Person { name = "Name2", vorname = "Vorname2" });
            Personen.Add(new Person { name = "Name3", vorname = "Vorname3" });
            Personen.Add(new Person { name = "Name4", vorname = "Vorname4" });
            Personen.Add(new Person { name = "Name5", vorname = "Vorname5" });

            personBindingSource.DataSource = Personen;
            string filterField = "name";
            personBindingSource.Filter = string.Format("[{0}] LIKE '%{1}%'", filterField, "Name1");

            dataGridView1.Refresh();

        }
    }

    class Person
    {
        public string name { get; set; }
        public string vorname { get; set; }
    }
}


D
261 Beiträge seit 2015
vor 4 Jahren

Deine List<T> implementiert die benötigte Schnittstelle (IBindingListView) nicht (siehe BindingSource.Filter MSDN (Remarks))

B
baseLine Themenstarter:in
7 Beiträge seit 2017
vor 4 Jahren

ich frage mal ganz dreisst; Wie ändere ich das denn?

Danke vorab für Deine Antwort.

D
261 Beiträge seit 2015
vor 4 Jahren

Du erstellst eine eigene Listen-Klasse die das Interface implementiert oder du greifst auf vorhandene Implementierungen zurück.

Es gibt wohl mind. ein NuGet Paket das du benutzen könntest und hier ist eine sehr alte Beispiel-Implementierung von Microsoft dazu: https://www.microsoft.com/en-us/download/confirmation.aspx?id=17914

16.842 Beiträge seit 2008
vor 4 Jahren

Alternativ kannst Du einfach auch via Linq Filtern
Siehe DataTable Filtern mit String-Verkettungen ?