从父页面触发UserControl UpdatePanel

时间:2012-03-29 19:59:02

标签: c# asp.net .net

我有一个带有UserControl的页面(其中链接按钮是动态创建的)。在页面上,我有一个UpdatePanel。我需要做的是将一个AsynchronPostBackTrigger添加到UpdatePanel,但指向UserControl内的LinkBut​​ton。

(在.aspx中)

 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
      <Triggers>
     <asp:AsyncPostBackTrigger ControlID="UserControl`s LinkButton" EventName="Click"
     </Triggers>       
 </asp:UpdatePanel>

因此,每当我点击UserControl中的LinkBut​​ton时,页面上的UpdatePanel都会刷新。

1 个答案:

答案 0 :(得分:1)

在我看来,最好的方法是在UserControl中提供一个自定义事件,该事件在LinkBut​​ton-Click上引发,可以在页面的UpdatePanel中用作AsyncPostbackTrigger。

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
     <Triggers>
        <asp:AsyncPostBackTrigger ControlID="UserControl1" EventName="LinkClicked" />
    </Triggers>       
</asp:UpdatePanel>

例如在您的UserControl中:

public delegate void OnLinkClicked(object sender, EventArgs e);
public event OnLinkClicked LinkClicked;

protected void LinkButton_Clicked(Object sender, EventArgs e)
{
    LinkClicked(sender, e);
}

然后在你的页面中:

protected void Page_Init(object sender, EventArgs e)
{
    MyControl1.LinkClicked += LinkClicked;
}

private void LinkClicked(object sender, EventArgs e)
{
    //this is an AsyncPostBack;
}