/ / Prečo je BindingSource.Filter skrýva hodnoty null v DataGridView? - c #, datagridview, bindingsource

Prečo je BindingSource.Filter skryté hodnoty null v DataGridView? - c #, datagridview, bindingsource

Dobrý deň, narazil som na zvláštny problém a nemôžem zistiť, čo sa deje DataGridView kontrola, ktorá je viazaná na a BindingSource na môj formulár a tri CheckBox ovládacie prvky, ktoré filtrujú hodnoty založené na hodnote vypnuté, ak je hodnota v stĺpci Null, NOT Null. Tretia CheckBox spôsobuje problémy. Pokúšam sa skryť hodnoty, ak je hodnota v stĺpci rovná "RETEST PASSED", ale tiež spôsobí skrytie hodnôt Null. Tu je riadok kódu, kde som nastavil filter:

_bSource.Filter = "repair_action <> "RETEST PASSED"";

Vie niekto, prečo by filter skryl riadkys hodnotami Null, ako aj riadkami s hodnotou "RETEST PASSED"? V mojej hlave sa zdá logika zdravá. Vykladám ho ako "Ak hodnota v repair_action nezodpovedá" RETEST PASSED ", potom zobrazí riadok". Nie je to to, čo sa deje? "

Vopred ďakujem.

odpovede:

0 pre odpoveď č. 1

Čo tak

 _bSource.Filter = "repair_action Is Null Or repair_action <> "RETEST PASSED"";

HTH


0 pre odpoveď č. 2

Vysvetlenie

V klauzule SQL WHERE sa NULL nedá porovnať s žiadnou hodnotou pomocou operátorov porovnávania. "NULL = NULL" je nepravdivé. Null nie je hodnota. Preto akékoľvek porovnanie s Null poskytuje výsledok NEZNÁMÝ.

Riešenie

Pozri odpoveď poskytovanú spoločnosťou Luc Morin