ASP.NET - 在主控页面更新面板,刷新内容页面
问题描述:
按钮我有更新面板在母版页: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能告诉我怎样可以添加到我的更新面板,从内容页面的按钮可以刷新吗?
答
编辑
将自己的UpdatePanel
内为BuyButton
按钮然后它将能够找到该按钮,并将使用来自母版页的ScriptManager
他的更新面板在MasterPage中,而按钮不是。 – 2011-02-26 14:56:42
@StackOverflowException:啊,错过了那个细节。谢谢 :) – mellamokb 2011-02-26 15:00:58