0 votes

onglets et panneaux de mise à jour asp.net jquery

J'utilise asp.net et jquery. Dans Default.aspx, j'ai implémenté quelques jquery-tabs qui chargent leurs données avec un appel ajax. Ils chargent une autre page asp.net MyTab.aspx. Mon problème est que lorsque je navigue dans l'onglet (MyTab.aspx) il recharge toujours la page complète (Default.aspx) mais je veux qu'il recharge seulement à l'intérieur de l'onglet. Par exemple, lorsque j'ajoute un élément, je veux juste que l'onglet soit rechargé.

J'ai donc ajouté un panneau de mise à jour à l'intérieur de MyTab.aspx. Le problème est que maintenant tous les liens sur Default.aspx sont cassés, ils ouvrent juste l'onglet sélectionné dans la fenêtre entière lorsqu'on clique dessus. C'est très étrange, mais j'ai lu qu'il était parfois difficile de faire fonctionner les updatepanels avec jquery.

Vous pouvez voir mon code ci-dessous. Y a-t-il quelque chose que je puisse faire différemment pour que cela fonctionne ?

Dans Default.aspx :

<html>
    <head runat="server">
        <script type="text/javascript">
            $(function() {
                $('.tabs').tabs();
            }); 
        </script>
    </head>
    <body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />
        <div class="tabs">
            <ul>
                <li><a href="#PanelTab">Tab0</a></li>
                <li><a href='MyTab.aspx?type=1'>Tab1</a></li>
                <li><a href='MyTab.aspx?type=2'>Tab2</a></li>
            </ul>
            <div id="PanelTab">Content0</div>
        </div>
    </form>
    <body>
<html>

Dans MyTab.aspx :

<html>
    <body>
        <form id="formTab" runat="server">
            <asp:ScriptManager ID="ScriptManagerTab" runat="server" EnablePartialRendering="true" />
            <asp:UpdatePanel runat="server" ChildrenAsTriggers="true" ID="UpdatePanelList" UpdateMode="Always">
                <ContentTemplate>
                    <asp:SqlDataSource ID="DSTab" 
                        runat="server"
                        DataSourceMode="DataSet"  
                        ConnectionString="XXX"
                        ProviderName="MySql.Data.MySqlClient" 
                        SelectCommand="XXX" 
                        >
                        <SelectParameters>
                            <asp:QueryStringParameter QueryStringField="type" Name="?type" />
                        </SelectParameters>
                    </asp:SqlDataSource>
                    <asp:GridView ID="GridViewTab" DataKeyNames="id" DataSourceID="DSTab" AutoGenerateColumns="false" runat="server" >
                        <Columns>
                            <asp:TemplateField>
                                <ItemTemplate>
                                    <asp:HyperLink ID="HyperLinkTab" NavigateUrl='Item.aspx' runat="server"><%# Eval("title")%></asp:HyperLink>
                                    <asp:Button OnClick="AddItem" ID="ButtonAddItem" Text="Add" runat="server" /> 

                                </ItemTemplate>
                            </asp:TemplateField>
                        </Columns>
                    </asp:GridView>
                    <asp:Button OnClick="CreateNewItem" ID="ButtonCreateNewItem" Text="Create New" runat="server" /> 
                </ContentTemplate>
            </asp:UpdatePanel>
        </form>
    </body>
</html>

0voto

visyoual Points 147

Créez vos onglets en dehors du panneau de mise à jour. Cela résoudra le problème.

0voto

shaahin Points 4760
<script type="text/javascript">
$(function () {
    $("#tabs").tabs({
        cookie: {
            // store cookie for a day, without, it would be a session cookie
            expires: 1
        }
    });

});
function pageLoad(sender, args) {
    if (args.get_isPartialLoad()) {
        //Dialog Code
        $("#tabs").tabs({
            cookie: {
                // store cookie for a day, without, it would be a session cookie
                expires: 1
            }
        });

    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X