我们项目后台操作中不可避免的会有同时删除多项的操作,本文实现的就是当点击全选时,选定当前页中所有项,当取消了某一项的选定,则“全选”CheckBox的checked也为false;然后在后台中取到所选定的项的ID,实现同时删除多项的功能。

前台代码

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewsForm.aspx.cs" Inherits="Admin_NewsForm" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
<script type="text/javascript" language="javascript">
function isOrNotCheckAll(checkValue)
{
var arrAllCheckBoxes = document.getElementsByTagName("input");
//check all
if(checkValue==true)
{
for(i=0;i<arrAllCheckBoxes.length;i++)
{
if(document.getElementById(arrAllCheckBoxes[i].id).type=="checkbox")
{
document.getElementById(arrAllCheckBoxes[i].id).checked=true;
}
}
}
//do not check any one
if(checkValue==false)
{
for(i=0;i<arrAllCheckBoxes.length;i++)
{
if(document.getElementById(arrAllCheckBoxes[i].id).type=="checkbox")
{
document.getElementById(arrAllCheckBoxes[i].id).checked=false;
}
}
}
}
function CBDeleteClick(clientID,checkAllClientID)
{
var arrAllCheckBoxes = document.getElementsByTagName("input");
//there has some one not be checked
if(document.getElementById(clientID).checked==false)
{
for(i=0;i<arrAllCheckBoxes.length;i++)
{
if(arrAllCheckBoxes[i].id.indexOf("CheckAll")!=-1)
{
arrAllCheckBoxes[i].checked=false;
}
}
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:Image ID="Image1" runat="server" ImageUrl="HXImages/button/btn_add.gif" />
<asp:ImageButton ID="BtnDelete" runat="server"
ImageUrl="~/Admin/HXImages/button/btn_del.gif" onclick="BtnDelete_Click" />
<asp:GridView ID="GVNews" runat="server" AutoGenerateColumns="False" DataKeyNames="newsID"
Width="100%" onrowdatabound="GVNews_RowDataBound"
onrowdeleting="GVNews_RowDeleting" AllowPaging="True"
onpageindexchanging="GVNews_PageIndexChanging" PageSize="3" >
<Columns>
<asp:TemplateField>
<HeaderTemplate>
全选
<asp:CheckBox ID="CheckAll" runat="server" OnClick="javascript: return isOrNotCheckAll (this.checked);" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="CBDelete" runat="server" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>

<asp:BoundField DataField="newsID" HeaderText="序号" >
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField DataField="newsTitle" HeaderText="标题">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:TemplateField HeaderText="添加日期">
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<%# Convert.ToDateTime(Eval("newsDate")).ToString("yyyy-MM-dd")%>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="newsDegree" HeaderText="点击次数(次)">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:TemplateField HeaderText="操作">
<ItemStyle HorizontalAlign="Center" />
<ItemTemplate>
<asp:ImageButton ID="ImgDel" title="删除" CommandName="delete" ImageUrl="HXImages/del.gif" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
</html>

后台代码

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Admin_NewsForm : System.Web.UI.Page
{
string sql = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGVNews();
BtnDelete.Attributes.Add("onclick", "return confirm('确定要删除吗?');");
}
}
void BindGVNews()
{
sql = string.Format("select * from newsTable order by newsID desc");
DataTable dt = DataBase.ExecuteDataSet(sql).Tables[0];
GVNews.DataSource = dt.DefaultView;
GVNews.DataBind();
}
protected void GVNews_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string newsID = GVNews.DataKeys[e.RowIndex].Value.ToString();
sql = string.Format("delete from newsTable where newsID={0}", Convert.ToInt32(newsID));
int i = DataBase.ExecuteNonQuery(sql);
if (i > 0)
{
BindGVNews();
}
}
protected void GVNews_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GVNews.PageIndex = e.NewPageIndex;
BindGVNews();
}
protected void GVNews_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
((ImageButton)e.Row.FindControl("ImgDel")).Attributes.Add("onclick", "return confirm('确定要删除吗?')");
((CheckBox)e.Row.FindControl("CBDelete")).Attributes.Add("onclick", "CBDeleteClick('"+((CheckBox)e.Row.FindControl("CBDelete")).ClientID+"')");
}
}
string GetDeleteIDs()
{
string IDs = null;
foreach (GridViewRow gvr in GVNews.Rows)
{
CheckBox cb = (CheckBox)gvr.FindControl("CBDelete");
if (cb.Checked)
{
if (IDs == null)
{
IDs = GVNews.DataKeys[gvr.RowIndex].Value.ToString();
}
else
{
IDs = IDs+"," + GVNews.DataKeys[gvr.RowIndex].Value.ToString();
}
}
}
return IDs;
}
protected void BtnDelete_Click(object sender, ImageClickEventArgs e)
{
string newsIDs = this.GetDeleteIDs();
if (newsIDs != null)
{
sql = string.Format("delete from newsTable where newsID in ({0})", newsIDs);
int i = DataBase.ExecuteNonQuery(sql);
if (i > 0)
{
BindGVNews();
}
}
else
{
Response.Write("<script>alert('请指定要删除的项!');</script>");
}
}
}

