Entwickler-Ecke
WinForms - DataGridView inhalte filtern
yndaso - Do 22.04.10 12:06
Titel: DataGridView inhalte filtern
Hallo zusammen,
ich habe in meiner Anwendung ein DataSet mit mehreren Tabellen.
Aus diesem DataSet soll eine Tabelle in einem DataGridView angezeigt werden.
Soweit so gut, nun muss es möglich sein, in einer Textbox Werte einzugeben, nach
denen das DataGridView "gefiltert" werden soll.
Beispiel: In der TextBox gibt der Benutzer ein "A" ein -> Es sollen nur noch
Werte angezeigt werden, die mit A anfangen.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| DGV: Name | Nummer | Preis Auto | 0815 | 10000 Flugzeug | 4711 | 20000 Schiff | 007 | 15000 ....
Nun wird "A" in die Textbox eingetippt, anschließend soll nur noch folgendes erscheinen: DGV: Name | Nummer | Preis Auto | 0815 | 10000 |
Ich hoffe das ich mich verständlich genug ausgedrückt habe.
Könnt ihr mir sagen, wie ich das DataGridView am besten "abspecke"?
Wie realisiert man dies am besten?
Vielen Dank
danielf - Do 22.04.10 12:47
Hallo,
das kannst du einfach mit einer BindingSource realisieren.
Dazu weißt du deine DataTable einer BindingSource hinzu und dieBindingSource wiederum deinen DGV:
C#-Quelltext
1: 2: 3:
| bs = new BindingSource(); bs.DataSource = table; dataGridView1.DataSource = bs; |
Wenn nun Text in deiner TExtbox eingegeben wird kannst du auf die BindingSource einen Filter setzen:
C#-Quelltext
1:
| bs.Filter = string.Format("Name like '{0}%'", textBoxName.Text"); |
Gruß
Edit:
Ich verwende als eine spezifische FilterDataGrid-Klasse. Dann kann man ein einfaches DataBinding an irgendwelche Contorls (z.b. TextBox) machen. Die Properties werfen dann ähnlich wie bei WPF ein PropertyChanged-Event, auf welches man dann den Filter neu setzen kann. Aber kannst ja mal schauen wie weit du so kommst.
yndaso - Do 22.04.10 19:58
Danke für die ausführliche Antwort!
Ich werde das morgen früh gleich mal probieren und mich
gegebenenfalls nochmals melden :-)
yndaso - Fr 23.04.10 07:06
Guten Morgen,
das klappt schonmal sehr gut.
Ist es möglich den Filter ein bisschen anzupassen?
Momentan wird ja von Position "0" an im String gefilter.
Ich würde aber gerne nach einer Zeichenfolge filtern...
Ich versuchs nochmal mit einem Beispiel anhand Materialnummern zu erklären:
R036027001
R036347264
R116067004
R116067007
R114067030
R114067037
TextBox Eingabe = "360" soll dann nur noch folgender Wert angezeigt werden: R036027001
Momentan müssste man ja "R0360" eingeben...
Kha - Fr 23.04.10 11:44
yndaso hat folgendes geschrieben : |
Ist es möglich den Filter ein bisschen anzupassen? |
Ja.
Hast du dir die Hilfe zu
Filter überhaupt schon einmal angeschaut?
JüTho - Fr 23.04.10 11:52
Falls nicht: Einzelheiten stehen unter DataColumn.Expression (das ist leider nur über einige Links zu finden). Jürgen
mo0n_ - Di 24.01.12 17:53
Für alle nicht Genies hier,
C#-Quelltext
1:
| [DeineTable]BindingSource.Filter=string.Format("[DeinFeldname] like '%"+[DeineTextBox.Text]+"%'"); |
Die % Zeichen sagen deinem DVG, dass es sich nicht um einen zu suchenden Begriff, sondern um eine zu suchende Zeichenfolge mitten im Text handelt.
liebe Grüße mo0n_
Moderiert von
Th69: C#-Tags hinzugefügt
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!