一个完整的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

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Mybatis的分页实现方式

《Mybatis的分页实现方式》MyBatis的分页实现方式主要有以下几种,每种方式适用于不同的场景,且在性能、灵活性和代码侵入性上有所差异,对Mybatis的分页实现方式感兴趣的朋友一起看看吧... 目录​1. 原生 SQL 分页(物理分页)​​2. RowBounds 分页(逻辑分页)​​3. Page

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

SpringBoot3中使用虚拟线程的完整步骤

《SpringBoot3中使用虚拟线程的完整步骤》在SpringBoot3中使用Java21+的虚拟线程(VirtualThreads)可以显著提升I/O密集型应用的并发能力,这篇文章为大家介绍了详细... 目录1. 环境准备2. 配置虚拟线程方式一:全局启用虚拟线程(Tomcat/Jetty)方式二:异步

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Linux中修改Apache HTTP Server(httpd)默认端口的完整指南

《Linux中修改ApacheHTTPServer(httpd)默认端口的完整指南》ApacheHTTPServer(简称httpd)是Linux系统中最常用的Web服务器之一,本文将详细介绍如何... 目录一、修改 httpd 默认端口的步骤1. 查找 httpd 配置文件路径2. 编辑配置文件3. 保存

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Python使用Tkinter打造一个完整的桌面应用

《Python使用Tkinter打造一个完整的桌面应用》在Python生态中,Tkinter就像一把瑞士军刀,它没有花哨的特效,却能快速搭建出实用的图形界面,作为Python自带的标准库,无需安装即可... 目录一、界面搭建:像搭积木一样组合控件二、菜单系统:给应用装上“控制中枢”三、事件驱动:让界面“活”