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

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

Java Websocket实例【服务端与客户端实现全双工通讯】

Java Websocket实例【服务端与客户端实现全双工通讯】 现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏 览器需要不断的向服务器发出请求,然而HTTP

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件?是否可以恢复永久删除的文件?或者最糟糕的是,如果文件直接被删除怎么办?本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件? “回收站清空后我还能恢复已删除的文件吗?” 答案是肯定的,但是在这种情况下您将需要一个  回收站恢复工具 来从回收站中检索文件: 错误/永久删除回收站或任何数字存储设备中的文件 直接删除的文件/