ASP.NET: UpdatePanel обновляется только один раз - PullRequest
0 голосов
/ 20 марта 2012

У меня есть UpdatePanel, которая запускается элементом управления Menu (MenuItemClick). В UpdatePanel есть Repeater с источником данных XML. После щелчка по пункту меню источник XML-данных XPath of Repeater будет обновлен, а ретранслятор отобразит обновленные данные.

Проблема в том, что 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 + "']";
    }

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

Оказывается ошибка JavaScript с функцией наблюдателя для каждой загрузки страницы:

        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_pageLoaded(function (sender, args) {
            // some exception is generated here
        });
0 голосов
/ 20 марта 2012

Меню asp:, из которого вы выполняете событие click, не содержится на панели обновлений, я не уверен, что это напрямую связано с проблемой, но меня удивляет, происходит ли обратная передача вообще асинхронно на этом этапе. Попробуйте включить меню asp: в панель обновлений и посмотрите, что произойдет.

...