我有一个aspx Web应用程序,其中存在1个aspx页面和1个Web用户控件。我在aspx页面中添加了4个用户控件实例。用户控件中有一个删除按钮,用于从aspx页面中删除控件。如果单击用户控件的“删除”按钮,如何找到从aspx页面单击的用户控件的“删除”按钮。请让我知道解决方案...
提前致谢:)
答案 0 :(得分:6)
我会向用户控件添加一个事件,并在后面的代码中捕获该事件。这是一个例子:
Default.aspx网络表单:
注册用户控件:
<%@ Register TagPrefix="so" TagName="UserControl" Src="~/WebUserControl.ascx" %>
上述控制的4个实例。请注意,我们正在处理下面定义的OnRemoving事件:
<so:UserControl ID="UserControl1" runat="server" Title="Control 1" OnRemoving="UserControl1_Removing" />
<so:UserControl ID="UserControl2" runat="server" Title="Control 2" OnRemoving="UserControl2_Removing" />
<so:UserControl ID="UserControl3" runat="server" Title="Control 3" OnRemoving="UserControl3_Removing" />
<so:UserControl ID="UserControl4" runat="server" Title="Control 4" OnRemoving="UserControl4_Removing" />
Default.aspx Code Behind:
在后面的代码中,我处理每个控件的OnRemoving事件:
protected void UserControl1_Removing(object sender, EventArgs e)
{
WebUserControl ctrl = (WebUserControl)sender;
ctrl.Visible = false;
}
protected void UserControl2_Removing(object sender, EventArgs e)
{
WebUserControl ctrl = (WebUserControl)sender;
ctrl.Visible = false;
}
protected void UserControl3_Removing(object sender, EventArgs e)
{
WebUserControl ctrl = (WebUserControl)sender;
ctrl.Visible = false;
}
protected void UserControl4_Removing(object sender, EventArgs e)
{
WebUserControl ctrl = (WebUserControl)sender;
ctrl.Visible = false;
}
用户控制网络表单:
网络用户控件包含一个“删除”按钮:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<fieldset>
<legend><%=Title %></legend>
<asp:Button ID="Button_Remove" runat="server" Text="Remove" OnClick="Button_Remove_Click" />
</fieldset>
用户控制代码落后:
最后,以下是如何为用户控件编写事件代码:
public partial class WebUserControl : System.Web.UI.UserControl
{
// the event delegates may listen for
public event EventHandler Removing;
public string Title { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button_Remove_Click(object sender, EventArgs e)
{
// raise the event for attached delegates
if (Removing != null)
Removing(this, EventArgs.Empty);
}
}
最终结果:
以上示例生成以下网页。单击删除按钮时,该控件将消失:
祝你好运!!
答案 1 :(得分:1)
如果您尝试执行此客户端,则可以像这样引用ID:
var removeButtonId = "<%=removeButton.ClientID %>";
如果您已点击点击事件,可以从sender
参数中获取,如下所示:
void removeButton_Click(object sender, EventArgs e)
{
Button removeButton = sender as Button;
string id = removeButton.ID;
}
答案 2 :(得分:0)
一种简单的方法:让用户控件实现RemoveClicked事件。然后,单击删除按钮时,在按钮单击事件处理程序中,触发RemoveClicked事件。该页面可以知道删除请求来自哪个用户控件。如果您愿意,您甚至可以通过事件参数传递按钮。对于所有4个用户控件,页面也必须附加到此事件,仅供参考。
此建议假设您正在寻找服务器端解决方案,而不是客户端解决方案。
HTH。