Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    GridView e SqlDataSource code behind

    Ciao a tutti,
    sto iniziando questa nuova epopea con C# e ASP.NET, e sono ancora alle prime armi. Sto provando ad utilizzare una gridview associata ad un SqlDataSource, ma vorrei riuscire a costruirli in code behind, al page load.
    Se creo e setto il mio SqlDataSource code behind e lo associo ad una gridview inserita grazie al tool di progettazione di VS2010, ok, tutto funziona. Ma se provo a creare anche la gridview attraverso righe di codice non mi visualizza nulla. Ergo credo che quello che sbaglio sia legato alla creazione o all'associazione della gridview, mentre il DS dovrebbe essere ok.

    Di seguito il codice:

    codice:
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                //Qui imposto il Ds. Va tutto bene, con stored procedure come con testo semplice.
                SqlDataSource Ds_ToDoList = new SqlDataSource();
                Ds_ToDoList.ConnectionString = "...";
                Ds_ToDoList.SelectCommandType = SqlDataSourceCommandType.Text;
                Ds_ToDoList.SelectCommand = "SELECT * FROM [Tabella]";
    
                //Qui invece inizializzo una gridview e la associo al Ds. Ma non me la visualizza
                GridView prova2 = new GridView();
                prova2.AutoGenerateColumns = true;
                prova2.DataSource = Ds_ToDoList;
                prova2.DataBind();
    
                }
            }
        }

    Scusate, ma non so proprio che pesci pigliare.

    Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    sia il datasource che il gridview li devi aggiungere alla collection dei controlli della pagina altrimenti rimangono solo degli oggetti creati dentro la funzione Load e che di conseguenza verranno distrutti alla fine della stessa.

    Nella pagina posiziona un Placheholder nel punto in cui vorresti inserire la gridview e nel code-behind usa:

    codice:
    PlaceHolder1.Controls.Add(Ds_ToDoList);
    PlaceHolder1.Controls.Add(prova2);

  3. #3
    Ho provato e funziona, grazie mille.

    Quindi, se ho capito bene, un placeholder è un controllo che serve a "fissare" un contenuto all'interno di una pagina, a prescindere da tutto quello che succede in essa? una volta caricato il placeholder in una pagina questo diventa autonomo da essa (a meno che non venga esplicitamente chiamato in causa attraverso codice)?

    Ho capito bene oppure questo è solamente quello che il placeholder fa in questo caso, ma la sua funzione è più complessa?

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Il placeholder è un contenitore di altri controlli.

    Di solito si usa quando si vuole agire lato code-behind, per rendere visibile cio' che si è creato. Situazioni dinamiche, di solito, per numeri e tipologie di oggetti.

    Se non si aggiungono questi ultimi al placeholder essi rimangono appunto oggetti in memoria, non visibili all'utente.

    Per farti capire un uso tipico dei placeholder, pensa ad uno scenario in cui hai degli UserControl (o banalmente, dei pulsanti) di cui non sai a priori la quantità che dovrà essere aggiunta alla pagina (magari dipende da una scelta utente - tipo files da allegare).

    Puoi aggiungerli al tuo controllo placeholder (piazzato dove ti serve che gli UserContro o i pulsanti appaiano nella pagina) e gestire quest'ultimo come ti pare (aggiunte, rimozioni, pulizia di tutti gli elementi figlio).

  5. #5
    Ok, credo di avere capito. Davvero, grazie mille.

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.