Laden...

Mehr als ein ValidationSummary pro Seite

Erstellt von r2-d2 vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.329 Views
R
r2-d2 Themenstarter:in
6 Beiträge seit 2006
vor 17 Jahren
Mehr als ein ValidationSummary pro Seite

Hallo Gemeinde,

mein Problem ist: Ich habe eine Seite mit mehereren TABs, welche clientseitig ein paar DIVs ein- und ausblenden. Dort muss man aber überall Adressen eintippen. Am Ende wird alles mit einem Button abgesandt. Wenn ich nur EINEN ValidationSummary verwende und alle RequiredFieldValidators in die gleiche ValidationGroup setze funktioniert alles. Es steht halt nur da: PLZ fehlt, Ort fehlt und man sieht nicht auf Anhieb in welchem TAB was fehlt. Schön wäre es daher, ich hätte pro TAB eine ValidationGroup. Dann könnte der entsprechende Summary auch einen HeaderText bekommen (z.B. Lieferadresse:) und darunter würde dann z.B. stehen "PLZ fehlt" und im anderen Summary-HeaderText würde stehen "Rechnungsadresse:" und in der Liste dann "Ort fehlt". Das ganze muss aber ohne PostBack auskommen. Bei mir wird aber offensichtlich immer nur der erste Summary ausgewertet. Ist alles Valid wird das Formular versandt, alle anderen sind ohne Belang, selbst wenn alles im ersten stimmt und die anderen nicht valid sind.
Eine Idee?

Möge die Macht mit Dir sein 😉

W
799 Beiträge seit 2004
vor 17 Jahren

Du hast auch schon mehrere ValidationSummary-Controls angelegt, und denen eine eindeutige ValidationGroup-ID gegeben, die dann auch die entsprechenden Controls bekommen haben?

Im Prinzip brauchst du natürlich für jedes Tab ein ValidationSummary und eine GroupID, die du für alle Elemente des Tabs vergibst.

Ich kann nicht ganz rauslesen, ob du das getan hast. Wenn ja, könnte ich mir nur noch vorstellen, dass der Button nur eine ValidationGroup ansteuern kann, daher mal ins Blaue:

  • Beim Button ValidationGroup weg lassen. Testen.
  • Wenn das nicht hilft ne eigene JS-Methode schreiben, die die Validierung für die Groups selbst anstößt, im Zweifel hardcodiert wenn's schnell gehen soll

Außerdem in jedem (!) Fall auch noch am Server validieren, also in der Zielmethode des Buttons noch ein

Page.Validate();
if(Page.IsValid) {}

rein.

R
r2-d2 Themenstarter:in
6 Beiträge seit 2006
vor 17 Jahren

Das geht ja schnell hier im Forum.
Wenn ich im Button die ValidationGroup leer lasse oder das Attribut ganz lösche, wird das Formular immer weggeschickt. 😦
Ich werde wohl die Felder selbst mit JS abklappern müssen.
Ist es vielleicht möglich, die Validatoren manuell per JS zu aktivieren, oder muss ich wirklich alle Felder durchgehen und den value abfragen, und daraus ein DIV per DOM-Hacking zu füllen?

Möge die Macht mit Dir sein 😉

W
799 Beiträge seit 2004
vor 17 Jahren

Edit, war Mist ...

R
r2-d2 Themenstarter:in
6 Beiträge seit 2006
vor 17 Jahren

Möge die Macht mit Dir sein 😉

W
799 Beiträge seit 2004
vor 17 Jahren

Wäre eine Möglichkeit. Die andere wäre, wenn du dich in den erzeugten Scriptcode von ASP.NET reinfummelst. Die Grundlage dürfte das hier sein:

<script type="text/javascript">
<!--
var Page_ValidationSummaries =  new Array(document.getElementById("ValidationSummary1"), document.getElementById("ValidationSummary2"));
var Page_Validators =  new Array(document.getElementById("RequiredFieldValidator1"), document.getElementById("RequiredFieldValidator2"));
// -->
</script>

Er legt also ein Array der einzelnen Validatoren und Summaries an, darauf könntest du aufbauen und die ausführen. Wie genau weiß ich nicht, müsste ich selbst ausprobieren - grad keine Zeit.

Alternativ könntest du dich auch noch mit http://ajax.asp.net/default.aspx?tabid=47 beschäftigen - da hast du alle Vorteile vereint: du kannst den Standardweg mit ner prüfenden Servermethode nehmen (was ja funktioniert), und erhältst mittels Ajax trotzdem keine Postbacks.

R
r2-d2 Themenstarter:in
6 Beiträge seit 2006
vor 17 Jahren

AJAX ist mir noch etwas zu aufregend. Ich versuche mal die JS Variante. Auch wenn ich denke, dass die etwas "dirty" ist.

Möge die Macht mit Dir sein 😉