我有一个 LinkButton 服务器控件,在somepage.aspx.cs文件中的OnClick事件中有一些附加方法抛出它的Id(控件),我想向该LinkButton添加另一个服务器端事件
如何实现?
编辑:
在default.aspx.cs上 这是一行打开一个新窗口的代码
lnlBtnProfile.Attributes.Add("onClick", "newwindow('" + acc.ProfileUrl + "','MyProfile');return false");
但我希望同时执行另一个功能。
答案 0 :(得分:3)
您可以通过以下方式为服务器端点击事件添加多个处理程序:
protected void Page_Load(object sender, EventArgs e)
{
linkBtn.Click += new EventHandler(handler1);
linkBtn.Click += new EventHandler(handler2);
}
protected void handler1(object sender, EventArgs e)
{
lbl.Text += "33";
}
protected void handler2(object sender, EventArgs e)
{
lbl.Text += "66";
}
这将导致在单击给定链接按钮时触发handler1和handler2。
答案 1 :(得分:1)
这是一个带有客户端和服务器端事件的LinkButton:
<asp:LinkButton runat="server" ID="myLink"
OnClientClick="alert('this is clientside event');"
OnClick="myLink_Click">
</asp:LinkButton>
这是服务器端事件:
private void myLink_Click(object sender, EventArgs e)
{
// Do some stuff
}
对客户端事件使用 OnClientClick ,对服务器端事件使用 OnClick 。但是如果你在OnClientClick上写了一个返回false,你的控件将不会回发,并且不会调用你的服务器端事件。
编辑:正如我所说,只需删除'return false;' line,以及您附加的服务器端事件将被调用。因为'回归虚假;'阻止你的其余代码,包括回发到服务器。
lnlBtnProfile.Attributes
.Add("onClick", "newwindow('" + acc.ProfileUrl + "','MyProfile');");
lnlBtnProfile.Click += new EventHandler(lnlBtnProfile_Click);