Entwickler-Ecke

WPF / Silverlight - DataGrid Validierung


Xuxe - Do 02.08.12 11:46
Titel: DataGrid Validierung
Hi Leute,

habe folgendes Problem: Ich habe ein DataGrid. Nun würde ich gerne, wenn man in einer Zeile in bestimmte Zellen, Zahlen einträgt, überprüfen ob die Summe der eingetragenen Zahlen größer bzw. kleiner einer weiteren Zahl in dieser Zeile ist. Also mal ein Beispiel: in Spalte 1 von Zeile 3 steht 50. In Spalte 2, 3 und 4 von Zeile 3 steht 20, 20 und 5. Nun würde ich gerne jedes mal wenn die Werte in Spalte 2, 3 und 4 geändert werden überprüfen ob die Summe von diesen Werten gleich dem Wert von Spalte 1 der Zeile 3 ist.
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt :-)

Beste Grüße,

Boris


Xuxe - Di 14.08.12 15:51

Hat wirklich niemand einen Rat? Ich habe schon etliche events vom DataGrid ausprobiert, aber entweder kann ich auf die editierte Row nicht zugreifen, oder das event wird zum falschen Zeitpunkt gefeuert...
Wäre wirklich für jeden Tip dankbar!


Ralf Jansen - Di 14.08.12 16:10

Mein Rat wäre es erst gar nicht erst am Grid zu probieren. Das Grid ist zur ein UI Objekt zur Darstellung Logik gehört eher an die Datenmenge dahinter. Also schreib dir ein Klasse mit Properties für die Spalten einer Zeile. Verpasse der Klasse Logik in den Property Settern die das prüft was du in deinem Beitrag geschrieben hast fülle eine Liste mit Instanzen dieser Klasse und binde sie an dein Grid.

Wenn du spezielle Anforderungen hast (zu welchem Zeitpunkt das passiert wie das visualisiert werden soll etc) die das problematisch machen solltest du dies Anforderungen auch nennen ansonsten fällt es schwer irgendwas zu raten.


Xuxe - Di 21.08.12 12:30

Hi RalfJansen,

Vielen Dank erstmal für deine Hilfe.
Also mein DataGrid ist an ein DataSet, welches die Daten aus einer DB enthält, gebunden. Passieren soll das Ganze in dem Moment in dem der User eine neue Zeile anlegt und diese mit Daten befüllt bzw. eine vorhandene Zeile editiert. Es ist quasi nur eine Überprüfung ob die Summe der eingetragenen einzelnen Zahlen mit der eingetragenen Gesamtzahl übereinstimmt. Die Daten an sich möchte ich gar nicht verändern oder ergänzen, sondern nur anzeigen das dass was der User eingetragen hat, nicht aufgeht und die entsprechende Zeile rot einfärben.


daeve - Di 21.08.12 17:51

Hi Xuxe

hast du mal versucht die Validation des Datadrids zu benutzen ?

http://msdn.microsoft.com/en-us/library/ee622975.aspx

wenn ich dich richtig verstehe musst du eine eingabe im DataGrid Validieren oder ?

für das gibt es einige beispiele im Internet... ( Datagrid Cell Validation)

Gruss David


Xuxe - Fr 09.11.12 15:38

Habs mehr oder weniger mit den ValidationRules hinbekommen, danke!