+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 8 su 8

[ASP.Net] Aggiornare una gridview a runtime

  1. #1
    L'avatar di Takhysis
    Takhysis non è in linea Novello
    Ciao a tutti!

    Oggi ho messo piede per la prima volta nel "fantastico mondo" di asp.net

    quel che devo fare credo sia un qualcosa di veramente stupido per qualcuno che sappia come ci si muove in questo mondo, ma io non ne sono assolutamente capace

    il mio problema è questo:
    avere una combobox con dei nomi di tabelle (e fin qui ci sono) e una gridbox, che vorrei contenesse i campi della tabella correntemente selezionata (una semplice select *), poi una seconda combobox da riempire con i nomi dei campi della tabella selezionata e un grafico relativo al campo selezionato..

    ora, per quanto riguarda la tabella, io ho provato a infilare questo codice nel gestore dell'evento selectedindexchanged:

    string curItem = DropDownList1.SelectedItem.ToString();
    
    this.SqlDataSource1.SelectCommand = "SELECT * FROM " + curItem;
    this.SqlDataSource1.DataBind();
    
    e a quanto ho capito il datasource viene effettivamente cambiato, ma nn so come aggiornare la gridview :/


    e avete idea di come posso prendere le colonne di una tabella in mysql?
    ho provato con la show columns ma non restituisce solo i nomi (anche i tipi ecc) quindi non è così facile come la show tables


    vi ringrazio tantissimo!
    ℹ️ Leggi di più su Takhysis ...

  2. #2
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Ciao Takhysis
    hai diverse strade che puoi percorrere per raggiungere il tuo scopo.
    Anche se a prima vista il tuo codice può sembrare corretto, in realtà c'è una cosa che bisogna evitare, mai concatenare gli statement in quel modo(vedere sql injection e uso dei sqlparameter).
    Detto ciò bisogna capire se l'evento SelectedIndexChanged del controllo DropDownList scatta(debuggare è fondamentale per capire il ciclo di vita della pagina).
    Molto probabilmente non hai attivato sul controllo DropDownList la property AutoPostBack a true.
    Se poi hai assegnato in modo corretto il SqlDataSource al controllo GridView il tutto funziona come ti aspetti.
    Per quanto riguarda invece il secondo quesito cioè recuperare lo schema della tabella selezionata puoi procedere anche qui in diversi modi.
    Puoi Per esempio utilizzare il metodo GetSchema dell'oggetto SqlConnection ma ciò implica aprire una nuova connessione:
        //try catch finally da non dimenticare
        System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("connessione");
        con.Open();
        DataTable dt = con.GetSchema("Columns", new string[] {null, null, DropDownList1.SelectedItem.Text, null});
        con.Close();
        DropDownList2.DataSource = dt;
        DropDownList2.DataTextField = "COLUMN_NAME";
        DropDownList2.DataValueField = "COLUMN_NAME";
        DropDownList2.DataBind();
    
    Oppure più banalmente puoi ciclare sulla celle dell'header del controllo GridView evitando così un'inutile connessione. Questa operazione si può per esempio svolgere a livello dell'evento PreRender del controllo GridView:
    if (GridView1.HeaderRow != null && GridView1.HeaderRow.Cells.Count > 0)
        {
          foreach (TableCell cell in GridView1.HeaderRow.Cells)
          {
            DropDownList2.Items.Add(new ListItem(cell.Text, cell.Text));
          }
        }
    
    Le soluzioni sono tante il tutto dipende dal tuo scenario e dalle tue conoscenze.
    Ultima modifica di SignIn; 21-05-2008 22:38 
    ℹ️ Leggi di più su SignIn ...

  3. #3
    L'avatar di Takhysis
    Takhysis non è in linea Novello
    Quote Originariamente inviato da SignIn Visualizza il messaggio
    Ciao Takhysis
    hai diverse strade che puoi percorrere per raggiungere il tuo scopo.
    Anche se a prima vista il tuo codice può sembrare corretto, in realtà c'è una cosa che bisogna evitare, mai concatenare gli statement in quel modo(vedere sql injection e uso dei sqlparameter).
    si sono a conoscenza del problema, ma nel contesto in cui verrà usato quest'applicazione non corro il rischio
    non è aperta "al pubblico" ma solo ai proprietari dei dati che verranno visualizzati, quindi non credo si metteranno a far danni sui loro stesso dati :P

    Detto ciò bisogna capire se l'evento SelectedIndexChanged del controllo DropDownList scatta(debuggare è fondamentale per capire il ciclo di vita della pagina).
    Molto probabilmente non hai attivato sul controllo DropDownList la property AutoPostBack a true.
    Se poi hai assegnato in modo corretto il SqlDataSource al controllo GridView il tutto funziona come ti aspetti.
    uhm no immagino la mia AutoPostBack sia felicemente su false :P
    l'assegnazione dovrebbe essere corretta, appena torno in ufficio vi faccio sapere se era solo quella il problema

    Per quanto riguarda invece il secondo quesito cioè recuperare lo schema della tabella selezionata puoi procedere anche qui in diversi modi.
    ..
    Le soluzioni sono tante il tutto dipende dal tuo scenario e dalle tue conoscenze.
    le conoscenze sono pressochè nulle ^^" ma orientativamente penso sceglierò la seconda via

    ti ringrazio tantissimissimo! appena ho risolto (spero domani pomeriggio) ti faccio sapere
    ℹ️ Leggi di più su Takhysis ...

  4. #4
    L'avatar di Takhysis
    Takhysis non è in linea Novello
    Hmm ci dev'essere qualcos'altro che non va

    non è che devo in qualche modo svuotare la gridview prima?

    perchè mi da questo errore:

    "A field or property with the name 'code' was not found on the selected data source."

    dove code è un campo della prima tabella che visualizzo che non c'è nelle altre.

    sembrerebbe che voglia riscrivere i dati della nuova tabella con gli stessi header di colonna.. come gli dico di resettarsi? :/
    Ultima modifica di Takhysis; 23-05-2008 15:44 
    ℹ️ Leggi di più su Takhysis ...

  5. #5
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    .....ma il tutto comè incastrato con quello che si è detto nei post precedenti?..
    ℹ️ Leggi di più su SignIn ...

  6. #6
    L'avatar di Takhysis
    Takhysis non è in linea Novello
    uhm non so come ma mi è sparito un post :O


    cmq il problema della gridview l'ho risolto


    adesso ho un altro problema, che è la connessione al database, e credo il punto sia che il codice che mi avevi passato serve per connettersi a un server sql di microsoft mentre io dovrei connettermi a un server mysql
    ℹ️ Leggi di più su Takhysis ...

  7. #7
    L'avatar di Takhysis
    Takhysis non è in linea Novello
    Risolto pure la connessione ^^

    ora mi resta solo da disegnare il grafico

    grazie mille degli aiuti ^^
    ℹ️ Leggi di più su Takhysis ...

  8. #8
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Quote Originariamente inviato da Takhysis Visualizza il messaggio
    uhm non so come ma mi è sparito un post :O
    ...ah ecco perchè non capivo
    Quote Originariamente inviato da Takhysis Visualizza il messaggio
    ...mentre io dovrei connettermi a un server mysql
    ...sorry non avevo letto attentamente...
    Quote Originariamente inviato da Takhysis Visualizza il messaggio
    Risolto pure la connessione ^^
    ...meglio così (è abbastanza semplice)
    Quote Originariamente inviato da Takhysis Visualizza il messaggio
    ora mi resta solo da disegnare il grafico
    ...se si tratta di una richiesta molto diversa da ciò che abbiamo analizzato ti conviene aprire un altro topic
    ℹ️ Leggi di più su SignIn ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Aggiornare recordset senza aggiornare la tabella
    Da Dario56 nel forum Visual Basic 6
    Risposte: 9
    Ultimo Post: 15-10-2011, 00:58
  2. Risposte: 0
    Ultimo Post: 25-01-2010, 14:49
  3. gridview
    Da dan1987 nel forum ASP 3, ASP .Net
    Risposte: 0
    Ultimo Post: 16-09-2009, 11:44
  4. GridView e EditItemTemplate
    Da 1djluigi nel forum ASP 3, ASP .Net
    Risposte: 1
    Ultimo Post: 05-11-2008, 14:49
  5. [ASP.NET 2.0]GridView
    Da Sonnyland nel forum ASP 3, ASP .Net
    Risposte: 2
    Ultimo Post: 25-02-2007, 23:29