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; }
}
}
Deine List<T> implementiert die benötigte Schnittstelle (IBindingListView) nicht (siehe BindingSource.Filter MSDN (Remarks))
ich frage mal ganz dreisst; Wie ändere ich das denn?
Danke vorab für Deine Antwort.
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
Alternativ kannst Du einfach auch via Linq Filtern
Siehe DataTable Filtern mit String-Verkettungen ?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code