It is currently 7 June 2025, 19:35 Advanced search

Tabbed view con testata/dettaglio

Questo forum è nato con lo scopo di raccogliere le proposte di modifica di Instant Developer e discuterne insieme.

Tabbed view con testata/dettaglio

Postby Algon » 23 March 2011, 15:06

Abbiamo notato due comportamenti strani nelle form che contengono un tabbed view con 2 o più pannelli di tipo testata/dettaglio.

Il primo è che quando siamo su una certa riga di dettaglio e torniamo sulla testata e cambiamo riga, quando andiamo di nuovo sul dettaglio della nuova testata rimane posizionato sulla riga che avevamo lasciato prima invece che ritornare sulla prima.
La cosa potrebbe essere fastidiosa soprattutto quando ad esempio siamo sulla quarta riga di dettaglio di una testata e la testata successiva che selezioniamo ha meno di 4 dettagli, quindi quando torniamo sul dettaglio ci troviamo in nuova riga e potrebbe sembrare che non ci siano record per quella testata.

L'altro problema è che se su un dettaglio siamo nello stato "UPDATE" e tornado sulla testata cambiamo riga, ritornando sul dettaglio continuiamo a vedere il dettaglio precedente e non quelli della nuova testata. Non so se è possibile bloccare automaticamente il cambio riga quando ci sono modifiche in sospeso su un dettaglio, ma almeno si potrrebbe prevedere il parametro CANCEL per l'evento "On change row" in modo da poterlo gestire agevolmente anche da codice.
Algon
 
Posts: 7
Joined: 23 March 2011, 12:48

Re: Tabbed view con testata/dettaglio

Postby g.lanzi » 5 April 2011, 8:32

In effetti il comportamento del framework non cambia la riga corrente al refresh dei dati del pannello, cosa che avviene al momento del cambio riga della testata. Se lo facesse non sarebbe possibile sviluppare un'applicazione che cambiando dati rimane sempre posizionata nella stessa riga. Immagina di dover fare un pannello che ogni 10 secondi rinfresca i dati di 100 indicatori e che l'utente ne veda 20 per volta. Cambiando riga automaticamente sarebbe impossibile.

Nel caso in questione è sufficiente usare Dettaglio.ActualPosition = 0 nel change row della testata.

Per quanto riguarda il problema del pannello dettaglio che non si aggiorna perché in update, è l'unico modo per evitare all'utente di perdere i dati. L'evento di ChangeRow non ha il cancel perché viene notificato quando cambiano i dati della riga attiva, quindi al momento della notifica la riga corrente è già cambiata.

Un pannello dettaglio DB oriented ha semplicemente la query filtrata per un campo della riga corrente della testata, in questo caso non è presente una vero e proprio legame master-detail tra i pannelli, come nel caso Document Oriented.

E' necessario gestire manualmente i diversi casi nell'evento di ChangeRow della testata:
  • se vuoi che il dettaglio perda i dati al change row: if (dettaglio.status()==UPDATED) dettaglio.undoChanges;
  • se vuoi che il dettaglio salvi in automatico: if (dettaglio.status()==UPDATED) dettaglio.updateData;
  • se vuoi che la riga torni a quella precedente: if (dettaglio.status()==UPDATED) testata.findRecord(dettaglio.IDTestata);
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3504
Joined: 29 September 2010, 10:24
Location: Bologna

Re: Tabbed view con testata/dettaglio

Postby Algon » 8 April 2011, 15:39

Grazie,

a quanto ho capito e come temevo le due problematiche possono essere risolte solo da codice(purtroppo abbiamo tante form di questo tipo da sistemare singolarmente).
Per il secondo speravo si potesse implementare(non da codice) qualcosa di simile a quello che succede quando si chiude una form con pannelli in stato "Update".
Algon
 
Posts: 7
Joined: 23 March 2011, 12:48


Return to Proposte di modifica

Who is online

Users browsing this forum: No registered users and 15 guests