关于msdn上面的《Web 窗体页创建分页的数据访问》的改进

原创 2004年07月09日 23:32:00

   前段时间做了第一个ASP.NET项目,很简单的。在DataGrid分页的时候遇到小问题,就参考msdn的例子做了一个。实际过程中发现似乎有点问题,改进了一下:

   链接:ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkwalkthroughdisplayingdatainlistboxesonwebformspage.htm

   说明:该文章使用了两个sql语句,目的是向前翻页的时候和向后翻页的时候分别使用不同的语句。改进以后只用一条语句就可以。我在项目里面使用的是存储过程:
   CREATE PROCEDURE selectAllUser
   (
      @Id int
   )
    AS
   select top 15 Id,UserName,IDcard,Sex,Birthday,MailAddr,GetscholarTime
   from UserInfo
   where  Id>=@Id
   GO

   关键代码如下:
   ///
   /// 从数据库读取从userID开始的15条记录并显示
   ///
   ///
  private void showAllUser(int userID)
  {
      ManageDB managedb = new ManageDB();
      int count = managedb.getUserCount();   //这个方法获取总记录数
      if(count == -1)
   {
       Response.Redirect("error.aspx",true);
       return;
   }
      count = count/this.gridUser.PageSize;
      SqlDataReader reader = managedb.getAllUser(userID);
      this.gridUser.DataSource = reader;
      this.gridUser.DataBind();
      reader.Close();
      ViewState["CurrentPage"] = CurrentPage;
      ViewState[CurrentPage.ToString()] = this.gridUser.Items[0].Cells[0].Text;
      if(CurrentPage <=0)
      {
          this.btnPrevious.Enabled = false;
      }
      if(CurrentPage >= count)
      {
          this.btnNext.Enabled = false;
      }
  }

   下一页按钮点击事件:
   private void btnNext_Click(object sender, System.EventArgs e)
  {
      this.btnPrevious.Enabled = true;
      CurrentPage = (int)(ViewState["CurrentPage"]);
      CurrentPage ++;
      //下面的代码有个+1操作,这个是必须的,这样保证了取得的记录没有重复的。
      int lastID = Convert.ToInt32(this.gridUser.Items[this.gridUser.PageSize-1].Cells[0].Text) + 1;
      this.showAllUser(lastID);
    }

   上一页按钮点击事件
   private void btnPrevious_Click(object sender, System.EventArgs e)
  {
      this.btnNext.Enabled = true;
      CurrentPage = Convert.ToInt32(ViewState["CurrentPage"]);
      CurrentPage--;
      if (CurrentPage >= 0) 
      {
          int firstid;
          firstid = Convert.ToInt32(ViewState[(CurrentPage).ToString()]);
          this.showAllUser(firstid);
      }
   }

   最后是page load事件里面添加:

   if(!Page.IsPostBack)
   {
       CurrentPage = 0;
       this.showAllUser(0);
   }

   这样就对一个简单的分页改进了一下。当然我们还可以显示出总页数,当前页数。但是这种分页功能不强,不能做到直接跳转到第几页。但是这个分页效率可以说是相当高的。

   整个源代码可以这里下载,注意数据库是sql server2000。
   另外我的Blog最近将推出.net书籍以及源代码下载,请关注!
 

MSDN中“演练:使用 Web 窗体页创建分页的数据访问” 一文中的代码的一点改进

如果你安装了MSDN,正在学习使用.NET制作网站,也许会碰到这样一个示例文档:Visual Basic 和 Visual C# 概念演练:使用 Web 窗体页创建分页的数据访问ms-help://M...
  • worldwind13
  • worldwind13
  • 2004年09月08日 15:32
  • 988

第3章 WEB窗体

(译自 Pro ASP.NET 2.0 IN C# 2005 ,很多地方译得不好,欢迎批评指正)第3章 WEB窗体ASP.NET页面(正式名称叫Web窗体)是ASP.NET应用至关重要的一部分。它们提...
  • z365days
  • z365days
  • 2006年11月20日 22:45
  • 8144

使用Web窗体中的验证控件

  在一个网络软件中,经常要保证用户输入的信息有效。过去,这一事情得由软件工程师自已编程实现。现在这一事情有了更轻松的解决方法,通过微软的.net中专门的验证控件,我们只需设置属性就可以检查必需的项、...
  • lincnl
  • lincnl
  • 2007年05月24日 14:15
  • 1834

主题和母版页 如何在web窗体调用操作母版页内容元素

标准化网站布局        标准化网站布局的格式只是整个过程的一部分,你还需要保证通用的元素,如网站的标题、网站的导航控件等在每个页面里都出现在相同的位置。解决这一问题的关键在于创建一个可以重...
  • bensidiyu
  • bensidiyu
  • 2015年07月14日 15:30
  • 4020

易生活(二)-web---商品列表显示、分页封装、分页处理

目录 商品列表显示业务逻辑分析 分页的的封装思路 分页的处理 商品列表显示业务逻辑分析 核心逻辑 /* * 显示商品list逻辑: * 第一步:获取请求页码。如果第一次请求,...
  • wgyscsf
  • wgyscsf
  • 2016年04月16日 20:30
  • 1372

java窗体分页公共组件 控件

我写了一个简单的java公共组件,有首页
  • cmcxc
  • cmcxc
  • 2014年11月24日 14:47
  • 457

c#学习笔记三 如何访问另一个页面的控件数据

      在Vs2005中新建一个Web项目,添加两个Web窗体(Default、Default2),在Default窗体上添加两个标准控件,一个TextBox(TextBox1)、一个Button...
  • zzhdi
  • zzhdi
  • 2008年03月30日 10:18
  • 1547

Web窗体的基本控件

第5章  Web窗体的基本控件 与ASP不同的是,ASP.NET提供了大量的控件,这些控件能够轻松的实现一个交互复杂的Web应用功能。在传统的ASP开发中,让开发人员最为烦恼的是代码的重用性太低,以...
  • yantaiwuyansong
  • yantaiwuyansong
  • 2012年04月26日 13:18
  • 1419

前台页面分页对总页数的判断

java对总页码数的判断 totalPageNum 为总页数,totalRecord 总记录数,pageSize 每页显示数据数 比较常用的 1、int totalPageNum = (t...
  • piggachen
  • piggachen
  • 2017年04月10日 10:22
  • 343

asp.net web 页面生命周期

每次客户端请求都会创建页面实例,它的执行使自身及其包含的控件经历页面生命周期的各个阶段。页面的执行起始于HTTP运行库调用ProcessRequest时,该方法将启动页面并控制它的生命周期。生命周期由...
  • lqh4188
  • lqh4188
  • 2013年01月23日 15:06
  • 2088
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于msdn上面的《Web 窗体页创建分页的数据访问》的改进
举报原因:
原因补充:

(最多只允许输入30个字)