zoukankan      html  css  js  c++  java
  • GridView中实现全选与取消全选,以便同时删除多条数据

      我们项目后台操作中不可避免的会有同时删除多项的操作,本文实现的就是当点击全选时,选定当前页中所有项,当取消了某一项的选定,则“全选”CheckBox的checked也为false;然后在后台中取到所选定的项的ID,实现同时删除多项的功能。
    前台代码
     1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewsForm.aspx.cs" Inherits="Admin_NewsForm" %>
     2 
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     4 
     5 <html xmlns="http://www.w3.org/1999/xhtml">
     6 <head runat="server">
     7     <title>无标题页</title>
     8     <script type="text/javascript" language="javascript">
     9 function isOrNotCheckAll(checkValue)
    10 {
    11     var arrAllCheckBoxes = document.getElementsByTagName("input");
    12     //check all
    13     if(checkValue==true)
    14     {
    15         for(i=0;i<arrAllCheckBoxes.length;i++)
    16         {
    17             if(document.getElementById(arrAllCheckBoxes[i].id).type=="checkbox")
    18             {
    19                 document.getElementById(arrAllCheckBoxes[i].id).checked=true;
    20             }
    21         }
    22     }
    23     //do not check any one 
    24     if(checkValue==false)
    25     {
    26         for(i=0;i<arrAllCheckBoxes.length;i++)
    27         {
    28             if(document.getElementById(arrAllCheckBoxes[i].id).type=="checkbox")
    29             {
    30                 document.getElementById(arrAllCheckBoxes[i].id).checked=false;
    31             }
    32         }
    33     }
    34 }
    35 function CBDeleteClick(clientID,checkAllClientID)
    36 {
    37     var arrAllCheckBoxes = document.getElementsByTagName("input");
    38     //there has some one not be checked
    39     if(document.getElementById(clientID).checked==false)
    40     {
    41         for(i=0;i<arrAllCheckBoxes.length;i++)
    42         {
    43             if(arrAllCheckBoxes[i].id.indexOf("CheckAll")!=-1)
    44             {
    45                 arrAllCheckBoxes[i].checked=false;
    46             }
    47         }
    48     }
    49 }
    50     </script>
    51 </head>
    52 <body>
    53     <form id="form1" runat="server">
    54    <asp:Image ID="Image1" runat="server"  ImageUrl="HXImages/button/btn_add.gif" />
    55     <asp:ImageButton ID="BtnDelete" runat="server" 
    56         ImageUrl="~/Admin/HXImages/button/btn_del.gif" onclick="BtnDelete_Click" />
    57     <asp:GridView ID="GVNews" runat="server" AutoGenerateColumns="False" DataKeyNames="newsID" 
    58         Width="100%"  onrowdatabound="GVNews_RowDataBound" 
    59         onrowdeleting="GVNews_RowDeleting" AllowPaging="True" 
    60         onpageindexchanging="GVNews_PageIndexChanging" PageSize="3" >
    61         <Columns>
    62               <asp:TemplateField>
    63               <HeaderTemplate>
    64                     全选
    65                     <asp:CheckBox ID="CheckAll" runat="server" OnClick="javascript: return isOrNotCheckAll (this.checked);" />
    66               </HeaderTemplate>
    67               <ItemTemplate>
    68                   <asp:CheckBox ID="CBDelete" runat="server" />
    69               </ItemTemplate>
    70                   <ItemStyle HorizontalAlign="Center" />
    71               </asp:TemplateField>
    72               
    73             <asp:BoundField DataField="newsID" HeaderText="序号" >
    74                 <ItemStyle HorizontalAlign="Center" />
    75             </asp:BoundField>
    76             <asp:BoundField DataField="newsTitle" HeaderText="标题">
    77                 <ItemStyle HorizontalAlign="Center" />
    78             </asp:BoundField>
    79             <asp:TemplateField HeaderText="添加日期">
    80                 <ItemStyle HorizontalAlign="Center" />
    81                 <ItemTemplate>
    82                     <%# Convert.ToDateTime(Eval("newsDate")).ToString("yyyy-MM-dd")%>
    83                 </ItemTemplate>
    84             </asp:TemplateField>
    85             <asp:BoundField DataField="newsDegree" HeaderText="点击次数(次)">
    86                 <ItemStyle HorizontalAlign="Center" />
    87             </asp:BoundField>
    88             <asp:TemplateField HeaderText="操作">
    89                     <ItemStyle HorizontalAlign="Center" />
    90                     <ItemTemplate>
    91                         <asp:ImageButton ID="ImgDel" title="删除" CommandName="delete" ImageUrl="HXImages/del.gif" runat="server" />
    92                     </ItemTemplate>
    93                 </asp:TemplateField>
    94         </Columns>
    95     </asp:GridView>
    96     </form>
    97 </body>
    98 </html>
    后台代码
     1 using System;
     2 using System.Collections;
     3 using System.Configuration;
     4 using System.Data;
     5 using System.Linq;
     6 using System.Web;
     7 using System.Web.Security;
     8 using System.Web.UI;
     9 using System.Web.UI.HtmlControls;
    10 using System.Web.UI.WebControls;
    11 using System.Web.UI.WebControls.WebParts;
    12 using System.Xml.Linq;
    13 
    14 public partial class Admin_NewsForm : System.Web.UI.Page
    15 {
    16     string sql = null;
    17     protected void Page_Load(object sender, EventArgs e)
    18     {
    19         if (!IsPostBack)
    20         {
    21             BindGVNews();
    22             BtnDelete.Attributes.Add("onclick""return confirm('确定要删除吗?');");
    23         }
    24     }
    25     void BindGVNews()
    26     {
    27         sql = string.Format("select * from newsTable order by newsID desc");
    28         DataTable dt = DataBase.ExecuteDataSet(sql).Tables[0];
    29         GVNews.DataSource = dt.DefaultView;
    30         GVNews.DataBind();
    31     }
    32     protected void GVNews_RowDeleting(object sender, GridViewDeleteEventArgs e)
    33     {
    34         string newsID = GVNews.DataKeys[e.RowIndex].Value.ToString();
    35         sql = string.Format("delete from newsTable where newsID={0}", Convert.ToInt32(newsID));
    36         int i = DataBase.ExecuteNonQuery(sql);
    37         if (i > 0)
    38         {
    39             BindGVNews();
    40         }
    41     }
    42     protected void GVNews_PageIndexChanging(object sender, GridViewPageEventArgs e)
    43     {
    44         GVNews.PageIndex = e.NewPageIndex;
    45         BindGVNews();
    46     }
    47     protected void GVNews_RowDataBound(object sender, GridViewRowEventArgs e)
    48     {
    49         if (e.Row.RowType == DataControlRowType.DataRow)
    50         {
    51             ((ImageButton)e.Row.FindControl("ImgDel")).Attributes.Add("onclick""return confirm('确定要删除吗?')");
    52             ((CheckBox)e.Row.FindControl("CBDelete")).Attributes.Add("onclick""CBDeleteClick('"+((CheckBox)e.Row.FindControl("CBDelete")).ClientID+"')");
    53         }
    54     }
    55     string GetDeleteIDs()
    56     {
    57         string IDs = null;
    58         foreach (GridViewRow gvr in GVNews.Rows)
    59         {
    60             CheckBox cb = (CheckBox)gvr.FindControl("CBDelete");
    61             if (cb.Checked)
    62             {
    63                 if (IDs == null)
    64                 {
    65                     IDs = GVNews.DataKeys[gvr.RowIndex].Value.ToString();
    66                 }
    67                 else
    68                 {
    69                     IDs = IDs+"," + GVNews.DataKeys[gvr.RowIndex].Value.ToString();
    70                 }
    71             }
    72         }
    73         return IDs;
    74     }
    75     protected void BtnDelete_Click(object sender, ImageClickEventArgs e)
    76     {
    77         string newsIDs = this.GetDeleteIDs();
    78         if (newsIDs != null)
    79         {
    80             sql = string.Format("delete from newsTable where newsID in ({0})", newsIDs);
    81             int i = DataBase.ExecuteNonQuery(sql);
    82             if (i > 0)
    83             {
    84                 BindGVNews();
    85             }
    86         }
    87         else
    88         {
    89             Response.Write("<script>alert('请指定要删除的项!');</script>");
    90         }
    91     }
    92 }
  • 相关阅读:
    macbook 无声音解决方案
    webapck dev server代理请求 json截断问题
    百度卫星地图开启
    服务器 nginx配置 防止其他域名绑定自己的服务器
    记一次nginx php配置的心路历程
    遇到npm报错read ECONNRESET怎么办
    运行svn tortoiseSvn cleanup 命令失败的解决办法
    svn add 命令 递归目录下所有文件
    m4出现Please port gnulib freadahead.c to your platform! Look at the definition of fflush, fread, ungetc on your system, then report this to bug-gnulib."
    Ubuntu下安装GCC,mpc、mpfr、gmp
  • 原文地址:https://www.cnblogs.com/lotuslove/p/1664819.html
Copyright © 2011-2022 走看看