2013-09-03 11 views
5

Ho due DataView che sto cercando di ordinare, in dgtest1 sto cercando di fare eccezione per i dati che contengono uno Typeid != 25 e in dgtest2 sto cercando di mostrare solo i dati dove Typeid == 25.Filtraggio della riga DataView

Quando faccio un passo attraverso il codice che sto gettando un errore a dire

"non può interpretare token '!' in posizione 6 ".

Qualcuno può mostrarmi come utilizzare correttamente il filtro fila di corde?

I parametri sono (dati Tavolo, RowFilter stringa, stringa Sort, DataViewRowState)

dgtest1.ItemsSource = new DataView(dttest1, "Typeid!= 25", "", DataViewRowState.CurrentRows); 
dgtest2.ItemsSource = new DataView(dttest1, "Typeid == 25", "", DataViewRowState.CurrentRows); 
+0

Utilizzare '<>' per "non uguale". – Styxxy

risposta

6

La sintassi corretta da utilizzare per l'espressione RowFilter nel primo costruttore Dataview è

dgtest1.ItemsSource = new DataView(dttest1, "Typeid <> 25", "", DataViewRowState.CurrentRows); 
                ^^ 

in la seconda che è necessario utilizzare

dgtest2.ItemsSource = new DataView(dttest1, "Typeid = 25", "", DataViewRowState.CurrentRows); 

La sintassi us Ed per il parametro RowFilter nel costruttore DataView è lo stesso utilizzato per la proprietà Expression del DataColumn e non è come l'operatore di uguaglianza di C#

EDIT In seguito alla vostra commento qui sotto. Se typeid è un campo di database di tipo di dati di testo allora avete bisogno di racchiudere il valore utilizzato nella RowFilter tra singoli apici

dgtest1.ItemsSource = new DataView(dttest1, "Typeid <> '25'", "", DataViewRowState.CurrentRows); 
dgtest2.ItemsSource = new DataView(dttest1, "Typeid = '25'", "", DataViewRowState.CurrentRows); 

Tuttavia questo sembra un po 'strano. Se il campo Typeid contiene numeri, deve essere definito come un tipo di dati numerico.

+0

quando uso la sintassi ottengo il seguente {"Impossibile eseguire l'operazione '<>' su System.String e System.Int32."} – Robert

+0

se TypeID è una stringa (nel database), quindi è necessario utilizzare le virgolette attorno al valore . Ma qualcosa non sembra proprio qui. Sei sicuro che TypeID sia un campo del tuo tavolo? – Steve

+0

altre informazioni quando sql restituisce i dati lo scarico in dttest1 – Robert