Un modello per scoprire se i dati in una finestra di dialogo sono stati modificati dall'utente?

2

Penso a un modello o un'altra soluzione intelligente per quel problema. Sto cercando una soluzione più generalizzata e riutilizzabile.

Carico una riga / oggetto esistente e ancora persistente da un database e visualizzo questi dati in una finestra di dialogo modificabile per l'utente.

Quando chiudi la finestra voglio sapere se l'utente ha modificato i dati in quella finestra di dialogo. per esempio. Dovrei riportare le modifiche all'istanza del database e memorizzarle.

Potrei semplicemente controllare ogni attributo dalla finestra con il database. Oppure potrei aggiungere i gestori di eventi a ciascun componente della finestra che imposterà un isModified -flag o qualcosa del genere. Ma questo non mi sembra intelligente.

Forse c'è una soluzione riutilizzabile più generalizzata per questo?

    
posta buhtz 03.11.2015 - 02:39
fonte

3 risposte

2

I could simply check each attribut from the window with the database

È meglio controllare che i dati siano cambiati prima di inviarli al DB. Quindi vorrei leggere i dati da mostrare nella memoria locale (ho trovato che il modo migliore era un array di mappe di variabili codificate dal nome del controllo), copiarlo nel controllo della GUI e quindi controllare le differenze quando la GUI è chiusa - se i dati è diverso, quindi inviarlo al DB.

    
risposta data 03.11.2015 - 12:10
fonte
0

Penso che le tue due opzioni fondamentalmente la inchiodino. Io tendo a preferire l'opzione bandiera. Se si dispone di un'interfaccia utente appropriata, questa può essere combinata con il modello Comando (i metodi di esecuzione memorizzeranno il valore corrente di isModifies; annullano i metodi ripristinano il valore salvato).

    
risposta data 03.11.2015 - 03:27
fonte
0
  1. Gestori di eventi: utile quando vuoi sapere in "tempo reale" se qualcosa è cambiato
  2. Controllo semplice: utile quando vuoi pigramente sapere se qualcosa è cambiato

Poiché è importante che tu lo sappia quando la finestra si sta chiudendo, andrò con l'opzione 2.

    
risposta data 03.11.2015 - 09:59
fonte

Leggi altre domande sui tag