一个完整的DataGrid分页及全选删除实例

2024-04-21 02:08

本文主要是介绍一个完整的DataGrid分页及全选删除实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前台HTML代码:

 

<HTML>
 <HEAD>
  <title></title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
  <script language="javascript">
  function CheckAll(form)
    {
     for (var i=0;i<form.elements.length;i++)
     {
      var e = form.elements[i];
      e.checked = form.chkall.checked;
     }
    }
   
   function SelectAll()
   {
    var len=document.Form1.elements.length;
    var i;
    for (i=0;i<len;i++)
    {
     if (document.Form1.elements[i].type=="checkbox")
     {
      document.Form1.elements[i].checked=true;       
     }
    }
   }
   function UnSelectAll()
   {
    var len=document.Form1.elements.length;
    var i;
    for (i=0;i<len;i++)
    {
     if (document.Form1.elements[i].type=="checkbox")
     {
      document.Form1.elements[i].checked=false;       
     }
    }
   }
  </script>
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <table width="100%" align="center">
    <tr>
     <td>
      <asp:DataGrid id="DataGrid1" runat="server" PageSize="6" AllowPaging="True" AutoGenerateColumns="False"
       AllowSorting="True" DataKeyField="id">
       <Columns>
        <asp:TemplateColumn>
         <HeaderTemplate>
          <input type="checkbox" οnclick="CheckAll(this.form)" id="chkall" name="chkall" />
         </HeaderTemplate>
         <ItemTemplate>
          <asp:CheckBox id="cbFlag" runat="server"></asp:CheckBox>
         </ItemTemplate>
        </asp:TemplateColumn>
        <asp:BoundColumn DataField="id" HeaderText="记录号"></asp:BoundColumn>
        <asp:TemplateColumn HeaderText="序号">
         <ItemTemplate>
          <%# Container.ItemIndex+1%>
         </ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="标题">
         <ItemTemplate>
          <%#DataBinder.Eval(Container.DataItem,"title")%>
         </ItemTemplate>
        </asp:TemplateColumn>
       </Columns>
       <PagerStyle Visible="False"></PagerStyle>
      </asp:DataGrid>
     </td>
    </tr>
    <tr>
     <td>
      <INPUT type="button" value="全部选择" οnclick="SelectAll()"><INPUT type="button" value="全部取消" οnclick="UnSelectAll()"><asp:Button id="btnDelete" runat="server" Text="删除"></asp:Button>
     </td>
    </tr>
    <tr>
     <td><asp:label id="lblCount" runat="server" Font-Name="verdana" Font-size="8pt"></asp:label>&nbsp;&nbsp;
      <asp:label id="lblpage" runat="server" Font-Name="verdana" Font-size="8pt"></asp:label>&nbsp;&nbsp;
      <asp:linkbutton id="btnFirst" οnclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
       CssClass="a1" BorderStyle="None" CommandArgument="0" ForeColor="navy">首页</asp:linkbutton>&nbsp;&nbsp;
      <asp:linkbutton id="btnPrev" οnclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
       CssClass="a1" CommandArgument="prev" ForeColor="navy">上一页</asp:linkbutton>&nbsp;&nbsp;
      <asp:linkbutton id="btnNext" οnclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
       CssClass="a1" CommandArgument="next" ForeColor="navy">下一页</asp:linkbutton>&nbsp;&nbsp;
      <asp:linkbutton id="btnLast" οnclick="PagerButtonClick" runat="server" Font-Name="verdana" Font-size="8pt"
       CssClass="a1" CommandArgument="last" ForeColor="navy">尾页</asp:linkbutton>&nbsp;&nbsp;
      <asp:label id="lblCurrentIndex" runat="server" Font-Name="verdana" Font-size="8pt"></asp:label>
      <asp:label id="lblPageCount" runat="server" Font-Name="verdana" Font-size="8pt"></asp:label>&nbsp;&nbsp;
      <asp:label id="LabTz" runat="server" Font-Name="verdana" Font-size="8pt">转到第</asp:label>&nbsp;
      <asp:dropdownlist id="DDLpage" runat="server" AutoPostBack="True"></asp:dropdownlist>
      <asp:label id="Laby" runat="server" Font-Name="verdana" Font-size="8pt"> 页</asp:label>
     </td>
    </tr>
   </table>
  </form>
  </FORM>
 </body>
</HTML>

 

后台C#代码:

 

