Quindi ho già scritto un metodo di convalida jQuery personalizzato. Ed è legato a 1 o più elenchi a discesa individuali. (Sono in asp.net, btw)jQuery Validator in un "Livello pagina"
jQuery.validator.addMethod("dropdownBoxHasItemSelected", function (value, select, arg) {
var returnValue = false;
var selectedIndex = $(select).prop("selectedIndex");
if (selectedIndex != 0) {
returnValue = true;
}
return returnValue;
}, "Please select a item.");
Quindi questa non è la mia domanda.
Ho qualche convalida che deve essere eseguita a un "livello di pagina". O forse a livello "GridView" è un modo migliore per esprimerlo.
Ecco lo scenario: (sto usando dati resi-up per rendere la spiegazione più facile andare, alias, io in realtà non hanno Giocattoli e Foods)
ho una visualizzazione a griglia.
Column A of the gridview is of no consequence of this, but it exists.
Column B of the gridview has a DropDownList for "FavoriteToy".
Column C of the gridview has a DropDownList for "FavoriteFood".
Quindi le regole vanno in questo modo.
Per ogni riga nella gridview:
You must pick a FavoriteToy or a FavoriteFood for each row.
You can pick a FavoriteToy OR a FavoriteFood, but not both on the same row.
If you pick a FavoriteToy of "TeddyBear" in RowX, none of the other rows can have TeddyBear chosen. (Aka, each row must have a distinct FavoriteToy chosen)
If you pick a FavoriteFood of "AppleButter" in RowX, none of the other rows can have AppleButter chosen. (Aka, each row must have a distinct FavoriteFood chosen)
nuove righe possono essere aggiunti al gridview se desiderato. C'è anche un pulsante "Rimuovi", nel caso in cui l'utente abbia esaurito tutte le combinazioni FavoriteToy e FavoriteFood.
Ora, ho scritto tutta la logica di convalida (usando la sintassi jQuery per controllare i valori e ricominciare tutto) bene.
Sto cercando un consiglio su come collegare il "validatore generale della vista della griglia", usando jQuery.validator.addMethod.
Immagino di poterlo collegare ad un asp: Label (un "input" di tipo = "testo" sul lato client), quindi viene visualizzato il messaggio di errore.
O forse, la vista griglia viene visualizzata come "tabella" sul lato client.
Qualche consiglio in generale?
========================================= ======================
Quello che ho messo nella misura in cui:
L'asp: controllo di rete:
<asp:HiddenField ID="hidGridViewValidatorPlaceHolder" runat="server" />
e il seguente metodo
jQuery.validator.addMethod("gridViewValiatorMethod", function (value, select, arg) {
var returnValue = true;
var errorMsg = SuperValidationWrapper();
if (errorMsg != "") {
alert(errorMsg);
returnValue = false;
}
return returnValue;
}, "Please address the issues in the gridview.");
SuperValidationWrapper() presenta tutte le loopty-loop. E restituisco una stringa concatenata di problemi. Non mi piace, ma è quello che ho fatto.
La casella di avviso fornisce i dettagli e il testo "Per favore, risolvi i problemi nella griglia". si presenta se ci sono problemi.
Eventuali miglioramenti sono apprezzati.
+1 Per "alias, io in realtà non hanno giocattoli e alimenti" –
Ah! Mi piace mantenere l'attenzione sul problema reale e non spiegare i miei oggetti di dominio, ecc. Ecc. Ho questo libro modello di progettazione C# che fa il pattern Abstract Factory usando "Swim Lanes" ...... e ogni volta che leggilo, non ho idea di cosa stia dicendo. Cattivo esempio per (la maggior parte degli sviluppatori). Ma una app di Toys and Foods sembra davvero divertente! – granadaCoder