我有一个由菜单控件(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 + "']";
}
答案 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
});