Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    93

    Generare controlli ASP.Net

    Ciao a tutti, sino ad oggi ho utilizzato ASP 3.0 ma ora devo iniziare un progetto con ASP.Net ma si è presentato un problema al quale non ho mai pensato. Il problema in questione prevede di non costruire una pagina con dei controlli (textbox, button,...) etc da immettere nella fase di sviluppo tramite il Designer, ma durante l'esecuzione della pagina. Più precisamente, leggendo da un database dei dati, ho la necessità di generare tante textbox aventi nomi univoci, quante sono le righe lette dalla tabella ed immettere in ciascuna textbox il valore di un campo di una riga. Con ASP 3.0 utilizzo un ciclo While sul recordset e produco la textbox con il Response.Write, assegnandole un nome del tipo "Texbox" + idRiga. Con ASP.Net va utilizzato lo stesso approccio ?

    Grazie a tutti.

  2. #2
    No un approccio del genere è sbagliato (anche se funzionante.. visto che non fai altro che creare controlli HTML dinamicamente).
    La cosa migliore è utilizzare il controllo PlaceHolder. Questo controllo funge da contenitore per altri controlli.

    Ti consiglio di dare un'occhiata alla documentazione che trovi in rete.. non so nemmeno che linguaggio stai utilizzando.. ma ad es. in C# potresti creare un loop del genere;
    codice:
    DataSet ds = new DataSet();
    
    ...... popolo il dataset
    
    for (int i=0; i < ds.Tables[0].Rows.Count; i++) {
      TextBox textbox = new TextBox();
      textbox.ID = "nome" + i.ToString();
      plControlli.Controls.Add(textbox);
    }
    dove plControlli è il nome del tuo PlaceHolder

    In questo modo generi N TextBox quanti sono i record nel db (ho scritto il codice velocemente.. è solo un es.).
    Il problema del PlaceHolder è mantenere il suo stato durante le richieste di PostBack della pagina.

    Dai un'occhiata qui ad es. se usi il framework 1.1x: http://www.dotnetjunkies.com/quickst...aceholder.aspx


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    93
    questa quindi è l'unica soluzione ?

  4. #4
    Utente di HTML.it L'avatar di edaje
    Registrato dal
    Jul 2003
    Messaggi
    363
    Sicuramente la soluzione che ti ha proposto ZofM è la più indicata. In questo modo aggiungi controlli alla collezione controls della pagina o del placeholder e puoi accedere runtime a questi controlli. La soluzione che proponi tu scrive codice html sulla pagina. Poi devi gestirti il codice javascript per ricavare i valori in caso di submit del form, cosa che asp .net genere in automatico con grande risparmio di tempo

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    In generale (non conosco il problema) userei la soluzione proposta da ZofM.

    Oppure si potrebbe usare un Repeater


    Un'altra soluzione potrebbe essere quella di scrivere tutto in una variabile buffer e poi metterla in un litteral

    Se, oltre a creare i textbox nel server, posso crearli pure nel client, i valori li recupero tranqulillamente con Request.Form


    Comunque, mai e poi mai usare Response.Write, che oltretutto, nel codice sottostante, non funzionerebbe.
    Pietro

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    93
    e se usassi la collection Controls della classe Page per aggiungere i controlli nell'evento Load (di Page) ?

  7. #7
    Utente di HTML.it L'avatar di edaje
    Registrato dal
    Jul 2003
    Messaggi
    363
    Esatto

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da edaje
    Esatto
    SBAGLIATO!

    Pietro

  9. #9
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da paolopat
    e se usassi la collection Controls della classe Page per aggiungere i controlli nell'evento Load (di Page) ?
    Devi aggiungere i controlli al placehorder come ti è stato suggerito più volte, questo però devi farlo nel page_init.
    Vedrai che funziona ed in più facendo così non hai nemmeno la viewstate dei controlli che ti appesantisce la pagina.
    Ciao

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    93
    sto generando i controlli nel page_init...ma è giusto recuperarli con il Request.Form ?? Non è troppo da ASP 3.0 ?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.