Autor Beitrag
yndaso
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: Do 22.04.10 12:06 
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.
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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:
ausblenden 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:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 108



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 23.04.10 11:44 
user profile iconyndaso hat folgendes geschrieben Zum zitierten Posting springen:
Ist es möglich den Filter ein bisschen anzupassen?
Ja.
Hast du dir die Hilfe zu Filter überhaupt schon einmal angeschaut?

_________________
>λ=
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: 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_
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 50

Win7
C#
BeitragVerfasst: Di 24.01.12 17:53 
Für alle nicht Genies hier,

ausblenden 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 user profile iconTh69: C#-Tags hinzugefügt