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