`
wind13
  • 浏览: 18691 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

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

阅读更多

如果你安装了MSDN,正在学习使用.NET制作网站,也许会碰到这样一个示例文档:

Visual Basic 和 Visual C# 概念

演练:使用 Web 窗体页创建分页的数据访问

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

文中讲述了如何制作一个带有自定义分页的数据列表,特点是每次只从数据库中取出相应条数的数据,这种方式对于大型的数据表的列表显示非常有好处,比另外一种一次将所有数据全取出后再缓存分页的方案好。

本人在采用此方案时发现几处小的BUG,如下:

  1. 在“定位到下一页”的程序代码中,

    private void btnNext_Click(object sender, System.EventArgs e)
    {
       // Get the page number of the page most recently displayed
       CurrentPage = (int)(ViewState["CurrentPage"]);
       CurrentPage++;
       // Gets the id on current page
       string lastid = DataGrid1.Items[9].Cells[0].Text;
       cmdNext.Parameters["@customerid"].Value = lastid;
       FillGrid(cmdNext);
    }
    红字部分应该改为“string lastid = DataGrid1.Items[DataGrid1.PageSize-1].Cells[0].Text;”,否则当条数(PageSize)不是缺省的10条时,可能会导致出错。

  2. 另外在“在网格中显示数据”这部分中,你会看到有部分代码是判断当本页所取条数小于PageSize时,即认为是数据表的最后一页时,设定“下一页”按钮失效,同样应该加上判断当前页为0或小于0时,即认为是数据表的第一页时,设定“上一页”按钮失效的代码,如下:

       if (DataGrid1.Items.Count < DataGrid1.PageSize)
       {
        btnNext.Enabled = false;
       }
       if (CurrentPage <= 0)
       {
        btnPrevious.Enabled = false;
       }

  3. 在步骤2的同时,在btnNext_Click方法中还应加上此句“this.btnPrevious.Enabled = true;”,以便在换页后将“上一页”按钮先激活,再根据步骤2中的判断设定按钮的失效与否。
  4. 补充:刚刚检查看又发现一个新问题,当最后一页的条数刚好是页面条数时,“下一页”按钮依然有效,点击后就会出错,因为已经没有相应的记录可供显示了。所以补充修改如下:(注意红色标记部分)

       if(dr.HasRows==true)
       {
        DataGrid1.DataSource = dr;
        DataGrid1.DataBind();
        dr.Close();
        sqlConnection1.Close();
        ViewState["CurrentPage"] = CurrentPage;
        ViewState[CurrentPage.ToString()] = DataGrid1.Items[0].Cells[0].Text;
        if (DataGrid1.Items.Count < DataGrid1.PageSize)
        {
         btnNext.Enabled = false;
        }
        if (CurrentPage <= 0)
        {
         btnPrevious.Enabled = false;
        }
       }
       else
       {
        btnNext.Enabled = false;
       }

至此,经本人测试这样的分页列表就比较完善了,可以适应不同的分页条数了。

分享到:
评论

相关推荐

    开发和使用WEB用户空间

    (关于这个方面的技术,目前为止我只按MSDN的演练做了一个练习,后面有时间针对它的开发与使用再写一篇更详细一点的) 创建用户控件要比创建自定义控件方便很多,因为可以重用现有的控件,所以最适合创建具有复杂...

    MSDN中所有MFC例子源代码

    里面有MSDN中所有MFC例子源代码,都是经典啊。

    MSDN_08年第一期

    本期MSDN杂志的主要内容有: • IIS 7.0: 使用集成的 ASP.NET 管道增强应用程序 • 全球化就绪: 与 ASP.NET AJAX 应用程序环游地球 • WCF 整合: 使用 WCF 和 .NET Framework 3.5 进行 HTTP 编程 • SQL Server:...

    C#读写串口数据实现代码

    MSDN:从 SerialPort 对象接收数据时,将在辅助线程上引发 DataReceived 事件。由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如 UI 元素)时会引发线程异常。如果有必要修改主 Form 或 ...

    asp.net知识库

    ASP.NET 2.0使用Web Part创建应用程序之二(共二) 体验 .net2.0 的优雅(2) -- ASP.net 主题和皮肤 NET2.0系列介绍(一).NET 2.0 中Web 应用程序主题的切换 ASP.NET 2.0 中Web 应用程序主题的切换 2.0正式版中...

    MSDN中的计算器源代码

    MSDN中的计算器源代码,微软做的,仅供参考

    增添趣味: 给单调的 Windows 窗体应用程序增添趣味

    使用 Microsoft® .NET Framework 可以轻松地创建基于 Windows® 的应用程序:您只需创建窗体、添加控件,然后将窗体连接到业务逻辑,这样就可以了。但这样的应用程序并不能为用户提供真正需要的交互功能。例如,当...

    SSH+Mysql无刷新分页实例

    SSH+Mysql无刷新分页实例,导入数据库,运行即可

    MSDN中的串口示例程序代码

    MSDN中的串口示例程序,对于开发串口程序有很大参考价值,使用C#编译代码,可以实现串口通信

    MSDN帮助文档中文.zip

    最新MSDN帮助文档中文版 离线包,自己存储使用 最新MSDN帮助文档中文版 离线包,自己存储使用 最新MSDN帮助文档中文版 离线包,自己存储使用 小白方便查看

    MSDN中的MFC相关的代码示例

    MSDN中的MFC相关的代码示例,做MFC开发的朋友们可以做以借鉴

    MSDN Web 开发完整帮助文档

    2013年4月从MSDN下载的Web开发完整帮助(MVC仅包含4.0,ASP.NET仅包含4.5,其它部分完整)。开发利器啊!类视图中成员类型图标不能正常显示,但不影响使用。

    MSDN Web Development 视频教程地址

    MSDN Web Development 视频教程

    iReaper-MSDN中文网Webcast专用下载

    iReaper-MSDN中文网Webcast专用下载

    MFC MSDN中文帮助

    MFC MSDN中文帮助 VC++,介绍vc++开发中的windows API,是vc++开发不可缺少的工具

    MSDN杂志2008年四月刊

    在本文中,作者将使用 Microsoft 2007 Office 系统中的文档信息面板处理来自 Office 文档的元数据,以便更有效地发现和管理它们。 编者按: 面向服务的编者按 本文介绍 Howard Dierking 所说的有关服务和分布式应用...

    Smart Client系列课程(8):智能客户端中的离线数据访问(VIDEO)

    MSDN Webcast Smart Client系列课程(8):智能客户端中的离线数据访问 Video

    Smart Client系列课程(8):智能客户端中的离线数据访问(PPT+QA)

    MSDN Webcast Smart Client系列课程(8):智能客户端中的离线数据访问 PPT QA

    MSDN 中文在线书籍

    下载自http://www.microsoft.com/taiwan/msdn/library/default.htm 的四本 MSDN 中文在线书籍,已整理制作为 CHM 文件。

    vs2010msdn中VB经典例子代码

    微软VS2010 MSND 中VB部分,提取必要的部分,那些不需要的去掉了。就剩下VB的例子,经典中的经典

Global site tag (gtag.js) - Google Analytics