Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    42

    uso GridView in modo dinamico

    Nel mio sito voglio mettere una GridView e cambiare dinamicamente le sue proprietà, es, visibilità o, meglio ancora, data source. come devo fare?
    premetto che ci sto provando da un pò
    e riesco a cambiare entrambe le caratteristiche...ma non riesco a vederle....
    sono alle prime armi di programmazione web e temo che si tratti di uno di quei casi "il server lo sa, ma il client no"...e come si fa??
    devo usare un componente ajax?
    ho provato anche ad usare un update panel...ma mi dice che non gli piace la gridview...
    grazie grazie grazie...
    Pat
    Pat

  2. #2
    ciao,
    per quanto riguarda il DataSource, c'è un esempio qui .

    Per la visibilità è sufficiente che imposti la proprietà visible del controllo che vuoi/non vuoi visualizzare a true/false.

    Forse se ci dici cosa vuoi fare esattamente riusciamo a darti consigli più concreti

    Ciao,
    b.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    42

    dettaglio di cosa provo a fare....

    innanzitutto grazie a tutti...per le risposte e la pazienza, ma sono nuova e molto ignorantella di asp.net.

    io ho, nella mia pagina ASP.NET una GridView (grid) a cui lego inizialmente un DataView (datoInit) con i seguenti comandi nel metodo Page_Load della mia pagina asp.net:

    grid.DataSource = datoInit;
    grid.DataBind();

    e fin qui tutto funziona perfettamente.

    Nella mia pagina asp.net metto anche una serie di pulsanti e vorrei che, premendo un pulsante, cambio totalmente i dati contenuti nella mia grid. quindi reperisco il riferimento alla grid (e funziona), costruisco il nuovo datasource (lo chiamo datoReplace) e funziona...e quando provo a fare
    grid.DataSource = datoReplace;
    grid.DataBind();
    non funziona...o meglio, a video non vedo nulla di diverso.
    Io penso che sto cambiando i dati della gridView (ho provato a rimuovere colonne, inserirne...e dai riferimenti, prima di uscire dal metodo, mi sembra che lo faccia...), ma probabilmente mi manca il passaggio del refresh...
    Ho il dubbio che devo scatenare qualche evento di rendering/refresh sul client....ma sto dicendo cose a me del tutto incomprensibili....

    che faccio???
    grazie grazie grazie....
    Pat

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    No, il client non c'entra. Controlla che il primo bind NON lo faccia di nuovo, dopo il refresh.

    Di solito si tratta del controllo su Page.IsPostBack nel page_load.
    Cioè, il primo bind deve farlo soltanto la prima volta che entra nella pagina, non sempre.

    Il riferimento alla grid non serve, se ho ben capito cosa fai.

    Dovrebbe bastare:

    codice:
    grid.DataSource = null;
    grid.DataSource = datoReplace;
    grid.DataBind();
    Ovviamente le due sorgenti devono avere strutture uguali, questo mi sembra ovvio...

  5. #5
    prima di tutto vorrei capire se la griglia ha le colonne impostate, oppure ha autogeneratecolums = true.

    in secondo luogo, l'assegnazione del nuovo datasource, lo fai all'interno della funzione legata al click del pulsante? (button1_Click)

    Inoltre metti un brackpoint sulla riga
    grid.datasource = datoReplace;
    e vedi se dentro datoReplace ci sono effettivamente delle righe.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    42
    autogeneratecolums = true

    si, l'assegnazione del nuovo datasource lo faccio all'interno della funzione legata al click del pulsante (button1_Click)

    dentro datoReplace ci sono delle righe
    ....
    uff.....
    Pat

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    non puoi usare un altro GV e nascondere il primo ?

    posta tutto il codice comunque. e' meglio..

  8. #8
    ok, con autogeneratecolums=true ti puoi permettere che i due datasource possano essere diversi come colonne.

    Non capisco però perché non si veda nulla.
    Ci sono deigli updatepanel per caso?
    hai altri eventi e/o funzioni nella pagina? il button1_Click è l'ultimo?

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    42
    Si, ci sono degli update panel, ma non relativamente alla mia lista:

    <div id="divDati" style="top:505px;left:0px;height:60px;width:auto;p osition: absolute; background-color:#EFF1F1">
    <asp:GridView ID="GridView1" runat="server" style="height:100%; width:100%;" Visible="True" >
    </asp:GridView>
    </div>


    non so...ma io anche se provo a fare semplicemente questo codice:

    GridView gwEsistente = (GridView)page.FindControl("GridView1");
    gwEsistente.Visible = false;

    non ci pensa manco per niente a nascondermi la lista...e gwEsistente contiene il rif alla lista...
    Pat

  10. #10
    99,9 su cento la causa è l'updatepanel.
    quando clicchi il bottone, tu fai aggiornare solo l'updatePanel, quindi la griglia non viene renderizzata.

    togli momentaneamente l'updatepanel e vedrai che funziona.

    poi fai questi controlli:
    1 - server l'updatepanel?
    2 - se serve, cosa devo aggiornare e quando
    3 - La griglia può stare in un updatepanel dedicato solo a lei?
    4 - se si, metti griglia e pulsante (importante che stiano assieme) in un nuovo updatepanel.

    ciao

    P.S.: mortacci tua....!!!!!

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 © 2026 vBulletin Solutions, Inc. All rights reserved.