ASP.NET GridView学习之二 自定义分页功能

1就一些核心代码

2ClientInfo.cs和ClientinfoAccessObj.cs在学习一中有过了

 3
 4using System;
 5using System.Data;
 6using System.Configuration;
 7using System.Collections;
 8using System.Web;
 9using System.Web.Security;
10using System.Web.UI;
11using System.Web.UI.WebControls;
12using System.Web.UI.WebControls.WebParts;
13using System.Web.UI.HtmlControls;
14using System.Collections.Generic;
15
16public partial class GridViewPagingTest : System.Web.UI.Page
17{
18  private int PageSize = 10; //每页显示记录数
19
20  //当前页码,从1开始,利用ViewState在回发之间保存数据
21  private int curPage
22  {
23    get
24    {
25      return ViewState["curPage"] == null ? 0 : Convert.ToInt32(ViewState["curPage"]);
26    }
27    set
28    {
29      ViewState["curPage"] = value;
30    }
31  }
32
33  //总页数,利用ViewState在回发之间保存数据
34  private int PageCount
35  {
36    get
37    {
38      return ViewState["PageCount"] == null ? 0 : Convert.ToInt32(ViewState["PageCount"]);
39    }
40    set
41    {
42      ViewState["PageCount"] = value;
43    }
44  }
45
46
47  protected void Page_Load(object sender, EventArgs e)
48  {
49    if (!IsPostBack)
50    {
51      //第一次请求
52      curPage = 1;
53      GridView1.DataSource = GetClientsForPage(curPage);//根据当前页获得客户信息
54      lblInfo.Text = string.Format("第{0}页/共{1}页", 1, PageCount);
55      GridView1.DataBind();//绑定数据
56    }
57  }
58  //根据页下标获得页面的客户信息
59  private List<ClientInfo> GetClientsForPage(int pageIndex)
60  {
61    ClientInfoAccessObj accessor = new ClientInfoAccessObj();
62    List<ClientInfo> clients = accessor.GetAllClients();//获得所有客户信息
63    PageCount = clients.Count / PageSize + 1;//将客户信息的总数除以每页显示的记录数获得总页数
64    if (pageIndex > PageCount)
65      return null;
66    int StartIndex = (pageIndex - 1) * PageSize;//获得数据下标
67    List<ClientInfo> ret = new List<ClientInfo>();
68    for (int i = StartIndex; i < StartIndex + PageSize && i < clients.Count; i++)
69      ret.Add(clients[i]);
70    return ret;
71  }
72  protected void btnNext_Click(object sender, EventArgs e)
73  {
74    if (curPage+1>PageCount)//判断当前是否大于页总数
75    {
76      curPage = PageCount;
77    }
78    else
79    {
80      curPage++;
81    }
82    GridView1.DataSource = GetClientsForPage(curPage);
83    lblInfo.Text = string.Format("第{0}页/共{1}页", curPage, PageCount);
84    GridView1.DataBind();
85  }
86  protected void btnPrew_Click(object sender, EventArgs e)
87  {
88    if (curPage - 1 ==0 )//判断当前是否大于页总数
89    {
90      curPage = 1;
91    }
92    else
93    {
94      curPage--;
95    }
96    GridView1.DataSource = GetClientsForPage(curPage);
97    lblInfo.Text = string.Format("第{0}页/共{1}页", curPage, PageCount);
98    GridView1.DataBind();
99  }
100  protected void btnGo_Click(object sender, EventArgs e)
101  {
102    try
103    {
104      int pageIndex = Convert.ToInt32(txtPageIndex.Text);
105      if (pageIndex > PageCount)
106      {
107        pageIndex = PageCount;
108      }
109      if (pageIndex < 1)
110      {
111        pageIndex = 1;
112      }
113      curPage = pageIndex;
114      GridView1.DataSource = GetClientsForPage(curPage);
115      lblInfo.Text = string.Format("第{0}页/共{1}页", curPage, PageCount);
116      GridView1.DataBind();
117    }
118    catch (Exception ex)
119    {
120      ClientScript.RegisterClientScriptBlock(this.GetType(),"info","alert('非法字符');",true);//向页面注入javaScript脚本
121    }
122  }
123}
124

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索gridview
, viewstate
, system
, datasource
, protected
分页下标
,以便于您获取更多的相关知识。

