0

メニュー コントロール (MenuItemClick) によってトリガーされる UpdatePanel があります。UpdatePanel には、XML データ ソースを含む Repeater があります。メニュー項目をクリックすると、リピーターの XML データ ソースの XPath が更新され、リピーターは更新されたデータを表示します。

問題は、UpdatePanel が一度だけ更新/更新されることです。(メニュー項目で) 2 回目以降のクリックでもポストバックがトリガーされ、データは正しく返されます (Firebug から確認できます) が、UpdatePanel には返されたデータが表示されません。

<asp:Menu runat="server" Orientation="Horizontal" RenderingMode="List" 
    EnableTheming="False" ID="MenuBar" MaximumDynamicDisplayLevels="0"
    StaticDisplayLevels="1" DataSourceID="xdsSiteMap" 
    onmenuitemclick="TabBar_MenuItemClick">
    <DataBindings>
        <asp:MenuItemBinding DataMember="siteMapNode" TextField="title" ValueField="value" />
    </DataBindings>
</asp:Menu>
<asp:XmlDataSource ID="xdsSiteMap" runat="server" 
    DataFile="SiteMap.xml" XPath="SiteMap/siteMapNode">
</asp:XmlDataSource>

<asp:UpdatePanel runat="server" ID="upp">
<Triggers>
    <asp:AsyncPostBackTrigger ControlID="MenuBar" />
</Triggers>
<ContentTemplate>
    <asp:XmlDataSource ID="xdsData" runat="server" 
        DataFile="LinkData.xml" XPath="Links[@value='step1']"></asp:XmlDataSource>
    <asp:Repeater runat="server" ID="repeater" dataSourceID="xdsData">
    <ItemTemplate>
       <a href="<%#XPath("@url") %>"><%#XPath("Desc") %></a>
    </ItemTemplate>
    </asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>

分離コード:

    protected void TabBar_MenuItemClick(object sender, MenuEventArgs e)
    {
        xdsData.XPath = "Links[@value='" + e.Item.Value + "']";
    }
4

2 に答える 2

0

これは、ページの読み込みごとにオブザーバー関数を使用するJavaScriptの障害であることが判明しました。

        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_pageLoaded(function (sender, args) {
            // some exception is generated here
        });
于 2012-03-20T06:48:30.850 に答える
0

クリック イベントを実行している asp:menu は、更新パネル内に含まれていません。これが直接の問題であるかどうかはわかりませんが、この時点でポストバックがまったく非同期で発生しているかどうか疑問に思います。更新パネル内に asp:menu を含めてみて、何が起こるかを確認してください。

于 2012-03-20T06:24:57.590 に答える