ASP.NET:UpdatePanel只更新一次

时间:2012-03-20 06:14:55

标签: asp.net menu updatepanel repeater xmldatasource

我有一个由菜单控件(MenuItemClick)触发的UpdatePanel。在UpdatePanel中,有一个带有XML数据源的Repeater。单击菜单项后,将更新Repeater的XML数据源的XPath,并且转发器将显示更新的数据。

问题是,UpdatePanel只更新/刷新一次。第二次单击(在菜单项上)仍将触发回发并正确返回数据(从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 :(得分:0)

执行click事件的asp:菜单不包含在更新面板中,不确定这是否是直接问题,但它让我想知道此时回发是否异步发生。尝试在更新面板中包含asp:菜单,看看会发生什么。

答案 1 :(得分:0)

对于每个页面加载,它都是一个带有观察者函数的JavaScript错误:

        var prm = Sys.WebForms.PageRequestManager.getInstance();
        prm.add_pageLoaded(function (sender, args) {
            // some exception is generated here
        });