| |
VB.NET - Ein- und UmsteigerFilter im DataGridView | | | Autor: stefanbla80 | Datum: 01.04.14 14:11 |
| Hallo zusammen,
aktuell beschäftige ich mich nochmals mit der Filter im DataGridView.
Anbei der Code, mit dem es bisher funktioniert
If ComboBox_Filter.Text = "" Then
Me.PlanningGuideDataBindingSource.Filter = ""
Else
Me.PlanningGuideDataBindingSource.Filter = "PM Like '" & Trim( _
Me.ComboBox_Filter.Text) & "%' OR Designer Like '" & Trim( _
Me.ComboBox_Filter.Text) & "%'"
End If Ich filtere hier die Spalten "PM" und "Designer".
Das Problem ist: Ich habe eine Splate mit dem Namen "Status quotation" - und hier genau der der Filter nicht. Gibt es hier Probleme mit dem Spaltennamen, weil dieser aus zwei Wörtern besteht?!
Ich bekomme es zumindest nicht hin ...
Grüße
Stefan
| |
Re: Filter im DataGridView | | | Autor: Manfred X | Datum: 01.04.14 15:02 |
| Probier mal eckige Klammern um den Spaltennamen .....
| |
Re: Filter im DataGridView | | | Autor: stefanbla80 | Datum: 01.04.14 16:05 |
| Super, Manfred!! Das geht
Vielen Dank | |
Re: Filter im DataGridView | | | Autor: stefanbla80 | Datum: 02.04.14 06:42 |
| Hallo nochmals,
nochmal eine Frage zum Filter - das Thema ist echt undurchsichtig ...
In meinem Tool habe ich zwei Filter:
- Filter 1: Für den User, der über die Spalten "PM" oder "Designer" gefiltert wird.
- Filter 2: Um nach dem Status eines Projektes zu filtern (in Spalte "Status quotation")
Grundlegend geht es darum, Projekte, die abgeschlossen sind (Eintrag in Spalte "Status quotation": "Project finished"), NICHT mehr dargestellt zu bekommen. Rufe ich dann über meine ComboBox_Filter2 den Eintrag "Project finished" auf, dann soll mir das Projekt angezeigt werden - abhängig vom jeweiligen User aus ComboBox_Filter.
Geht das mit den Filtern überhaupt?!
Private Sub ComboBox_Filter_SelectedIndexChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles ComboBox_Filter.SelectedIndexChanged
If Me.PlanningGuideDataDataGridView.RowCount.ToString <> "" Then
Filter()
End If
End Sub
Private Sub ComboBox_Filter2_SelectedIndexChanged(ByVal sender As _
System.Object, ByVal e As System.EventArgs) Handles _
ComboBox_Filter2.SelectedIndexChanged
If Me.PlanningGuideDataDataGridView.RowCount.ToString <> "" Then
Filter2()
End If
End Sub
Public Sub Filter()
On Error Resume Next
If ComboBox_Filter.Text = "" Then
Me.PlanningGuideDataBindingSource.Filter = ""
ComboBox_Filter2.Text = ""
Else
Me.PlanningGuideDataBindingSource.Filter = "PM Like '" & Trim( _
Me.ComboBox_Filter.Text) & "%' OR Designer Like '" & Trim( _
Me.ComboBox_Filter.Text) & "%'"
ComboBox_Filter2.Text = ""
End If
PlanningGuideDataDataGridView.Refresh()
Me.SetCurrentCell()
End Sub
Public Sub Filter2()
On Error Resume Next
If ComboBox_Filter2.Text = "" Then
Me.PlanningGuideDataBindingSource.Filter = ""
Filter()
Else
Me.PlanningGuideDataBindingSource.Filter = "PM Like '" & Trim( _
Me.ComboBox_Filter.Text) & "%' AND [Status quotation] Like '" & _
Me.ComboBox_Filter2.Text & "%'"
End If
PlanningGuideDataDataGridView.Refresh()
Me.SetCurrentCell()
End Sub Grüße
Stefan | |
Re: Filter im DataGridView | | | Autor: Manfred X | Datum: 02.04.14 09:19 |
| Hallo!
Was bedeutet ZWEI Filter ?
Erkläre bitte diese Sätze etwas genauer ....
[I]Grundlegend geht es darum, Projekte, die abgeschlossen sind
(Eintrag in Spalte "Status quotation": "Project finished"),
NICHT mehr dargestellt zu bekommen. Rufe ich dann über meine
ComboBox_Filter2 den Eintrag "Project finished" auf, dann soll mir
das Projekt angezeigt werden - abhängig vom jeweiligen User aus
ComboBox_Filter.[/I]
Ich habe den Eindruck, Du möchtest ZUERST einen Filter und danach
noch einen zweiten zusätzlichen Filter setzen ????
Ich sehe EINE Bindingsource auf die die Controls bezogen werden,
d.h. in dem Fall müssen alle jeweils gültigen Filterbedingungen in EINEM String
zusammengefasst werden. (Vereinige die beiden Filter-Routinen und fasse
die Auswahlen in den Boxen geeignet zusammen.)
"On Error Resume Next" ist übrigens eine zwar veraltete, aber dennoch recht
wirkungsvolle Methode, mit der Du Dich selbst austricksen kannst ...
Beitrag wurde zuletzt am 02.04.14 um 09:39:44 editiert. | |
Re: Filter im DataGridView | | | Autor: stefanbla80 | Datum: 02.04.14 09:47 |
| Hallo Manfred,
Dein Eindruck ist wie immer richtig ...
Ich habe einen Filter (Filter 1), mit dem ich den Arbeitsvorrat eines Users filtere.
Als Beispiel habe ich eine lange Liste von Zeilen/Projekten. Diese unterschiedlichen Projekte werden bestimmten Personen zugewiesen. Jede Person filtert sich also seinen Arbeitsvorrat.
Das geschieht in der Spalte "PM".
Mit dem zweiten Filter möchte ich gerne Zeilen aus und wieder einblenden. Dieser wirkt auf eine andere Spalte als Filter 1 und soll invertierend wirken - also ich möchte standardmäßig meine abgeschlossenen Projekte mir ausblenden ("Project finished") heißt: Projekt ist abgeschlossen und soll gefiltert werden, sodass es nicht mehr sichtbar ist.
Rufe ich dann mit der ComoBox "Project finished" wieder auf, soll das Projekt/die Zeile wieder sichtbar sein. Geht das mit "unlike" oder wie kann ich invertieren?!
Grüße
Stefan | |
Re: Filter im DataGridView | | | Autor: Manfred X | Datum: 02.04.14 10:11 |
| Der Filterstring darf nur abhängig sein von den Einstellungen
in den beiden Comboboxen, aber nicht davon, welche Combobox
vom Benutzer zuletzt angeclickt worden ist. (Das wäre für den
User verwirrend.)
Du benötigst deshalb EINEN Ereignishandler, der auf "SelectedIndexChanged"
BEIDER Comboboxen reagiert.
In dieser Routine wird der Filterstring abhängig von den Einstellungen
in beiden Boxen aufgebaut - ich vermute verknüpft durch "AND".
Eine Filterbedingung wird invertiert, indem man sie in Klammern setzt
und "NOT" vor die Klammer schreibt.
| |
Re: Filter im DataGridView | | | Autor: stefanbla80 | Datum: 02.04.14 11:40 |
| Hallo Manfred,
werde mich daran weiter versuchen. Das mit dem invertieren hilft mir denke ich schon ...
Grüße und Danke
Stefan | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|