【问题标题】:Trigger a UserControl UpdatePanel from a parent Page从父页面触发 UserControl UpdatePanel
【发布时间】:2012-03-29 19:59:02
【问题描述】:

我有一个带有 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 都会刷新。

【问题讨论】:

标签: c# asp.net .net


【解决方案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>

例如在您的用户控件中:

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;
}

【讨论】:

  • 感谢蒂姆的回应。我不确定你的意思,我将如何将 Click 事件用作 AsyncPostbackTrigger?假设我在页面中捕获了事件,那么我应该使用什么?
  • 我没有t see the rest or the answer, ill 试试这个。
  • @marko_net:已编辑以显示页面中的操作。除此之外,事件的签名必须包含 senderEventArgs 用于 UpdatePanel 触发器。
  • 错误提示:在 UpdatePanel 'UpdatePanel1' 中的触发器的关联控件 'UserControl1' 上找不到名为 'btn_Clicked' 的事件。 (页面.aspx)
  • (Page .cs) protected void btn_Clicked(object sender, EventArgs e) { Label1.Text = " BBBB";更新面板1.更新(); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多