2014-01-09 109 views
2

基本上我有這種情況ASP.NET更新面板內ListView控件沒有更新

頁> 更新面板> 用戶控制> 列表視圖> 用戶控件(在項目模板)> 更新面板

當我點擊最內層更新面板中的一個按鈕時,我想要更新更新面板的內容。這沒有發生。但是,點擊處理程序異步打擊很好。更新面板只是不想更新。

代碼 - 我創建了一個簡單的測試Web應用程序進行復制的問題,並分享它在我的谷歌驅動器:UpdatePanelInListViewTest.zip,但這裏的標記:

頁:

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<asp:UpdatePanel ID="ajaxParent" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <uc1:ListUserControl ID="ListUserControl1" runat="server" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

列表用戶控制:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ListUserControl.ascx.cs" Inherits="UpdatePanelInListViewTest.ListUserControl" %> 
<%@ Register src="MiniWidget.ascx" tagname="MiniWidget" tagprefix="uc1" %> 
<asp:ListView ID="lstTest" runat="server"> 
    <ItemTemplate> 
     Item 
     <uc1:MiniWidget ID="MiniWidget1" runat="server" /> 
    </ItemTemplate> 
</asp:ListView> 

迷你小窗口的用戶控制

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MiniWidget.ascx.cs" Inherits="UpdatePanelInListViewTest.MiniWidget" %> 
<asp:UpdatePanel ID="ajaxWidget" runat="server" UpdateMode="Conditional"> 
    <ContentTemplate> 
     <asp:LinkButton ID="lnkTest" runat="server" onclick="lnkTest_Click">Test</asp:LinkButton> 
     <asp:Label ID="lblTest" runat="server" Text=""></asp:Label> 
    </ContentTemplate> 
</asp:UpdatePanel> 

我試過不同的排列組合;即讓面板上的按鈕和添加一個觸發器等,但我不能讓它更新。

看來,這是因爲用戶控制是父目錄的項目模板中查看它導致更新面板因某些原因無法更新...

+0

您的頂級UpdatePanel上是UpdateMode =「Conditional」嗎?你可以嘗試將其改爲「始終」? – sh1rts

+0

我試過兩種。沒有成功 –

+0

順便說一句,我不希望父母更新,所以它應該設置爲條件。 –

回答

1

問題在於當您撥打數據綁定方法時ListUserControl

移動lstTest.DataBind();,以便它Page_Load而非Page_PreRender修復這個問題爲您簡單的測試Web應用程序內執行。

+1

是的。好一個。我把它放在預渲染中,因爲與列表視圖一起使用數據尋呼機的問題:(http://stackoverflow.com/questions/234289/listview-with-datapager-not-working)但它確實不會使感覺在預渲染中做數據綁定。 –

0

具有u嘗試:

<asp:UpdatePanel ID="ajaxPanel" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional"> 
<Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btnTest" /> 
</Triggers> 
     <ContentTemplate> 
      <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
      <asp:Button ID="btnTest" runat="server" Text="Test" onclick="btnTest_Click" /> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
+0

是啊,試過... –

+0

在.aspx頁面上有U ScriptManager? – delirek

+0

是的。下載測試應用程序 –