GridView中实现全选与取消全选,以便同时删除多条数据的更多相关文章

  1. bootstrap实现checkbox全选、取消全选

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <!-- 最新版本的 ...

  2. js实现checkbox组 全选和取消全选

    做后台管理程序时,用到一个checkbox组的全选和取消全选的功能, 主要是逻辑上的坑,理清后大概是: 1.全选点击后,小弟1~4都要选上,点击取消,小弟们也要取消 2.只要有一个小弟取消时,全选要取 ...

  3. datagridview里面的checkbox全选和取消全选

    全选 设置全选button,选中所有的checkbox private void selectAll_Click(object sender, EventArgs e) { //遍历datagridv ...

  4. 使用AngularJS实现简单:全选和取消全选功能

    这里用到AngularJS四大特性之二----双向数据绑定 注意:没写一行DOM代码!这就是ng的优点,bootstrap.css为了布局,JS代码也只是简单创建ng模块和ng控制器 效果: < ...

  5. jQuery --checkbox全选和取消全选简洁高效的解决办法

    最近在公司做了一个小项目,其中有一个全选和取消全选的这么一个模块,搞了半天找不到一种最佳的解决方案!后来通过各种努力找到了一种简洁高效的解决办法,这里想和大家分享一下.有问题的话,还望各路大神指导一二 ...

  6. JS对checkbox全选和取消全选

    需求:checkbox控制列表数据全选与取消全选择. 效果图: 1.html <body > <input type="button" name="in ...

  7. react实现全选、取消全选和个别选择

    react里面实现全选和取消全选,个别选择等操作,效果如下 代码: import React, {Component} from 'react' export default class Demo e ...

  8. DataGridView添加一行数据、全选、取消全选、清空数据、删除选中行

    .net 2005下的Windows Form Application,一个DataGridView控件和4个Button,界面设置如下:         代码如下,有注解,相信大家都看得明白:   ...

  9. js全选与取消全选

    实现全选与取消全选的效果 要求1(将军影响士兵):点击全选按钮,下面的复选框全部选中,取消全选按钮,下面的复选框全部取消 思路:复选框是否被选中,取决于check属性,将全选按钮的check属性值赋值 ...

  10. JS实现表单全选以及取消全选实例

    实现效果: 全选按钮:点击全选按钮所有的小按钮都会被选中:点掉全选按钮,所有按钮取消选中: 小按钮:只有全部被选中,全选按钮才会被选中 思路分析: 1.全选和取消全选做法:让下面所有复选框的 chec ...

随机推荐

  1. python3-开发进阶 heapq模块(如何查找最大或最小的N个元素)

    一.怎样从一个集合中获得最大或者最小的 N 个元素列表? heapq 模块有两个函数:nlargest() 和 nsmallest() 可以完美解决这个问题. import heapq nums = ...

  2. 1.2(SQL学习笔记)高级数据过滤

    一.AND 通过WHERE可以进行条件过滤,但只限于单个条件. 通过AND就可以连接多个条件,AND代表了和,即AND两边的条件全部满足才会通过筛选. 这就类似编程语言中的&&. 以下 ...

  3. 你家的Wifi密码安全吗?

    WiFi在给我们提供方便的无线网络同时,也带了一些隐患.如果对WiFi不设密码的话,一来会因为蹭网而影响网速,二来给信息安全带来了不小隐患.针对WiFi的安全手段,一般来说就是加密.最初的加密方式是W ...

  4. MFC绘制棋盘格

    (1)新建立一个MFC空白的基于视类的工程 (2)在View类中重写OnPaint消息 void CMy005View::OnPaint() { CPaintDC dc(this); // devic ...

  5. IIS整合tomcat

    IIS6.0+Tomcat7.0整合总结 (一)   为什么要把IIS.Tomcat整合到一起? 假如你遇到这种情况,你开发了一个javaweb项目要部署到服务器上,但是这个服务器上已经部署了asp. ...

  6. Go -- FileManage 自建云盘

    一.介绍 Caddy,用Go写的一款相当优秀的Web服务器软件,它有不少很有特色的功能,国内目前来说用的不多,不过也逐渐有越来越多的人知道了,它有个特色的插件功能,其中一款插件是FileManager ...

  7. std::string 用法

    string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化 string类的字符操作:const ...

  8. [Linux] Linux smaps接口文件结构

    在Linux内核 2.6.16中引入了一个系统内存接口特性,这个接口位于/proc/$pid/目录下的smaps文件中 ,一看内容发现是进程内存映像信息,比同一目录下的maps文件更详细些. 400d ...

  9. Linux驱动虚拟地址和物理地址的映射

    一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G. 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间. ...

  10. 《jQuery基础》总结

    目前,互联网上最好的jQuery入门教材,是Rebecca Murphey写的<jQuery基础>(jQuery Fundamentals).这本书虽然是入门教材,但也足足有100多页.我 ...