Validare checkbox in una gridview

martedì 17 marzo 2009 - 11.00

valerik Profilo | Junior Member

Ciao,

volevo validare la colonna checkbox in una gridview(almeno una selezionata), ho provato con RequiredFieldValidator, ma non sono riuscito.
Potete darmi qualche consiglio, come si puo' fare?
Grazie
valerik

alx_81 Profilo | Guru

>Ciao,
Ciao!

>volevo validare la colonna checkbox in una gridview(almeno una
>selezionata), ho provato con RequiredFieldValidator, ma non sono
>riuscito.
Ma una colonna checkbox non ha molto senso validarla. E' fatta apposta per definire se spuntare o meno la selezione.
Prova a spiegarci la situazione reale, cosa ti serve..

>Grazie
di nulla!

--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

valerik Profilo | Junior Member

Si, allora, scusate, in effetti non mi sono spiegato per niente bene...

Ho un form, all' interno una gridview dove una colonna e' formata da checkbox, altre textbox e un pulsante.
Vorrei mandare un "errormessage", nel caso non venga spuntata nessuna checkbox, prima delle varie procedure che vengono effettuate, al momento del click sul bottone.
Per le altre textbox ho usato i RequiredFieldValidator, ma le checkbox dentro gridview?
valerik

paoval72 Profilo | Senior Member

Ciao. Hai la paginazione nella tua griglia? Per capire se hai checkato almeno una checkbox ho pensato a un ciclo sulle varie righe, ma se hai la paginazione diventa più complicato, perchè lo puoi fare solo sulla pagina visualizzata e non sul totale dei records.

PV

sanfra Profilo | Junior Member

Secondo me, l'unica aternativa e anche valida sarebbe utilizzare javascript, Dichiari un array e li dentro vai a mettere l'id quando clicchi sul checkbox relativo sul clic del pulsante fai un ciclo con il relativo controllo fai usciore un msgbox e svuoti l'array

Penso, chiedo conferma anche ai più esperti e veterani!

Spero almeno di essere stato utile!


paoval72 Profilo | Senior Member

Ripensandoci, della paginazione non ci frega nulla, credo: visto che tanto validi una pagina per volta (cioè quella che hai a video)... prendendo per buona quest'ipotesi, ti propongo una strada:


1) Lato client, associo l'evento onclick al mio button:
<asp:Button ID="bnt1" runat="server" OnClick="btn_Click"/>
2) lato server registro e gestisco l'evento:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
PV

valerik Profilo | Junior Member

Effettivamente e' una buona idea e funziona,
Anche se avrei preferito una soluzione tipo con i customValidator(requiredfiledvalidfator), insomma far apparire l'errore a video senza popup e senza ricaricare la pagina...
E' possibile fare una cosa del genere?

valerik

balfaz Profilo | Expert

a layout della tua pagina puoi aggiungere un updatepanel e al codice che ha scritto da paoval puoi mettere 2 righe aggiornando l'updatepanel con un label......sempre che avrai voglia di farlo

Dove troverai sempre una mano disposta ad aiutarti è nell'estremo del tuo proprio braccio

sanfra Profilo | Junior Member

L'esempio di proval72 è meraviglioso, complimenti davvero, è pulito, io ho posto questa opzione, perchè l'avevo già fatta in PHP, ma non in ASP.NET e veramente, da copiare e mettere da parte e caso svilupparci qualcos'altro di più interessante.

Scusa una domanda, perchè a.GetType() e non Page.GetType()?


P.S.:Per quanto riguarda il discorso dei validator cui accennava valerik lo puoi fare ma devi costruirti tu il controllo ereditando dalla classe dei validator e prendendo il file che contiene il codice javascript e modificarlo.Un pò più complicato, ma anche in questo caso chiedo conferma a veterani,come proval72 e balfaz, che sono veramente ingamba!

paoval72 Profilo | Senior Member

Ciao a tutti. Riguardo al messaggio di errore, ho fatto solo un esempio per come gestirlo. Io purtroppo non sono così esperto, tutto quello che posto è frutto di prove ed esperienza sul campo: ad esempio, in questo caso gestirei il messaggio con una semplice Label, da rendere visible=true se il controllo che faccio nel button mi restituisce l'errore. Ovviamente la label starebbe fuori dalla gridview
Html:
</asp:GridView><!--alla chiusura del GridView inserisco la mia label di segnalazione--> <br /><!-- Un semplice a capo, per staccare i due campi --> <asp:Label ID="errore" runat="server" Visible="false"></asp:Label>

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Potresti anche sfruttare la Label per segnalare comunque che tutto è andato bene, rendendo sempre visibile la label, ma cambiandone il testo.

Ho visto però che ci sono già altre proposte, quindi si può sicuramente ricavare un'idea più completa da quelle.
Riguardo al GetType() del RegisterClientScriptBlock (o del RegisterStartup), ci puoi mettere quel che vuoi, in teoria: perchè serve per dare univocità alla registrazione con una doppietta chiave-valore. infatti, ho provato a istanziare un inutile dateTime e a passarglielo come Type (cioè la "chiave"), lasciando come "valore" la stringa di alert: e il popup mi è apparso ancora.
Un saluto a tutti,
PV
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5