后台动态为控件添加事件执行后台代码而不是js代码(例:单击GridView行后执行后台代码)

我们知道控件添加事件时比如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());
        }   
    }
posted @ 2012-03-10 23:22  菜鸟至菜  阅读(364)  评论(0)    收藏  举报