我想在有人点击“添加”按钮后刷新我的asp.net页面。但是,“添加”按钮是另一个用户控件内部的用户控件的一部分,并且子控件和父控件都包含在更新面板中:下面的代码被缩短显示,用户控件在另一个用户控件中的原因< / p>
内部第一控制:
<ajax:UpdatePanel ID="Panel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<uc:Control2 ID="Custom2" runat="server" />
</ContentTemplate>
</ajax:UpdatePanel>
然后在control2里面
<ajax:UpdatePanel ID="Panel2" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:LinkButton ID="AddButton" runat="server" OnClick="AddButton_Click"</asp:LinkButton>
</ContentTemplate>
</ajax:UpdatePanel>
答案 0 :(得分:5)
如果您想重新加载整个页面(而不仅仅是UpdatePanels的内容),您可以这样做:
Page.Response.Redirect("mypagename.aspx");
答案 1 :(得分:1)
假设您无法控制父用户控件,可以通过搜索父用户控件(FindControl
)的子控件来查找控件。然后,一旦你有了它的引用,你可以添加一个事件处理程序:
btnAddButton.OnClick += new EventHandler(MethodThatRefreshesPage);
由于您处于更新面板中,因此您需要执行Response.Redirect(Request.RawUrl)
之类的操作来刷新整个页面。
当然,如果您确实可以控制父用户控件,那么您可以创建自己的“AddClicked”事件并将订阅传递给链接按钮。或者您可以将LinkButton本身作为公共属性公开用户控制。
答案 2 :(得分:0)
我假设您要刷新页面,以便在页面中显示新添加的项目...正确吗?如果是这样,那么您可以将数据控件数据绑定为AddButton_Click事件的一部分。例如,如果您有一个显示项目的网格,那么用户单击Add按钮添加一个新项目,您可以将以下代码放入AddButton_Click事件中以“刷新”数据控件的内容并显示新添加的内容项:
protected void AddButton_Click(object sender, EventArgs e)
{
myGrid.DataBind();
}
希望这有帮助。
答案 3 :(得分:0)
事件冒泡(http://odetocode.com/code/94.aspx)怎么样?
答案 4 :(得分:0)
您没有指定脚本管理器的配置,但假设您配置了脚本管理器,如下所示:
<ajax:ScriptManager runat="server" ID="myScriptManager" EnablePartialRendering="true"></ajax:ScriptManager>
然后将此Trigger添加到Control2的UpdatePanel模板中,使其如下所示:
<ajax:UpdatePanel ID="Panel2" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:LinkButton ID="AddButton" runat="server" OnClick="AddButton_Click"</asp:LinkButton>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="AddButton" />
</Triggers>
</ajax:UpdatePanel>
这将触发一个PostBack,它允许您重新加载任何绑定数据(在Page_Load中),并且还将重新呈现整个页面而不仅仅是内部更新面板的内容。