Laden...

DataGrid mit Validation.Error: Wie NotifyOnValidation setzen, wenn Datenbindung über ItemsSource

Erstellt von oehrle vor 8 Jahren Letzter Beitrag vor 8 Jahren 884 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 8 Jahren
DataGrid mit Validation.Error: Wie NotifyOnValidation setzen, wenn Datenbindung über ItemsSource

Hallo, ich habe ein DataGrid, in das Eingaben gemacht werden und diese dann als Filterkriterium in einer Datentabelle verwendet werden (diese wird als DataView gebunden). Die Struktur der Tabelle (also die Spalten) sind ein eigenes DataGrid, das als Filter fungiert. Dabei kann man dann bei den betreffenden Spalten Werte für die Filterung machen (<, >, ==, LIKE). Wenn man nun in einer Spalte etwas eingibt, in der z.B. der Datentyp als Integer definiert ist, und man löscht den Eingabewert wieder und verläßt die Zelle, wird der rote Rahmen um die Zelle engezeigt. Ich muss also etwas eingeben. Das möchte ich aber verhindern. Somit habe ich an das Validation.Error-Event gedacht.
Leider brauche ich dazu aber für jede Spalte (Eigenschft) das NotifyOnValidationError = True.
Aber wie mache ich das, denn ich übergebe ja eine Datenabelle als View.
Kann mir dazu jemnd einen Tip geben, wie ich alle Spalten der Datentabelle mit **NotifyOnValidationError = True **im Code Behind setzen kann?

W
955 Beiträge seit 2010
vor 8 Jahren

Hi

mal was anderes: Wenn es doch nur ein Filterwert ist, warum nimmst du nicht einfach ein Nullable<int> als Filterwert? Dann sollte der Validator nicht anschlagen.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 8 Jahren

Hallo, das wird do nicht gehen.
Ich habe mal zwei Bilder eingestellt, wie die Obefläche aussieht. In dem oberen DataGrid stehen die Daten aus der Datentabelle in denen gesucht werden kann, das untere DataGrid dient nur als Suchfilter.
Das Problem ist halt, wenn man wie im zweiten Bild gezeigt, einen Filterwert nach der Eingabe doch entfernen möchte (kombinierter Filter), dann kommt der rote Kringel. Das will ich in einem Event abfangen (Error-Event).
Ist die Zelle einfach nur geleert worden, dann den Kringel (Fehler deaktivieren).

Ich denke, jetzt versteht man das Problem besser.

Nochmal die Info dazu: Ich brauche ja das NotfyOnValidationError = True, für jede dpalte in der Tabelle. aber wie mache ich das, wenn ich den DataGrids ja nur die Datentabelle übergebe. Ich mach das ja nicht in XAML.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 8 Jahren
DataGrid Validation

Hi

mal was anderes: Wenn es doch nur ein Filterwert ist, warum nimmst du nicht einfach ein Nullable<int> als Filterwert? Dann sollte der Validator nicht anschlagen.

Hallo, habe das probiert, und es funktioniert. Aber nur in einem Fall, wo ich die Filtertabelle komplett neu erstelle (komplette Struktur und Typiesierung).

Ich habe aber noch einen anderen Fall, wo ich die Struktur der Datentabelle einfach klone und für die Filtertabelle verwende. Da geht das nicht. Ich durchlaufe nach dem klonen die geklonte Tabelle mit all ihren Salten, und ändere alle numerischen Typen mit dem Nullable (?).
Im Test ändert sich aber nichts, ich bekomme den roten Kringel. Beim debuggen vor der Ausgabe wurden auch die Typisierungsänderungen nicht angenommen. Geht das bei geklonten Tabellen nicht?