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

相关文章

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

PyCharm 接入 DeepSeek最新完整教程

《PyCharm接入DeepSeek最新完整教程》文章介绍了DeepSeek-V3模型的性能提升以及如何在PyCharm中接入和使用DeepSeek进行代码开发,本文通过图文并茂的形式给大家介绍的... 目录DeepSeek-V3效果演示创建API Key在PyCharm中下载Continue插件配置Con

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

一文教你使用Python实现本地分页

《一文教你使用Python实现本地分页》这篇文章主要为大家详细介绍了Python如何实现本地分页的算法,主要针对二级数据结构,文中的示例代码简洁易懂,有需要的小伙伴可以了解下... 在项目开发的过程中,遇到分页的第一页就展示大量的数据,导致前端列表加载展示的速度慢,所以需要在本地加入分页处理,把所有数据先放

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

Redis存储的列表分页和检索的实现方法

《Redis存储的列表分页和检索的实现方法》在Redis中,列表(List)是一种有序的数据结构,通常用于存储一系列元素,由于列表是有序的,可以通过索引来访问元素,因此可以很方便地实现分页和检索功能,... 目录一、Redis 列表的基本操作二、分页实现三、检索实现3.1 方法 1:客户端过滤3.2 方法

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

SQL Server数据库迁移到MySQL的完整指南

《SQLServer数据库迁移到MySQL的完整指南》在企业应用开发中,数据库迁移是一个常见的需求,随着业务的发展,企业可能会从SQLServer转向MySQL,原因可能是成本、性能、跨平台兼容性等... 目录一、迁移前的准备工作1.1 确定迁移范围1.2 评估兼容性1.3 备份数据二、迁移工具的选择2.1

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm