繁体   English   中英

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

[英]Capture UserControl's Linkbutton event in inside an updatepanel

我在更新面板中有一个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。 有没有办法做到这一点? 我只希望按钮事件在后面的用户控件代码上触发。

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

ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); scriptManager.RegisterPostBackControl(MyControl.FindControl( “lnkBtn”));

这将注册您的用户控件,并在点击时触发链接按钮的click事件

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM