GridView添加删除确认

一、在GridView中添加删除确认对话框
实现方法:
双击GridView的OnRowDataBound事件;
在后台的GridView1_RowDataBound()方法添加代码,最后代码如下所示:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
 {
        //如果是绑定数据行 
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
              if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
            {
                ((LinkButton)e.Row.Cells[6].Controls[0]).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:" + e.Row.Cells[1].Text.Trim() + "吗?')");
            }
        }

}

方法二:
在GridView的RowCommand事件中添加代码
protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate)
            {
              
             LinkButton btnDelete = (LinkButton)e.Row.FindControl("LinkButton1"); 
             btnDelete.Attributes.Add("onclick", "Javascript:return " +"confirm('Are you sure you want to delete this record " +DataBinder.Eval(e.Row.DataItem, "NewsTitle") + "')");
            }
        }
    }
protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        oa jkj=new oa();
        GridViewRow dr = GridView2.Rows[e.RowIndex];
        string id = dr.Cells[1].Text;
        string sql = "Delete from news where newsid=" +id ;
        jkj.Command(sql);//自定义类
        Bind();
    }
 

方法三:

如何为gridview控件里的“删除”列添加一个确认对话框?网上众说纷纭,大致见到了三种解决方案,现归纳如下:
1、继承Web.IO里的button控件,为其实现一个IPostback的接口用于回调,具体代码之复杂,只有作者自己想体会吧……
2、在gridview的RowDataBound事件中,遍历所有子控件,若属于LinkButton类,且CommandName为“Delete”,就调用其Atributes.Add方法,添加一个onclick事件内含confirm语句,即
lb.Attributes.Add("onclick", "return confirm('您真的要删除此行吗?')");


这种做法效率低下而且代码十分不雅。
3、 目前已知的最简洁的方法,如图,在删除按钮的那一列属性里面,把DeleteText属性设为
删除
 

这个太强了,赞一个。
可问题是,.net输出的html代码如下:
删除
 
为什么内层
的onclick事件所返回的bool值能影响到外层标签的的语句是否被执行呢?
仔细想了想,以前用asp直接写的删除标签是这个样子的:
删除 
也就是说,onclick事件接受一个bool值,其决定了click事件是否被触发。若click事件没有被触发,href内含的跳转动作就不会生效。同理,之前的那段代码中,

你可能感兴趣的:(Asp.Net,C#)