如果你安装了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;
}
至此,经本人测试这样的分页列表就比较完善了,可以适应不同的分页条数了。
分享到:
相关推荐
2. **Struts2**:在Struts2的Action中,我们需要接收前端传递的页码和每页数量参数,调用Spring服务接口获取分页数据。同时,Action还需要将这些数据封装到结果对象中,供视图层使用。此外,配置Struts2的拦截器,...
在“MSDN中所有MFC例子源代码”这个压缩包中,包含了MSDN官方提供的大量MFC(Microsoft Foundation Classes)的示例源代码。MFC是一个C++类库,它封装了Windows API,使得开发者可以使用面向对象的方式来编写Windows...
10. 数据访问技术:MSDN文档会提供关于如何使用***技术来访问和操作数据库的技术指导。***是.NET框架的一部分,提供了一种与数据源交互的方式,支持数据的连接式访问和离线处理。 总结来说,MSDN中文帮助手册是针对...
在深入探讨MSDN Web Development视频教程的知识点之前,我们首先需要理解MSDN(Microsoft Developer Network)是什么以及它在软件开发领域扮演的角色。MSDN是微软为软件开发者提供的一系列资源和服务,包括文档、...
源代码中可能会包含如何创建托管类、操作System.Object、使用.NET集合等示例。 2. **C#**: 作为.NET平台的主要开发语言之一,C#的源代码会展示如何使用LINQ、泛型、事件处理、异常处理和面向服务的编程等特性。 3....
(关于这个方面的技术,目前为止我只按MSDN的演练做了一个练习,后面有时间针对它的开发与使用再写一篇更详细一点的) 创建用户控件要比创建自定义控件方便很多,因为可以重用现有的控件,所以最适合创建具有复杂...
### MSDN使用介绍 #### 一、MSDN与MSDN在线概述 MSDN(Microsoft Developer Network,微软开发者网络)是微软公司为软件开发者提供的一套综合资源和服务平台。该平台汇集了微软各种软件产品的文档、代码示例、教程...
`MFC MSDN中文帮助.chm`文件很可能是MSDN关于MFC的中文版文档,包含了MFC类库的详细说明、示例代码和使用指南,是学习和解决问题的重要参考资料。 **MFC的主要组件** 1. **CWinApp**: 应用程序类,负责初始化和...
【MSDN中的计算器源代码】是一个值得探讨的编程学习资源,尤其对于想要深入了解Windows桌面应用程序开发的程序员来说。这个源代码是由微软提供的,它揭示了官方计算器应用背后的实现细节,可以作为参考和学习的典范...
以上只是MFC中的一部分核心概念和使用方式,实际的MSDN代码示例会包含更多细节,如异常处理、文件操作、网络编程等。通过研究这些示例,开发者可以深入理解MFC的工作原理,并能将其应用于实际项目中,快速构建功能...
**MSDN VC++ MFC类库中文手册**是面向C++开发者的重要参考资料,特别是对于那些在Windows平台上使用Microsoft Foundation Class (MFC)库进行应用程序开发的程序员。MFC是一个C++类库,它封装了Windows API,使得开发...
例如,可能没有在正确的事件处理程序中创建子窗体,或者创建子窗体的代码执行时机不恰当。检查`Form_Load`、`ButtonClick`或其他相关事件处理程序中的代码。 5. **窗体层次问题**:MDI窗体的层次结构可能没有正确...
学习ASP的过程中,你将了解如何创建ASP页面、使用服务器控件、处理用户请求、数据库交互(如使用ADO对象访问SQL Server)、以及如何使用内置的对象如Response、Request、Session和Application等。同时,还会涉及错误...
《msdn开发精选》2005源代码包含了一系列与微软开发工具和技术相关的源代码示例,这些示例主要用于帮助开发者理解和应用MSDN(Microsoft Developer Network)中的编程概念。MSDN是一个综合性的开发者资源库,提供了...
MSDN(Microsoft Developer Network)是微软为开发者提供的一项重要资源,它包含了大量的开发工具和技术文档,是使用微软开发工具进行编程时不可或缺的参考资料。MSDN的文档覆盖了微软的最新软件编程技术,其中包括...
本期MSDN杂志的主要内容有: • IIS 7.0: 使用集成的 ASP.NET 管道增强应用程序 • 全球化就绪: 与 ASP.NET AJAX 应用程序环游地球 • WCF 整合: 使用 WCF 和 .NET Framework 3.5 进行 HTTP 编程 • SQL Server:...
在这个压缩包中,你将找到四本MSDN中文在线书籍的集合,这些书籍是微软官方出版的,旨在帮助开发者深入理解和使用.NET系列的技术。 首先,我们需要了解.NET系列。.NET是微软推出的一个软件框架,它为开发者提供了...
3. **改进的ADO(ActiveX Data Objects)**:数据访问能力提升,支持更高效的数据操作和更丰富的数据类型。 4. **更好的性能**:VB6对代码进行了优化,使得编译后的程序运行速度有所提高。 二、VB6入门 对于初学者...
2. **控件与窗体**:VB 6.0中的各种控件(Label、TextBox、Button等)的使用方法,以及如何设计和布局窗体。 3. **事件处理**:理解事件驱动编程的概念,学习如何编写事件处理程序。 4. **对象和类**:面向对象...