2012-03-20 52 views
0

我有一個由菜單控件(MenuItemClick)觸發的UpdatePanel。在UpdatePanel中,有一個帶有XML數據源的Repeater。點擊菜單項後,Repeater的XML數據源的XPath將被更新,並且中繼器將顯示更新的數據。ASP.NET:UpdatePanel只更新一次

問題是,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

它原來是一個JavaScript錯誤爲每個頁面加載觀察員功能:

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

ASP的:你在哪裏執行從更新面板中未包含的單擊事件菜單,不知道這是直接的問題,但它使我想知道回傳是否在這一點上是異步發生的。嘗試在更新面板中放入asp:菜單,看看會發生什麼。

+0

這是''什麼。正如我所說,回發肯定發生,updatePanel正在更新,但只在第一次點擊。 – 2012-03-20 06:27:25

+0

你能發佈你的page_load代碼嗎? – javram 2012-03-20 06:30:34

+0

什麼都沒有...... – 2012-03-20 06:40:47