在更新面板内捕获UserControl的Linkbutton事件

时间:2017-02-11 03:38:32

标签: c# asp.net .net webforms

我在更新面板中有一个UserControl调用itemUserControl。

<asp:UpdatePanel ID="updPanel" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
         <STX:ItemControl ID="itemUserControl" runat="server" />
    </ContentTemplate>
</asp:UpdatePanel>

在UserControl中,我有一个带有OnClick事件的链接按钮,我希望从用户控件的代码中捕获。

<asp:LinkButton ID="lnkBtn" runat="server" Text="ClickMe" OnClick="lnkBtn_Click" />

我似乎无法让它发挥作用:( 从谷歌搜索看起来我需要添加触发器来连接按钮点击事件。

<Triggers>
  <asp:PostBackTrigger ControlID="lnkBtn" EventName="Click" />
</Triggers>

但是,我无法在ContentTemplate标记之后的父页面上添加此触发器,因为Visual Studio没有看到按钮ID。有没有办法做到这一点?我只想让按钮事件触发用户控件后面的代码。

2 个答案:

答案 0 :(得分:0)

从包含的页面中删除<Triggers>,并在包含页面的Page_Load事件中添加以下行

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(MyControl.FindControl(&#34; lnkBtn&#34));

这将注册您的用户控件,点击

将触发链接按钮的点击事件

答案 1 :(得分:0)

除非您希望按钮执行完整的PostBack,否则您不需要捕获任何内容。如果您只是在用户控件后面的代码中添加lnkBtn_Click方法,它将被处理为异步。

如果您确实需要完整的PostBack,请在UserControl的Page_load中注册该事件的按钮。

protected void Page_Load(object sender, EventArgs e)
{
    ScriptManager.GetCurrent(Page).RegisterPostBackControl(lnkBtn);
}