Domanda

Ho quello che immagino sia un'interfaccia web piuttosto standard.

Ci sono 4 differenti ListView (controlli griglia) a cui si accede da una serie di schede in alto.

L'ho implementato come segue:

alt text http://img402.imageshack.us/img402/1530/pagedu8 .jpg

La scheda 1 caricherà la pagina 1 contenente la griglia 1 nel frame 2, la scheda 2 caricherà la pagina 2 contenente la griglia 2 nel frame 2 ecc.

Tuttavia, ciò significa che se si fa clic su un elemento nella griglia e si carica DetailsPage1.aspx nel fotogramma 2, il fotogramma 1 e le schede sono ancora visibili e attivi.

Mi è stato consigliato che avrei dovuto avere solo un frame e caricare le pagine in modo dinamico in base al clic sulla scheda, usando HttpRequest (o WebRequest in asp.net).

È questo l'approccio corretto da adottare? Se hai risorse o suggerimenti a portata di mano, sarebbe apprezzato!

Grazie

È stato utile?

Soluzione

I frame sono un no-no assoluto. Non ci sono vantaggi per i frame che non possono essere raggiunti con altre tecniche.

Significa che devi usare AJAX? Non necessariamente. AJAX è una soluzione perfettamente valida se senti la necessità di fornire un'interfaccia ricca e senza interruzioni, ma non è strettamente necessario.

È possibile utilizzare le inclusioni sul lato server per separare le schede in un'altra (comune) sotto-pagina, ma poiché si menziona ASP.NET, (supponendo che si stia eseguendo su framework v2 o superiore), è possibile che si desideri utilizzare le pagine master , in cui le schede sono in una sezione del contenuto o nel Master stesso e le tue griglie / dettagli sono in un'altra sezione del contenuto.

La differenza chiave tra le due tecniche è che usando AJAX, il passaggio da una scheda all'altra sarà semplice e senza interruzioni, ma a) richiede un po 'di lavoro extra (in particolare se non si ha familiarità con qualsiasi framework AJAX) e b ) dal momento che in pratica hai 4 pagine in una, le pagine sono "più pesanti" e più complesse da mantenere. Se opti per il percorso non AJAX, la differenza fondamentale è che ci sarà un effetto di aggiornamento piccolo ma distinto quando fai clic su ciascuna scheda (poiché carica una nuova pagina ogni volta).

Naturalmente, le pagine mastro sono utili per mantenere comunque uno stile e una struttura del sito coerenti, quindi non c'è motivo per cui non si possa usare AJAX con un sistema di pagine mastro.

Altri suggerimenti

I frame sono zoppi: si verificano problemi se gli utenti desiderano impostare un segnalibro e se gli utenti visitano il tuo sito tramite Google: La cornice di navigazione non è visibile. Quindi hai bisogno di molto javascript sporco. per controllare questo. Se hai bisogno di JavaScript, fallo fin dall'inizio e usa AJAX

Ajax è la scelta migliore. Ma tieni a mente per renderlo consultabile via indietro / avanti. La scelta migliore è cambiare l'hash della pagina. Ho usato qualcosa del genere:

domain.com/#tab1 per la prima scheda domain.com/#tab2 per la seconda scheda

e così via.

Se usi jQuery, questo può essere un buon inizio (io lo uso e ho avuto Nessun problema con). Sono sicuro che esiste una soluzione per tutti i framework popolari :)

Invece di usare i frame, dovresti semplicemente includere la tua pagina di navigazione in tutte le altre pagine. Il browser vedrà che stai includendo lo stesso documento in tutte le tue pagine e memorizzalo nella cache.

Hai provato TabContainer o caricando tutti e 4 riquadri di dettaglio e solo mostrare / nascondere i pannelli nella modifica della selezione delle schede?

A seconda delle schermate che vedranno i tuoi utenti, se carichi dinamicamente le visualizzazioni dei dettagli (Ajax o postback) potresti avere difficoltà a conservare le informazioni inserite dall'utente e dovrai aspettare (gli utenti non vogliono aspettare)

Consiglierei di usare jQuery e jQuery UI plugin. Non saranno necessari frame, solo contenitori div.

Come StingyJack, suggerirei di dare un'occhiata al TabContainer control, ma potresti voler fare attenzione che ViewState non diventi troppo grande se lo fai.

Quindi, ad esempio, non caricare nulla in un GridView fino a quando non viene visualizzata quella scheda e rimuoverlo se non lo è (salvarlo di nuovo nel database, se necessario. L'uso dell'evento ActiveTabChanged di TabContainer sarebbe la chiave per questo strategia. È possibile visualizzare ViewState per le griglie ma lasciarlo attivo per il contenitore.

Stai usando ASP.NET, quindi carica tutti e 4 i controlli in una vista multipla e poi al postback imposta quello visibile in modo che sia mai stato cliccato il pulsante.

http://msdn.microsoft .com / it-it / library / system.web.ui.webcontrols.multiview.aspx

NON usa frame (o iframe per quella materia) a meno che tu non assolutamente devi ...

L'unico motivo valido che mi viene in mente di usare i (i) frame è in effetti il ??controllo del caricamento dei file, e non sono sicuro che sia valido lì ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top