Frage

Ich bin ein Web-Interface zu schaffen, die zur Zeit Daten lesen aus einer XML-Datendatei, analysiert ihn in eine Reihe von Gegenständen, nach dem ich es an die Datenquelle eines Gridview binden. Ich habe dann verwenden und die Daten, die ich von den Objekten für jede Spalte abgerufen werden soll.

Allerdings bin ich an dem Punkt, dass ich mehrere Tabs in diesem gridview haben möchte, möglicherweise durch verschiedene Link-Taste gesteuert. Jeder Reiter einen anderen Satz von Spalten zeigen würde.

Was wäre der beste Weg, dies zu implementieren? Muss ich drei separate Gridviews in meiner Seite haben müssen, und zeigen nur das eine, für die der Benutzer (basierend auf dem Klick auf den Link-Button) ausgewählt, während alle anderen versteckt? Dies schien wie es unnötig langsam sein könnte. Ist es möglich, über ein Gridview zu tun?

Im Moment ist die gesamte Gridview in einem AJAX-Update-Panel enthalten ist, mit dem folgenden Code:

<asp:Panel id="searchResultsGrid" runat="server" CssClass="searchResultsGrid">
    <asp:GridView id="gridViewSearchResults" runat="server" AutoGenerateColumns="false" 
                    AllowPaging="True" AllowSorting="True" 
                    PageSize="25" Width="920" PagerSettings-Visible="false">
    <Columns>
        <asp:templatefield headertext="Test Column 1 Tab 1" HeaderStyle-HorizontalAlign="Left">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 2 Tab 1" HeaderStyle-HorizontalAlign="Left">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 3 Tab 1" HeaderStyle-HorizontalAlign="Left">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 4 Tab 1" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 5 Tab 1" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 6 Tab 1" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>
        <asp:templatefield headertext="Test Column 7 Tab 1" HeaderStyle-HorizontalAlign="Right" ItemStyle-HorizontalAlign="Right">
            <itemtemplate>
                <%# GetColumnInfo() %>
            </itemtemplate>
        </asp:templatefield>                                                                                                    
    </Columns>
    <RowStyle CssClass="searchResultEntry borderTopGrey" />         
    <EmptyDataTemplate>
        <p class="searchResultsEmpty">
            <asp:Label ID="lblSearchResultsEmpty" runat="server" Text="No records matched the selected criteria.  Please revise your criteria and try again." CssClass="searchResultsEmpty"></asp:Label>
        </p>
    </EmptyDataTemplate>                
    </asp:GridView>
</asp:Panel>

Dies ist der Code, den ich zur Zeit für ein gridview habe, mit dem Inhalt einer Registerkarte. Basierend auf jdk Antwort, wie würde ich mich über andere Template für die zweiten und dritten Laschen zugibt und dann das Umschalten zwischen den verschiedenen Sätzen angezeigt wird, wenn eine Registerkarte Link-Schaltfläche geklickt wird?

Danke!

War es hilfreich?

Lösung

Die Seite Viewstate String kann sehr werden (unnötig) groß, wenn mehrere Gridviews vorhanden sind (die daraus resultierende HTML-Quellcode und die Suche nach „__VIEWSTATE“ anzuzeigen, es zu sehen). Sie können eine Gridview-Steuerelement verwenden, wie Sie gesagt haben, und Swap entsprechenden Daten in sie in Abhängigkeit von dem Linkbutton (auch bekannt als „Register“) wurde vor kurzem angeklickt.

Wenn dies auch ein paginierte Daten Szenario können Sie eine einfache Anordnung von drei ganzen Zahlen in Viewstate speichern Sie die aktuelle Seitennummer von jedem der drei Sätze von Daten darstellt, so können Sie die aktuelle Datenseite angezeigt werden, wenn sie tauschen in und aus dem ein Datagrid-Steuerelement.

Allerdings, wenn die Bandbreite kein Problem ist (das heißt, wenn die Seite nicht eine Menge Hits oder läuft auf einem Intranet erhält), dann sorgen Sie sich nicht so viel über sie zu optimieren.

Andere Tipps

Ich habe vor ähnliche Dinge getan. Ich benutzte Vorlage Spalten für die Gridview. Und legte eine Ajax Control Toolkit Registerkarte im Gridview.

Ich würde wahrscheinlich einen benutzerdefinierten Composite-Control (als Tabbed-Container) erstellen und die Raster-Ansicht, die hinzuzufügen. Ich würde es in eine nicht bündeln.

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