如果你安装了MSDN,正在学习使用.NET制作网站,也许会碰到这样一个示例文档:
Visual Basic 和 Visual C# 概念
演练:使用 Web 窗体页创建分页的数据访问
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkwalkthroughdisplayingdatainlistboxesonwebformspage.htm
文中讲述了如何制作一个带有自定义分页的数据列表,特点是每次只从数据库中取出相应条数的数据,这种方式对于大型的数据表的列表显示非常有好处,比另外一种一次将所有数据全取出后再缓存分页的方案好。
本人在采用此方案时发现几处小的BUG,如下:
- 在“定位到下一页”的程序代码中,
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条时,可能会导致出错。
- 另外在“在网格中显示数据”这部分中,你会看到有部分代码是判断当本页所取条数小于PageSize时,即认为是数据表的最后一页时,设定“下一页”按钮失效,同样应该加上判断当前页为0或小于0时,即认为是数据表的第一页时,设定“上一页”按钮失效的代码,如下:
if (DataGrid1.Items.Count < DataGrid1.PageSize)
{
btnNext.Enabled = false;
}
if (CurrentPage <= 0)
{
btnPrevious.Enabled = false;
}
- 在步骤2的同时,在btnNext_Click方法中还应加上此句“this.btnPrevious.Enabled = true;”,以便在换页后将“上一页”按钮先激活,再根据步骤2中的判断设定按钮的失效与否。
- 补充:刚刚检查看又发现一个新问题,当最后一页的条数刚好是页面条数时,“下一页”按钮依然有效,点击后就会出错,因为已经没有相应的记录可供显示了。所以补充修改如下:(注意红色标记部分)
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;
}
至此,经本人测试这样的分页列表就比较完善了,可以适应不同的分页条数了。
分享到:
相关推荐
(关于这个方面的技术,目前为止我只按MSDN的演练做了一个练习,后面有时间针对它的开发与使用再写一篇更详细一点的) 创建用户控件要比创建自定义控件方便很多,因为可以重用现有的控件,所以最适合创建具有复杂...
里面有MSDN中所有MFC例子源代码,都是经典啊。
本期MSDN杂志的主要内容有: • IIS 7.0: 使用集成的 ASP.NET 管道增强应用程序 • 全球化就绪: 与 ASP.NET AJAX 应用程序环游地球 • WCF 整合: 使用 WCF 和 .NET Framework 3.5 进行 HTTP 编程 • SQL Server:...
MSDN:从 SerialPort 对象接收数据时,将在辅助线程上引发 DataReceived 事件。由于此事件在辅助线程而非主线程上引发,因此尝试修改主线程中的一些元素(如 UI 元素)时会引发线程异常。如果有必要修改主 Form 或 ...
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中的计算器源代码,微软做的,仅供参考
使用 Microsoft® .NET Framework 可以轻松地创建基于 Windows® 的应用程序:您只需创建窗体、添加控件,然后将窗体连接到业务逻辑,这样就可以了。但这样的应用程序并不能为用户提供真正需要的交互功能。例如,当...
SSH+Mysql无刷新分页实例,导入数据库,运行即可
MSDN中的串口示例程序,对于开发串口程序有很大参考价值,使用C#编译代码,可以实现串口通信
最新MSDN帮助文档中文版 离线包,自己存储使用 最新MSDN帮助文档中文版 离线包,自己存储使用 最新MSDN帮助文档中文版 离线包,自己存储使用 小白方便查看
MSDN中的MFC相关的代码示例,做MFC开发的朋友们可以做以借鉴
2013年4月从MSDN下载的Web开发完整帮助(MVC仅包含4.0,ASP.NET仅包含4.5,其它部分完整)。开发利器啊!类视图中成员类型图标不能正常显示,但不影响使用。
MSDN Web Development 视频教程
iReaper-MSDN中文网Webcast专用下载
MFC MSDN中文帮助 VC++,介绍vc++开发中的windows API,是vc++开发不可缺少的工具
在本文中,作者将使用 Microsoft 2007 Office 系统中的文档信息面板处理来自 Office 文档的元数据,以便更有效地发现和管理它们。 编者按: 面向服务的编者按 本文介绍 Howard Dierking 所说的有关服务和分布式应用...
MSDN Webcast Smart Client系列课程(8):智能客户端中的离线数据访问 Video
MSDN Webcast Smart Client系列课程(8):智能客户端中的离线数据访问 PPT QA
下载自http://www.microsoft.com/taiwan/msdn/library/default.htm 的四本 MSDN 中文在线书籍,已整理制作为 CHM 文件。
微软VS2010 MSND 中VB部分,提取必要的部分,那些不需要的去掉了。就剩下VB的例子,经典中的经典