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 😉
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:
Außerdem in jedem (!) Fall auch noch am Server validieren, also in der Zielmethode des Buttons noch ein
Page.Validate();
if(Page.IsValid) {}
rein.
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 😉
Werd' es wohl so machen müssen, oder?
http://blog.thomasbandt.de/PermaLink,guid,e46e8b1b-3f8d-4048-bf1d-00a214704063.aspx
Möge die Macht mit Dir sein 😉
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.
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 😉