时间: 2024-11-02 07:03:12

ASP.NET GridView学习之二 自定义分页功能的相关文章

ASP.NET中利用DataGrid的自定义分页功能

asp.net|datagrid|分页 ASP.NET中利用DataGrid的自定义分页功能和存储过程结合实现高效分页 ASP.Net中的DataGrid有内置分页功能, 但是它的默认的分页方式效率是很低的,特别是在数据量很大的时候,用它内置的分页功能几乎是不可能的事,因为它会把所有的数据从数据库读出来再进行分页, 这种只选取了一小部分而丢掉大部分的方法是不可去取的. 在最进的一个项目中因为一个管理页面要管理的数据量非常大,所以必须分页显示,并且不能用DataGrid的内置分页功能,于是自己实现

GridView实战一:自定义分页、排序、修改、插入、删除

前言: 在某次公司面试时被问到对GridView操作的熟悉程度,在那之前一直用Repeater内嵌table标签对GridView操作确实很 少,于是最近在项目的后台上对GridView进行了一番实操,本文和后面的另一篇GridView实战二:使用ObjectDataSource数据源 控件均是这段时间的一些总结. GridView优点就是集数据绑定.分页.排序.删.改于一身,提高了开发效率:缺点嘛,就是运行效率低,并且它本身不带添加功能.于是GridView用于后台开发是一个不错的选择,而前台

ASP.NET GridView学习之一

Default.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/

ASP.NET自定义控件 第十天 实现分页功能的DataList

1. 引言 在ASP.NET中DataList可以实现数据展示,我们可以通过定制其模版实现丰富 的格式,但是美中不足的时DataList默认情况下不支持分页,我们当然可以编写 一个用户控件以实现分页功能,但是这种方案仍然不是很好,我们希望像使用普 通ASP.NET服务器端控件一样,只需要放置一个DataList并设置分页样式就可以输 出分页链接. 在上次任务中我们创建了DataPager类将创建分页的操作从GridView分离出来 ,本次任务将尝试重用DataPager类为DataList增加分

ASP.NET:DataGrid控件的分页功能

asp.net|datagrid|datagrid控件|分页 DataGrid 控件是一个基于模板样式的.多功能的.多列的数据绑定控件.在三个数据绑定控件中,DataGrid是功能最为强大的,其次时DataList控件,然后是轻量级的数据绑定控件Repeater.要自定义 DataGrid 中各列的布局,您可以将列类型设置为"模板",然后修改列的模板.DataGrid 控件也可以无需模板,只需按照默认的设置即可进行呈现,这使得该控件成了用于报告方案的理想控件.      我们可以把Da

datagrid 自定义分页功能

问题描述 我想做一个datagrid分页功能比如<<1234>>共4页请问如何写请高手执教先谢了 解决方案 解决方案二:谁来救救我啊解决方案三:这个应该很简单的啊,可以直接编辑的吧~~你再仔细琢磨琢磨解决方案四:属性生成器里面设置解决方案五:控件上点击右键--属性生成器-分页把允许分页打上勾,页大小自己设置,模式里面选择"页码"就好了.解决方案六:<%@Pagelanguage="c#"EnableViewState="tru

ASP.NET Core学习之二 菜鸟踩坑

对于像我这样没接触过core的人,坑还是比较多的,一些基础配置和以前差别很大,这里做下记录 一.Startup 1.注册服务 // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc(); // services.Ad

ASP.NET GridView学习之五 单行编辑

GridViewEdit.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewEditTest.aspx.cs" Inherits="GridViewEditTest" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &q

ASP.NET GridView学习之四 删除记录

将CommandField的ShowDeleteButton=True,那么当点击这个CommandField字段时会触发RowDeleting事件 而BUttonField需要将CommandName=Delete才会激发RowDeleting事件 1using System; 2using System.Data; 3using System.Configuration; 4using System.Collections; 5using System.Web; 6using System.