5

按鈕我有更新面板在母版頁:ASP.NET - 在主控頁面更新面板,刷新內容頁面

<asp:ScriptManager id="CartScript" runat="server"></asp:ScriptManager>  
<asp:UpdatePanel id="CartBox" runat="server" updateMode="Conditional"> 
    <ContentTemplate> 
    Košík [ <asp:HyperLink NavigateUrl="~/Account/Login.aspx" ID="ShoppingCart" runat="server" text="" /> ] <asp:LinkButton ID="DeleteCart" runat="server" Text="Vymazat košík" OnClick="ThrowCart_Click" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

和內容頁購買按鈕:

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">  
    <asp:Button ID="BuyButton" Runat="server" Text="Přidat do košíku" onclick="Buy_Click" /> 
</asp:Content> 

所以我需要爲此按鈕添加更新面板AsyncPostBackTrigger。

首先我tryed從內容頁添加:

protected void Page_Load(object sender, EventArgs e) 
{ 
    AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();   
    trigger.ControlID = "BuyButton"; 
    UpdatePanel panel = (UpdatePanel)Master.FindControl("CartBox"); 
    if (panel != null) 
    { 
     panel.Triggers.Add(trigger); 
    } 
    ScriptManager script = (ScriptManager)Master.FindControl("CartScript"); 
    script.RegisterAsyncPostBackControl(BuyButton); 
} 

但它確實錯誤:ID爲「BuyButton」中的UpdatePanel「CartBox」觸發找不到的控制。

所以我試圖從母版頁添加:

protected void Page_Load(object sender, EventArgs e) 
{     
    if ((Button)MainContent.FindControl("BuyButton")!=null) 
    { 
     AsyncPostBackTrigger trigger = new AsyncPostBackTrigger(); 
     trigger.ControlID = ((Button)MainContent.FindControl("BuyButton")).ID; 
     CartBox.Triggers.Add(trigger); 
     CartScript.RegisterAsyncPostBackControl((Button)MainContent.FindControl("BuyButton")); 
    } 
} 

但我得到了同樣的錯誤。 :-(

所以u能告訴我怎樣可以添加到我的更新面板,從內容頁面的按鈕可以刷新嗎?

回答

1

編輯

將自己的UpdatePanel內爲BuyButton按鈕然後它將能夠找到該按鈕,並將使用來自母版頁的ScriptManager

+3

他的更新面板在MasterPage中,而按鈕不是。 – 2011-02-26 14:56:42

+0

@StackOverflowException:啊,錯過了那個細節。謝謝 :) – mellamokb 2011-02-26 15:00:58