Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Gestione di campi dimanici e aggiornabili in tempo reale

    Ho una tabella di un DB che contiene i seguenti campi:

    desc - qt - valore

    io vorrei visualizzare questi campi in una pagina HTML, con l'aggiunta del campo Totale (qt * valore), e inserendo una colonna "sconto" ....

    inserendo una percentuale nella colonna sconto, il totale (qt * valore) dovrebbe essere aggiornato (rispetto a quello visualizzato inizialmente)!

    come posso farlo?

    Grazie per l'aiuto

  2. #2

    Re: Gestione di campi dimanici e aggiornabili in tempo reale

    Originariamente inviato da valeria75
    con l'aggiunta del campo Totale (qt * valore)
    codice:
    tuaDataTable.columns.add("Totale", GetType(system.decimal))
    , e inserendo una colonna "sconto" ....
    codice:
    tuaDataTable.columns.add("Sconto", GetType(system.decimal))
    inserendo una percentuale nella colonna sconto, il totale (qt * valore) dovrebbe essere aggiornato (rispetto a quello visualizzato inizialmente)!
    codice:
    m_dt.Columns("Totale").Expression = "qt * valore"
    io vorrei visualizzare questi campi in una pagina HTML
    una volta che hai la datatable, puoi decidere come visualizzarla sulla pagina web. Puoi usare una datagrid impostando la proprieta' DataSource = tuaDataTable
    Saluti a tutti
    Riccardo

  3. #3
    Aggiungi al WebForm un DataGrid in cui imposti le normali colonne associate (bound) per i campi Descrizione, Quantità, Valore, mentre per le colonne Totale e Sconto hai due strade in fase di creazione del DataGrid:

    1) puoi aggiungere esplicitamente le due colonne alla DataTable come suggerito da riccardone;

    oppure (utile nel caso tu non voglia utilizzare una DataTable ma ad es. un DataReader):

    2) puoi creare delle colonne di tipo template per Totale e Sconto, e inizializzarne i valori nell'evento ItemDataBound del DataGrid

    Se vuoi che al cambiamento del valore nel campo dello Sconto venga aggiornato il valore del campo Totale, puoi

    a) abilitare l'AutoPostBack per il campo Sconto, e scrivere del codice che dopo l'invio del form aggiorni il Totale prima di rivisualizzare il DataGrid

    b) oppure aggiungere agli attributi del campo Sconto, durante l'ItemDataBound del DataGrid, l'evento onChange in corrispondenza del quale richiamare uno script Javascript che modifica solo lato client, a video, il valore del Totale, lasciandoti la possibilità di confermare le modifiche in un solo passaggio finale, attraverso ad esempio un click su un pulsante di salva/conferma.

  4. #4
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Se vuoi che al cambiamento del valore nel campo dello Sconto venga aggiornato il valore del campo Totale, puoi

    a) abilitare l'AutoPostBack per il campo Sconto, e scrivere del codice che dopo l'invio del form aggiorni il Totale prima di rivisualizzare il DataGrid
    Grazie ad entrambi

    volendo visualizzare l'aggiornamento in tempo reale, come posso utilizzare l'autopostback per visualizzare il totale aggiornato??

    Grazie ancora

  5. #5
    Originariamente inviato da valeria75
    Grazie ad entrambi

    volendo visualizzare l'aggiornamento in tempo reale, come posso utilizzare l'autopostback per visualizzare il totale aggiornato??

    Grazie ancora
    In conseguenza dell'AutoPostBack, fai rifare il bindind del DataGrid, mettendo nell'evento ItemDataBound il calcolo riga per riga del totale, come ti dicevo prima.
    Ti consiglio di abilitare lo SmartNavigation, in modo da evitare il fastidioso effetto refresh ad ogni rendering del DataGrid, in modo che visivamente vengano aggiornate nella pagina solo le parti effettivamente modificate dopo l'AutoPostBack. Inoltre, con SmartNavigation attivo, non c'é bisogno di aggiungere script js per riposizionare il cursore sul campo che hai modificato.
    Solo, SmartNavigation funziona per il momento solo con InternetExplorer, perciò con altri browser continueresti per ora a vedere l'effetto refresh.

  6. #6
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    ottimo consiglio! non conoscevo questo trucchetto

  7. #7
    Originariamente inviato da Nospheratu
    Se vuoi che al cambiamento del valore nel campo dello Sconto venga aggiornato il valore del campo Totale, puoi...
    La strada qui suggerita e' percorribile ma la sconsiglierei. La colonna totale e' una colonna calcolata e come tale va trattata. Personalmente non effettuarei un calcolo di questo tipo con del codice nell'interfaccia utente (evento itemdatab... del datagrid).
    La strada a mio parere migliore e' quella di creare una datatable aggiungendo le colonne necessarie e soprattutto una espressione di calcolo per la colonna totale. Dopo di che, ad ogni update che l'utente effettuera', chiamerei una funzione che effettui il refresh della datasource della datagrid con la sua fonte dati (in memoria) dalla quale uscira' automaticamente il nuovo totale.
    Saluti a tutti
    Riccardo

  8. #8
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Dopo di che, ad ogni update che l'utente effettuera', chiamerei una funzione che effettui il refresh della datasource della datagrid con la sua fonte dati (in memoria) dalla quale uscira' automaticamente il nuovo totale.
    in che senso ad ogni update??

    come posso fare in modo che ogni volta che viene inserito un valore nel TextBox, automaticamente vengano aggiornati i campi


    secondo dubbio:

    se salvo in un DataTable i valori del DB

    DsDati = new DataSet();

    String SQLAziende = "SELECT * ...";
    OleDbDataAdapter myCommand = new OleDbDataAdapter(SQL,myConnection);
    myCommand.SelectCommand.CommandType=CommandType.Te xt;
    myCommand.Fill(DsDati, "Tabella");

    come aggiungo i nuovi campi? .... intedo dire quelli che devono essere gestiti dinamicamente

    Grazie per l'aiuto

  9. #9
    Premessa:
    Hai una datagrid che visualizza i valori presi da una datatable.
    La datagrid da la possibilita' all'utente di editare una singola riga alla volta.
    Una volta fatte le modifiche l'utente preme un pulsante sulla stessa riga per salvarle ed uscire dalla modalita' di edit della riga stessa.
    Originariamente inviato da valeria75
    in che senso ad ogni update??
    Ogni volta che l'utente ha modificato qualcosa e preme il pulsante (sulla stessa riga) per salvare le modifiche.
    come posso fare in modo che ogni volta che viene inserito un valore nel TextBox, automaticamente vengano aggiornati i campi
    La datagrid visualizza i dati prendendoli da una datasource. Alla proprieta' datasource della datagrid devi impostare come fonte dati la datatable. Ogni volta che cambi qualcosa nella datatable e aggiorni la datagrid (con il metodo DataBind) i dati saranno quelli aggiornati.


    secondo dubbio:

    se salvo in un DataTable i valori del DB

    DsDati = new DataSet();
    Il dataset e' l'oggetto piu' pesante che ci sia nel framework. Usalo solo se hai bisogno delle sue funzionalita'. Finora mi sembra che puoi fare il lavoro utilizzando solo una singola datatable quindi istanzia solo quella.
    codice:
    DtDati = new DataTable();
    codice:
    myCommand.Fill(DtDati); // qui metti solo la datatable
    come aggiungo i nuovi campi? .... intedo dire quelli che devono essere gestiti dinamicamente
    Come ti ho gia' indicato nel mio primo post.
    codice:
    nometuatabella.columns.add("nomecampo", GetType(system.decimal))
    questa e' la sintassi in vb.Net. In c# e' molto simile, guarda nella documentazione (dovrebbe cambiare solo il modo come si imposta il tipo del campo).
    Ricorda di approfondire anche l'utilissima funzione appartenente alle datacolumn della datatable Expression.
    es. di utilizzo
    codice:
    tuadatatable.Columns("Totale").Expression = "qt * valore"
    Saluti a tutti
    Riccardo

  10. #10
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    grazie 1k

    ora provo


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.