我们知道控件添加事件时比如btn1.Attributes["onClick"]=””;右边是字符串,也就是说可以使js了,但我如何让他执行后台自定义方法呢 ,后来在网上看到了
IPostBackEventHandler这个接口试了试确实可以。
例子:
单击GridView行后执行后台代码:
public partial class _Default : System.Web.UI.Page,IPostBackEventHandler
{
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
///
/// </summary>
/// <param name="eventArgument"></param>
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
{
//传的参数是否与该字符匹配("单击GrideView1:"实际是做一个标示,该字符随便怎么写)
if (eventArgument.StartsWith("单击GrideView1:"))
{
//这边截取的时"单击GrideView1:"这个字符后面的字符串也就是行的索引
单击GridView1后执行的后台代码(int.Parse(eventArgument.Substring(12)));
}
}
/// <summary>
/// 单击GridView1后执行的后台代码
/// </summary>
/// <param name="rowIndex">行的索引</param>
private void 单击GridView1后执行的后台代码(int rowIndex)
{
//在这里写上你要处理的代码
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//为GridView1的行添加单击事件(顺便传一个“单击GrideView1:”加行号为参数,参数就是上面你要执行的后台代码的参数:行的索引)
e.Row.Attributes["onClick"] = this.Page.ClientScript.GetPostBackEventReference(this, "单击GrideView1:"+e.Row.RowIndex.ToString());
}
}