In mijn vorige topic had ik wat problemen met het vervangen van een bepaald karakter in een excel waarde, inmiddels is mijn programma al wat verder en kan ik leuk heen en weer gooien met data tussen mijn programma en een aantal databases. Nu loop ik echter tegen een probleem aan met het filteren van deze data.
De data die ik uit de database haal wordt in een dataset met een aantal tables geplaatst, 1 van deze tables wordt d.m.v. een BindingSource weergegeven in een DataGridView.
Vervolgens wordt er aan de hand van 3 kolommen een TreeView gevuld, deze TreeView gebruik ik voor het filteren van de data die de DataGridView weer geeft en heeft 4 lagen.
De eerste laag bestaat uit 1 node en bij selectie van deze node wordt de BindingSource.Filter op Null gezet.
Het filteren d.m.v. selectie in de treeView gaat goed totdat er lege velden bij komen kijken.
Tijdens het vullen van de TreeView worden eventuele lege velden vervangen door de waarde "Unknown" in de TreeView, dit omdat "" nogal lastig te selecteren is in een TreeView
Tijdens het aanroepen van de filter code vervang ik de waarde "Unknown" weer voor "" en tot zover gaat alles goed, alle "Unknown" waardes in elke laag van de TreeView wordt netjes vervangen door "".
Het filter zelf levert echter wat problemen op...
Als ik laag1 selecteer wordt netjes alle data weergegeven (BindingSource.Filter = null)
Als ik laag2 selecteer wordt netjes de gefilterde data weergegeven.
Als ik laag 3 of 4 selecteer gebeurd er wat vreemd, zodra 1 van deze 2 de waarde "Unknown" in de TreeView heeft en in de DataGridView dus "" worden er geen resultaten meer weergegeven. Hebben laag 3 en/of 4 een andere waarde als "Unknown" dat werkt het filter naar behoren.
Wat is de reden dat het filter niet werkt zodra Laag3 of Laag4 "" is?
De waarde van BindingSource.Filter is gewoon wat het zijn moet, bijvoorbeeld
De data die ik uit de database haal wordt in een dataset met een aantal tables geplaatst, 1 van deze tables wordt d.m.v. een BindingSource weergegeven in een DataGridView.
Vervolgens wordt er aan de hand van 3 kolommen een TreeView gevuld, deze TreeView gebruik ik voor het filteren van de data die de DataGridView weer geeft en heeft 4 lagen.
De eerste laag bestaat uit 1 node en bij selectie van deze node wordt de BindingSource.Filter op Null gezet.
Het filteren d.m.v. selectie in de treeView gaat goed totdat er lege velden bij komen kijken.
Tijdens het vullen van de TreeView worden eventuele lege velden vervangen door de waarde "Unknown" in de TreeView, dit omdat "" nogal lastig te selecteren is in een TreeView
Tijdens het aanroepen van de filter code vervang ik de waarde "Unknown" weer voor "" en tot zover gaat alles goed, alle "Unknown" waardes in elke laag van de TreeView wordt netjes vervangen door "".
Het filter zelf levert echter wat problemen op...
Als ik laag1 selecteer wordt netjes alle data weergegeven (BindingSource.Filter = null)
Als ik laag2 selecteer wordt netjes de gefilterde data weergegeven.
Als ik laag 3 of 4 selecteer gebeurd er wat vreemd, zodra 1 van deze 2 de waarde "Unknown" in de TreeView heeft en in de DataGridView dus "" worden er geen resultaten meer weergegeven. Hebben laag 3 en/of 4 een andere waarde als "Unknown" dat werkt het filter naar behoren.
code:
1
2
3
4
5
6
7
8
| BindingSource.Filter = "Laag2 = '_waarde1' " Deze werkt naar behoren, ongeachte de wat er in _waarde1 staat. BindingSource.Filter = "Laag2= '_waarde1' AND Laag3 = '_waarde2' " Deze werkt ook zolang _waarde2 geen "" is. BindingSource.Filter = "Laag2 = '_waarde1' AND Laag3 = '_waarde2' AND Laag4 = '_waarde3' " Deze werkt ook zolang _waarde2 en/of _waarde3 geen "" is. |
Wat is de reden dat het filter niet werkt zodra Laag3 of Laag4 "" is?
De waarde van BindingSource.Filter is gewoon wat het zijn moet, bijvoorbeeld
als ik de node selecteer die overal al waarde "Unknown" heeft"Laag2 = '' AND Laag3 = '' AND Laag4 = ''"
Please leave a message after the beep.
*beeeeep*