Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560

    Popolare un GridView da codice

    Ciao a tutti,
    sto cercando di popolare un GridView da codice ma trovo diversi problemi.

    Facendo il Binding con un DataSet o un DataTable riesco a visualizzare i dati ma non mi funziona ne ordinamento ne paginazione. Usando invece un SqlDataSource non riesco neanche a vedere la prima pagina di dati, il GV rimane vuoto.
    Inoltre con il DS e il DT se non faccio creare le colonne automaticamente e quindi creo io la struttura e associo alle colonne i campi del DB manualmente da codice i campi mi vengono visualizzati secondo l'ordine che ho inserito ma per due volte. QUindi se ho i campi Cognome, nome e data troverò le seguenti colonne nel GV: Cognome, Nome, Data, Cognome, Nome, Data. E' tutt'oggi che ci sbatto la testa...
    mi date una mano? Avete un po' di codice di esempio? Ho cercato tanto sulla Rete ma non ho trovato nulla che mi sbloccasse...

    Grazie un bel po'!!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    26
    Facendo il Binding con un DataSet o un DataTable riesco a visualizzare i dati ma non mi funziona ne ordinamento ne paginazione. Usando invece un SqlDataSource non riesco neanche a vedere la prima pagina di dati, il GV rimane vuoto.
    L'ordinamento e la paginazione li devi gestire tu se popoli una gridview da codice.

    Esempio paginazione:
    Devi aggiungere alla gridview questi attributi AllowPaging="True" PageSize="7" (pagesize corrisponde a quante righe vuoi visualizzare per pagina) e poi devi gestire l'evento
    OnPageIndexChanging="IdGridView_PageIndexChanging" da codice

    codice:
    protected void lstCustodia_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            IdGridView.PageIndex = e.NewPageIndex;
            //richiami il metodo per il caricamento dei dati (comunque mi sembra che puoi rifare semplicemente il databind)
            carica();
            oppure 
            IdGridView.DataBind();
        }

    Inoltre con il DS e il DT se non faccio creare le colonne automaticamente e quindi creo io la struttura e associo alle colonne i campi del DB manualmente da codice i campi mi vengono visualizzati secondo l'ordine che ho inserito ma per due volte. QUindi se ho i campi Cognome, nome e data troverò le seguenti colonne nel GV: Cognome, Nome, Data, Cognome, Nome, Data.
    Sei sicuro di aver impostato AutoGenerateColumns="False" come attributo della GridView?

  3. #3
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    l'evento lo avevo creato e mi sembra pure bene...

    così popolo il GridViev gvRisul:

    codice:
            Dim adRic As New OracleDataAdapter(sSql, connString)
            Dim dsRic As New DataSet
            adRic.Fill(dsRic, "RisRic")
            gvRisul.DataSource = dsRic
            '---
            'Dim dtRic As New DataTable
            'adRic.Fill(dtRic)
            'gvRisul.DataSource = dtRic
            '---
            'Dim dsRic As New SqlDataSource(connString, sSql)
            'dsRic.DataSourceMode = SqlDataSourceMode.DataReader
            'gvRisul.DataSourceID = dsRic.ID
            gvRisul.DataBind()
    le istruzioni remmate sono le varie prove che ho fatto...

    questo invece è l'evento:

    codice:
        Protected Sub gvRisul_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvRisul.PageIndexChanging
            gvRisul.PageIndex = e.NewPageIndex
            gvRisul.DataBind()
        End Sub
    eppure la prima pagina compare correttamente, quando passo alla seconda il GV è come se scomparisse. Non mi viene restituito nessun errore. E' come se non venisse proprio visualizzato, non mi compaiono neanche i numeri per il cambio pagina!
    Dove sbaglio secondo te?
    Grazie 1000

  4. #4
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    ah riguardo alle colonne doppie: si sono sicuro di aver impostato il AutoGenerateColumns="False"...


  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    26
    codice:
        Protected Sub gvRisul_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvRisul.PageIndexChanging
            gvRisul.PageIndex = e.NewPageIndex
            gvRisul.DataBind()
        End Sub
    Anzichè fare solo il databind, prova a rimettere il codice per il caricamento della gridview. Sto provando in questo momento su una mia applicazione e mettendo solo il databind mi dà il tuo stesso problema. Prova e vediamo se si risolve...

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    26
    Per caso hai nel page_load un controllo di postback? Potrebbe essere quello il problema....

  7. #7
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    Originariamente inviato da J-FIVE
    Per caso hai nel page_load un controllo di postback? Potrebbe essere quello il problema....
    Si ma in caso non sia un postback eseguo una procedura che mi riempie solo dei controlli DropDownList e niente di più. Non credo possa essere un problema no?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    26
    Si ma in caso non sia un postback eseguo una procedura che mi riempie solo dei controlli DropDownList e niente di più. Non credo possa essere un problema no?
    In questo caso no, perchè il caricamento della gridview non lo fai dentro al controllo postback.

    Te l'ho chiesto perchè nel mio caso è così e magari ci potevano essere problemi con il databind.

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    26
    Ho controllato ed è appunto quello il mio problema (devo commentare di più il codice ). Però a questo punto non so quale può essere il tuo. Prova a fare il debug riga per riga e guarda se riesci a trovare il problema.

    Per le doppie colonne non saprei cosa dirti. Del resto se hai disattivato l'auto generazione dovrebbe farti vedere solo le colonne che hai impostato tu. Prova a postare la query sql forse è lì il problema

  10. #10
    Utente di HTML.it L'avatar di ghini76
    Registrato dal
    Jun 2003
    Messaggi
    560
    Originariamente inviato da J-FIVE
    Anzichè fare solo il databind, prova a rimettere il codice per il caricamento della gridview. Sto provando in questo momento su una mia applicazione e mettendo solo il databind mi dà il tuo stesso problema. Prova e vediamo se si risolve...
    Ma te dici di ricreare sia il DataSet che il DataAdapter e quindi rieseguire anche la query sul database?

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.