none
Repeater senza viewstate, come salvare? RRS feed

  • Domanda

  • Salve,

    in una pagina ho un repeater che visualizza 6 righe dati.
    Ogni riga dati ha solo un paio di label ed un altro repeater che mostra invece molte righe, il tutto bindato a due List<T> da codice
    quidni il secondo ItemTemplate contiene 4 TextBox e 2 CheckBox con Bind("....")

    Per ovvi motivi, ho disabilitato il viewstate dei repeater.

    bene, ora non riesco più a salvare i dati. Mi sono perso in un bicchiere d'aqcua, lo ammetto.
    Se qualcuno ha la pazienza di dirmi come devo fare il giro giusto per bindare i dati, mi salva la vita.

    ciao grazie


    Programamtore ASP.NET
    http://glucolo.wordpress.com
    giovedì 19 gennaio 2012 17:01

Risposte

  • Salve Glauco!

    C'è come ricoverare questi dati, ecco come:

    Tutti i dati dei control sono inviati alla pagina dentro la collection Request.Form. Ogni TextBox (o checkbox) avrà un ID unico e questo ID sarà la sua key nella collection Request.Forms.

    Questo ID è formato dal ID del repeater + $ctlXX (dove XX è il numero della riga) + $ + ID del TextBox

    Adesso basta fare un while per ricoverare i valori. Per esempio, se avrai un repeater con ID "rptTeste" e nel ItemTemplate avrai un TextBox con ID "txtText", farai così:

     

    int counter = 0;
                string idTemplate = "rptTeste$ctl{0:00}$txtText";
                while (Request.Form[string.Format(idTemplate, counter)] != null)
                {
                    Response.Write(Request.Form[string.Format(idTemplate, counter)]); //O salva i dati
                    counter++;
                }
    
    Spero questo ti sia utile.

     


    venerdì 27 gennaio 2012 19:48

Tutte le risposte

  • Salve Glauco!

    C'è come ricoverare questi dati, ecco come:

    Tutti i dati dei control sono inviati alla pagina dentro la collection Request.Form. Ogni TextBox (o checkbox) avrà un ID unico e questo ID sarà la sua key nella collection Request.Forms.

    Questo ID è formato dal ID del repeater + $ctlXX (dove XX è il numero della riga) + $ + ID del TextBox

    Adesso basta fare un while per ricoverare i valori. Per esempio, se avrai un repeater con ID "rptTeste" e nel ItemTemplate avrai un TextBox con ID "txtText", farai così:

     

    int counter = 0;
                string idTemplate = "rptTeste$ctl{0:00}$txtText";
                while (Request.Form[string.Format(idTemplate, counter)] != null)
                {
                    Response.Write(Request.Form[string.Format(idTemplate, counter)]); //O salva i dati
                    counter++;
                }
    
    Spero questo ti sia utile.

     


    venerdì 27 gennaio 2012 19:48
  • grazie mille,

    speravo ci fosse qualche strumento o qualche evento integrato........

    Comunque se non ho capito male mi devo solo creare la strigna template per i due repeater (ne ho uno dentro l'altro) e fare dei cicli....
    Ottima idea!!!!!!!!!!!

    grazie


    Programamtore ASP.NET
    http://glucolo.wordpress.com
    sabato 28 gennaio 2012 11:24