private void Page_Load(object sender, System.EventArgs e)
  {
   if(!Page.IsPostBack)
   {
    BindData();
    this.btnDelete.Attributes.Add("onclick", "return confirm('您确认要删除吗?');");
   }
  }

  public void BindData()
  {
   string sql="select * from magfile order by id desc";
   DataSet ds=webAscx.DataBase.GetDatabase(sql);
   this.DataGrid1.DataSource=ds;
   this.DataGrid1.DataKeyField="id";
   this.DataGrid1.DataBind();
   if(ds==null || ds.Tables[0].Rows.Count<=0)
    lblCount.Text="共0条记录";
   else
   {
    int RecordsCount=ds.Tables[0].Rows.Count;
    lblCount.Text="共"+ RecordsCount+ "条记录";
   }
   lblpage.Text="每页"+DataGrid1.PageSize.ToString()+"条";
   lblCurrentIndex.Text = "页次: <font color=red>" + (DataGrid1.CurrentPageIndex + 1).ToString() + "</font> /";
   lblPageCount.Text = DataGrid1.PageCount.ToString() + " 页";

   // 添加页次列表框
   DDLpage.Items.Clear();
   for (int i=1;i<=DataGrid1.PageCount;i++)
   {
    DDLpage.Items.Add(new ListItem(i.ToString(),i.ToString()));
   }
   DDLpage.Items.FindByText((DataGrid1.CurrentPageIndex+1).ToString()).Selected=true;

   ShowStats();
  }

  private void ShowStats()
  {
   if (DataGrid1.CurrentPageIndex==0)
   {
    btnFirst.Enabled =false;
    btnPrev.Enabled =false;
   }
   else
   {
    btnFirst.Enabled =true;
    btnPrev.Enabled =true;

   };

   if (DataGrid1.CurrentPageIndex==DataGrid1.PageCount-1)
   {
    btnNext.Enabled =false;
    btnLast.Enabled =false;
   }
   else
   {
    btnNext.Enabled =true;
    btnLast.Enabled =true;
   };
  }
  public void PagerButtonClick(object sender, EventArgs e)
  {
   string arg = ((LinkButton)sender).CommandArgument.ToString();
   switch(arg)
   {
    case "next":
     if (DataGrid1.CurrentPageIndex < (DataGrid1.PageCount - 1))
     {
      DataGrid1.CurrentPageIndex += 1;
     }
     break;
    case "prev":
     if (DataGrid1.CurrentPageIndex > 0)
     {
      DataGrid1.CurrentPageIndex -= 1;
     }
     break;
    case "last":
     DataGrid1.CurrentPageIndex = (DataGrid1.PageCount - 1);
     break;
    default:
     DataGrid1.CurrentPageIndex = System.Convert.ToInt32(arg);
     break;
   }
   BindData();   
  }
  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click);
   this.DDLpage.SelectedIndexChanged += new System.EventHandler(this.DDLpage_SelectedIndexChanged);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void btnDelete_Click(object sender, System.EventArgs e)
  {
   string SelectedString = "";//定义一个变量

   foreach(System.Web.UI.WebControls.DataGridItem dl in this.DataGrid1.Items)
   {
    for(int i=0;i<dl.Cells[0].Controls.Count;i++)//循环DataGrid的第一个单元格
    {
     if(dl.Cells[0].Controls[i].GetType().ToString()=="System.Web.UI.WebControls.CheckBox")//判断类型是否为CheckBox
     {
      if(((CheckBox)dl.Cells[0].Controls[i]).Checked==true)//如果CheckBox被选中
      {
       SelectedString += DataGrid1.DataKeys[dl.ItemIndex].ToString() + ",";
       //因为设置了DataGrid的DataKeyField属性(编号),所以可以根据Datakeys得到选中CheckBox的那行所对应的那条记录的编号
       //以逗号分隔,加入同一个字符串中
      }
     }
    }
   }

   if(SelectedString!="")
   {
    string result="";
    SelectedString = SelectedString.Substring(0,SelectedString.Length-1);//截取最后一个逗号
    string[] Arr = SelectedString.Split(',');//分割字符串,放入数组中
    for(int i=0;i<Arr.Length;i++)//循环数组
    {
     if(Arr[i].Trim()!="")//如果值不为空
     {
      result += Arr[i].Trim();
      DeleteRecord(Int32.Parse(Arr[i].Trim()));//删除一条记录
     }
    }
   }
   BindData();
  }

  private void DeleteRecord(int i)
  {
   string strsql = "delete from magFile where id = "+ i;
   webAscx.DataBase.UpdateDatabase(strsql);
   BindData();
  }

  private void DDLpage_SelectedIndexChanged(object sender, System.EventArgs e)
  {
   DataGrid1.CurrentPageIndex=Convert.ToInt32(DDLpage.SelectedValue)-1;
   BindData();
  }

这篇关于一个完整的DataGrid分页及全选删除实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/921913

相关文章

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

python删除xml中的w:ascii属性的步骤

《python删除xml中的w:ascii属性的步骤》使用xml.etree.ElementTree删除WordXML中w:ascii属性,需注册命名空间并定位rFonts元素,通过del操作删除属... 可以使用python的XML.etree.ElementTree模块通过以下步骤删除XML中的w:as

Golang如何用gorm实现分页的功能

《Golang如何用gorm实现分页的功能》:本文主要介绍Golang如何用gorm实现分页的功能方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录背景go库下载初始化数据【1】建表【2】插入数据【3】查看数据4、代码示例【1】gorm结构体定义【2】分页结构体

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

SpringBoot集成LiteFlow工作流引擎的完整指南

《SpringBoot集成LiteFlow工作流引擎的完整指南》LiteFlow作为一款国产轻量级规则引擎/流程引擎,以其零学习成本、高可扩展性和极致性能成为微服务架构下的理想选择,本文将详细讲解Sp... 目录一、LiteFlow核心优势二、SpringBoot集成实战三、高级特性应用1. 异步并行执行2