Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.NET] - Comparare 2 Datagridview

    Ciao a tutti!
    In un form di modifica voglio poter verificare se l'utente ha effettuato o no le modifiche prima di chiedere se le vuole salvare.
    A tal proposito creo via codice in runtime una copia "clone" di tutti i controlli editabili del form che vado a comparare quando mi serve per rilevare se ci son state o meno reali modifiche.

    Con controlli tipo textbox, numericUpDown ecc è tutto molto facile ma con le datagridview un po meno....

    Non sono nemmeno sicura di essere riuscita a clonarle in modo giusto per ora

    Detto questo vi do qualche info in più:

    • Le datagridview NON sono collegate a nessun datasource ma vengono popolate "a mano" da dei cicli for che vengono eseguiti all'occorenza.
    • Le datagridview NON hanno la riga "NewRow" attivata
    • Per clonarne la struttura ho usato questo codice:

    codice:
       For Each Col As DataGridViewColumn In dgv_Originale.Columns
                    dgv_Clone.Columns.Add(DirectCast(Col.Clone, DataGridViewColumn))
                Next

    Qualcuno conosce un modo per compararle senza dovere eseguire ogni volta un ciclo for che verifichi riga x riga e colonna x colonna?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Oltre alle colonne, essendo una griglia, dovresti clonare anche tutte le righe ed il confronto andrebbe fatto cella per cella.

    Clonare tutti i controlli solo per capire se vi sono state modifiche mi sembra però un tantino abnorme.

    Personalmente è da anni che uso una semplice variabile booleana dichiarata a livello di form e nell'evento Change (è fatto apposta) del controllo la imposto a True.
    Quando chiudo il form mi basta controllare questa variabile e, nel caso, avviso l'utente.

  3. #3
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    ottima soluzione, altrimenti se si desidera poter visualizzare le modifiche si può usare un array bidimensionale per salvare i dati del DGV
    Ultima modifica di patel; 29-04-2017 a 09:41

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Quote Originariamente inviata da gibra Visualizza il messaggio
    Oltre alle colonne, essendo una griglia, dovresti clonare anche tutte le righe ed il confronto andrebbe fatto cella per cella.

    Clonare tutti i controlli solo per capire se vi sono state modifiche mi sembra però un tantino abnorme.

    Personalmente è da anni che uso una semplice variabile booleana dichiarata a livello di form e nell'evento Change (è fatto apposta) del controllo la imposto a True.
    Quando chiudo il form mi basta controllare questa variabile e, nel caso, avviso l'utente.
    Non lo sapevo! Ti riferisci a ChangeUICues?

    Quote Originariamente inviata da patel Visualizza il messaggio
    ottima soluzione, altrimenti se si desidera poter visualizzare le modifiche si può usare un array bidimensionale per salvare i dati del DGV
    No no va benissimo anche il metodo di Gibra! A me serve solo non rompere le scatole all'utente che magari ha appena salvato col pulsante apposito e poco dopo chiude il form senza fare modifiche. E poi ho 3 datagridview e credo che coi bidimensionali diventerebbe un po intricato
    Ultima modifica di Veronica80; 29-04-2017 a 19:14

  5. #5
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,995
    penso si riferisca a CellValueChanged

  6. #6
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    aaaaah!
    ok uso la variabile per le celle delle dgv!
    Mentre magari per le txtbox checkbox ecc ecc uso una comparazione semplice!

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Cosa c'entra ChangeUICues ?

    Io ho indicato Change in senso generico, riferendomi ad un qualsiasi evento che viene interessato quando il valore di un controllo viene modificato dall'utente.
    In un TextBox può essere TextChanged, in un CheckBox sarà CheckedChanged oppure CheckStateChanged, in una DataGridView sarà CellValueChanged, e così via...

    Ricorda che tutti i controlli ereditano dalla classe Control, quindi potresti costruirti un evento personalizzato con AddHandler per gestire tutti i controlli.



  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Personalmente è da anni che uso una semplice variabile booleana dichiarata a livello di form e nell'evento Change (è fatto apposta) del controllo la imposto a True.
    Quando chiudo il form mi basta controllare questa variabile e, nel caso, avviso l'utente.
    Anche io sono anni che utilizzo questo sistema, ma in pagine web. E' semplice e funziona!
    Pietro

  9. #9
    Ciao, non sapendo bene come è strutturato il tutto... leggo che popoli la DGV manualmente, non puoi usare un datatable scollegato (creato al momento) e collegarlo alla dgv? Se puoi farlo, per sapere se sono stati modificati dei record, puoi usare la funzione GetChanges() .
    Logicamente, nel momento che i dati vengono salvati (con un button immagino), devi richiamare il metodo AcceptChanges().
    Jupynet

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.