Frage

Ich habe, was ich mir vorstellen, eine ziemlich Standard-Web-Schnittstelle sein.

Es gibt 4 verschiedene Listviews (grid Kontrollen), die auf der Oberseite durch eine Reihe von Registern zugegriffen werden.

Ich habe implementiert dies wie folgt:

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

Tab 1 wird geladen Seite 1 enthält Grid 1 in Frame 2, 2 Tab Page 2 enthält Grid 2 in Bild laden wird 2 etc.

Doch dann bedeutet dies, dass, wenn Sie in der Grid auf ein Element klicken, und ich DetailsPage1.aspx in Frame 2 laden, dann Frame 1 und die Laschen sind noch sichtbar und aktiv ist.

Ich habe in Kenntnis gesetzt wurde, dass ich nur einen Rahmen haben soll, und die Seiten lädt in dynamisch basierend auf dem Registerkarte klicken, mit Httprequest (oder WebRequest in asp.net).

Ist das der richtige Ansatz zu nehmen? Wenn Sie alle Ressourcen oder Tipps zur Hand haben, wäre es geschätzt werden!

Danke

War es hilfreich?

Lösung

Frames sind ein absolutes No-No. Es gibt keinen Nutzen für die Frames, die nicht mit anderen Techniken erreicht werden kann.

Bedeutet dies, dass Sie AJAX verwenden müssen? Nicht unbedingt. AJAX ist eine ganz gute Lösung, wenn Sie das Bedürfnis verspüren, eine reiche, nahtlose Schnittstelle zur Verfügung zu stellen, aber es ist nicht unbedingt notwendig.

könnten Sie verwenden Server-Side Includes Ihre Tabs in einen anderen (gemeinsamen) Unterseite zu trennen, aber da Sie ASP.NET erwähnen, (vorausgesetzt, Sie sind auf Rahmen v2 oder höher ausgeführt wird) Sie können Master-Seiten verwenden möchten , wo Sie Ihre Tabs sind in einem Inhaltsbereich oder im Master selbst und Ihre Grids / Details sind in einem anderen Inhalt Abschnitt.

Der wesentliche Unterschied zwischen den beiden Techniken ist, dass AJAX verwenden, um den Übergang von Registern zu Registern glatt und nahtlos, aber a) es dauert eine wenig zusätzliche Arbeit (vor allem, wenn Sie nicht vertraut sind mit jedem AJAX-Framework geben) und b ), da Sie im wesentlichen vier Seiten haben in einer Person, die Seiten sind ‚schwerer‘ und sind komplexer zu halten. Wenn Sie den nicht-AJAX Weg entscheiden, der entscheidende Unterschied ist, dass es ein kleiner, aber feiner Refresh-Effekt sein, wenn Sie auf jedem Registerkarte klicken (da es eine neue Seite jedes Mal lädt).

Natürlich Master-Seiten sind nützlich für eine konsistente Website Stil und Struktur beibehalten sowieso, also gibt es keinen Grund, warum Sie nicht AJAX mit einem Master-Page-System verwenden können.

Andere Tipps

Frames sind lahm: Sie werden Probleme bekommen, wenn die Nutzer ein Lesezeichen setzen möchten, und wenn die Nutzer Ihre Website über Google besuchen: Dann wird Ihr Navigationsrahmen ist nicht sichtbar. Sie müssen also eine Menge schmutziger Javascript. Um dies zu überprüfen. Wenn Sie Javascript benötigen, tun Sie es von Anfang an und verwenden AJAX

Ajax ist die beste Wahl. Aber bedenken Sie über rückwärts / vorwärts es Webbrowsern benutzbaren zu machen. Die beste Wahl ist auf Seite Hash zu ändern. Ich habe so etwas wie folgt aus:

domain.com/#tab1 für das erste Register domain.com/#tab2 für die zweite Registerkarte

und so weiter.

Wenn Sie jQuery verwenden, diese kann einen guten Anfang sein (ich benutze, und ich hatte Kein Problem mit). Ich bin sicher, es gibt eine Lösung für alle gängigen Rahmen aber:)

Statt Frames verwenden, sollten Sie nur Ihre Navigationsseite in allen Ihren anderen Seiten enthalten. Der Browser wird sehen, dass Sie das gleiche Dokument in allen Ihren Seiten sind inklusive und es zwischenspeichern.

Haben Sie die TabContainer oder alle 4 Laden Detail Scheiben und nur ein- / ausblenden Panels auf der Registerkarte Auswahl ändern?

Je nachdem, was schirmt Ihre Benutzer sehen, wenn Sie die Detailansichten dynamisch laden (Ajax oder Postbacks) Sie Probleme persistierenden keine Informationen haben kann, dass der Benutzer eingegeben hat, und Sie werden eine Wartezeit entstehen (Benutzer Dont warten möchte)

Ich würde mit jQuery und jQuery UI-Plugin empfehlen. Keine Frames werden benötigt, nur div-Container werden.

Wie StingyJack, würde ich vorschlagen, einen Blick auf die mit TabContainer Kontrolle, aber möchten Sie vielleicht darauf achten, dass Ihr Viewstate nicht zu groß wird, wenn Sie tun.

So zum Beispiel, nicht alles in einem Gridview laden, bis das Tab wird betrachtet wird und es sich um Inhalte zu entfernen, wenn es nicht (ist in die Datenbank natürlich Speichern zurück, falls erforderlich. Mit Hilfe der ActiveTabChanged Veranstaltung TabContainer würde diese Schlüssel strategy.You diable Viewstate für die Gitter, aber es lassen für den Container.

Sie ASP.NET verwenden, so laden nur alle 4 steuert in eine mutliview und dann auf Postbacks den sichtbaren eins gesetzt sein, die jemals Schaltfläche geklickt wurde.

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

NICHT verwendet Frames (oder iFrames was das betrifft), wenn Sie absolut muss ...

Die einzigen gültigen Gründe, die ich mir vorstellen kann verwendet werden (i) Frames Datei-Upload-Kontrollen in der Tat, und ich bin nicht sicher, ob es gültig ist es entweder ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top