C# Filter über Combobox bei dataGridView

PSP_GIGA

Cadet 3rd Year
Registriert
Jan. 2011
Beiträge
57
Hallo CB Forum,

ich hab eine Form in der ich eine Combobox habe z.B.

alle Anzeigen
Windows XP
Windows 7
Windows Server 2003

über die Combobox möchte ich eine andere Form ansprechen in der ich ein dataGridView habe. Im dataGridView ist eine Datenbank hinterlegt.

Jetzt möchte ich sie so Filter, dass wenn ich z.B. Windows XP auswähle nur die Inhalte angezeigt werden die mit Windows XP zutun haben.

mein Code:

Code:
int index = Betriebssysteme.FindString(Betriebssysteme.Text);
            Betriebssysteme.SelectedIndex = index;

            BindingSource source1 = new BindingSource();
            source1.DataSource = dataGridView1;
            dataGridView1.DataSource = source1;

          
            switch (index)
            {
                case 0:
                    lzn.Show();
                    break;
                case 1:
                    
                    source1.Filter = "Betriebssystem = 'WinXP'";
                    lzn.Show();
                    break;



Betriebssystem in der Name der Spalte und WinXP ist der Inhalt der angesprochen werden soll.

Leider wird er nciht gefilter.

Ich hoffe ihr könnt mir weiterhelfen :)
 
http://social.msdn.microsoft.com/Fo...e/thread/089247c7-5c85-445f-aa87-9a98220700c9

Vorschlag:
Code:
int index = Betriebssysteme.FindString(Betriebssysteme.Text);
            Betriebssysteme.SelectedIndex = index;

            BindingSource source1 = new BindingSource();
           [s]source1.DataSource = dataGridView1;[/s] [B]source1.DataSource = irgendEineListe;[/B] 
            dataGridView1.DataSource = source1;
          
            switch (index)
            {
                case 0:
                   [B] source1.DataSource =  irgendEineListe;[/B]
                    lzn.Show();
                    break;
                case 1:
                  [B]  source1.DataSource = irgendEineListe.FindAll(AddressOf filterOS) [/B]
                    lzn.Show();
                    break;
Neben Filtern kann man so z.B. auch Sortieren und wenn du in der DataGridView einen Wert änderst, wird das auch durchgereicht. Wenn da jetzt direkt keine Liste drunter hängt musst du das Filtern selber implementieren. Linq kann hierbei ganz nützlich sein.
Eleganter wäre es natürlich Find und Sort so zu implementieren, dass du es direkt von der BindingSource aus abrufst. Dann funktioniert auch vll folgender Fall, den ich in meinem Testprogramm dazu hab: Wenn die Liste ungefiltert an die BindungSource gebunden wird und ich füge einen neuen Datensatz hinzu, wird dieser direkt angezeigt. Habe ich einen Filter und füge einen Datensatz zu, welcher der Filtereigenschaft entspricht, wird dieser nicht angezeigt. Ich schau mir das die Tage auf jedenfall nochmal an.
 
Zuletzt bearbeitet:
Zurück
Oben