您当前位置: 拓展知识> GridView控件的批量删除OnRowDeleting事件

GridView控件的批量删除OnRowDeleting事件

来源:happymagic的专栏     发布时间:2016-05-30 11:32 浏览次数:6379    
字体大小 默认
  • 默认
  • 13pt
  • 14pt
  • 15pt
  • 16pt
  • 17pt
  • 18pt
  • 19pt
  • 20pt
  • 21pt
  • 22pt
  • 23pt
  • 24pt
  • 25pt
字体颜色

默认

  • 默认
背景颜色

默认

  • 默认

GridView控件的批量删除OnRowDeleting事件

为gridview“删除”列添加确认对话框?
1、继承Web.IO里的button控件,为其实现一个IPostback的接口用于回调,具体代码复杂

2、在gridview的ItemCreated事件中,遍历所有控件,若属于LinkButton类,且CommandName为“Delete”,
就将其添加一个属性,具体做法是将遍历到的Control强制类型转化为LinkButton,然后调用其Atributes.Add方法,
添加一个onclick事件内含confirm语句,即
lb.Attributes.Add("onclick", "return confirm('您真的要删除此行吗?')");

3、在删除按钮的那一列属性里面,把DeleteText属性设为
<div id="de" onclick="javascript:return confirm('确定删除吗?')">删除</div>

aspx:
<asp:GridView ID="gv" OnRowDeleting="gv_OnRowDeleting" DataKeyNames="字段" runat="server">
<Columns>
<asp:TemplateField>
  <ItemTemplate>
    <asp:CheckBox    ID="delall" runat="server" /> /*内嵌checkbox*/
  </ItemTemplate>
</asp:TemplateField>
<asp:CommandField DeleteText="<div id="de" onclick="javascript:return confirm('确定删除吗?')">删除</div> "ShowDeleteButton="True" /> /*DeleteText 删除对话框*/
</Columns>
</asp:GridView>
<asp:Button ID="btnAll" runat="server" Text="全选" onClick="btnAll_Click" />
<asp:Button ID="btnDelall" runat="server" Text="选定删除" onClick="btnDelall_Click" />

cs:
protected void gv_OnRowDeleting(object sender, GridViewDeleteEventArgs e)     //gridview删除
{
    Name = gv.DataKeys[e.RowIndex].value.ToString();     //gridview's DataKeyNames
    string delsql = "delete from table where 字段 = '"+ Name +"' ";      
    try
    {
        SQLHelper.ExecuteNonQuery(delsql);
        Response.Write("<script>alert('删除成功!')</script>");
    }
    catch (Exception ex)
    {
        Response.Write("<script language='javascript'>alert('" + ex.Message + "');</script>");
    }
    finally
    {
        this.gv.EditIndex = -1;
        this.gvbind();
    }
}
//批量删除 start
protected void btnAll_Click(object sender, EventArgs e)
{
    CheckBox cb;
    if (btnAll.Text == "全选")
    {
        for (int i = 0; i < gv.Rows.Count; i++)
        {
            cb = (CheckBox)gv.Rows[i].Cells[0].FindControl("delall");
            cb.Checked = true;
        }
        btnAll.Text = "取消";
    }
    else
    {
        for (int i = 0; i < gv.Rows.Count; i++)
        {
            cb = (CheckBox)gv.Rows[i].Cells[0].FindControl("delall");
            cb.Checked = false;
        }
        btnAll.Text = "全选";
    }
}

protected void btnDelall_Click(object sender, EventArgs e)
{
    string delallsql = "delete from table where ";
    string cal = "";
    for (int i = 0; i < gv.Rows.Count; i++)
    {
        CheckBox cb = (CheckBox)gv.Rows[i].Cells[0].FindControl("delall");
        if (cb.Checked == true)
        {
            cal += " 字段 ='" + gv.DataKeys[i].value.ToString() + "' or";
        }
    }
    if (cal != "")
    {
        delallsql += cal.Substring(0, cal.Length - 3);
    }
    else
    {
        delallsql = "";//不删除
     for (int i = 0; i < gv.Rows.Count; i++)
        {
            CheckBox cb = (CheckBox)gv.Rows[i].Cells[0].FindControl("delall");
            cb.Checked = false;
        }
    }
    try
    {
        SQLHelper.ExecuteNonQuery(delallsql);
        Response.Write("<script>alert('删除成功!')</script>");
    }
    catch (Exception ex)
    {
        Response.Write("<script language='javascript'>alert('" + ex.Message + "');</script>");
    }
    finally
    {
        for (int i = 0; i < gv.Rows.Count; i++)
        {
            CheckBox cb = (CheckBox)gv.Rows[i].Cells[0].FindControl("delall");
            cb.Checked = false;
        }
        this.gv.EditIndex = -1;
        this.gvbind();
    }
}
//批量删除 end

操作成功!此窗口3秒钟后自动关闭!
立即关闭