ASP.NET - 主页面中的更新面板,内容页面中的刷新按钮

时间:2011-02-26 14:49:25

标签: asp.net updatepanel master-pages ajax.net contentplaceholder

我在母版页面中有更新面板:

<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。

首先我尝试从内容页面添加它:

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);  
}

但它确实出错:在UpdatePanel'CartBox'中找不到ID为“BuyButton”的控件。

所以我尝试从母版页面添加:

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"));
    }
}

但是我得到了同样的错误。 : - (

那么你能告诉我如何添加到我的更新面板,内容页面的按钮可以刷新它吗?

1 个答案:

答案 0 :(得分:2)

修改

BuyButton按钮放在其自己的UpdatePanel内以及内容页面上。将您的AsyncPostBackTrigger添加到新的UpdatePanel,然后它就能找到该按钮,并将使用母版页中的ScriptManager