vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Filter 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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Filter im DataGridView 
Autor: Manfred X
Datum: 01.04.14 15:02

Probier mal eckige Klammern um den Spaltennamen .....
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Filter im DataGridView 
Autor: stefanbla80
Datum: 01.04.14 16:05

Super, Manfred!! Das geht

Vielen Dank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.




Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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