MSDN中“演练:使用 Web 窗体页创建分页的数据访问” 一文中的代码的一点改进
来源:互联网 发布:韩子高网络剧免费 编辑:程序博客网 时间:2024/04/27 21:32
如果你安装了MSDN,正在学习使用.NET制作网站,也许会碰到这样一个示例文档:
Visual Basic 和 Visual C# 概念
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中“演练:使用 Web 窗体页创建分页的数据访问” 一文中的代码的一点改进
- 关于msdn上面的《Web 窗体页创建分页的数据访问》的改进
- MSDN使用的一点注意
- 一次数据访问层的改进之路(续一之分页篇)
- VB.NET中“数据窗体向导”所生成的“添加”代码的改进
- 数据访问(如何实现 - C#)演练:创建简单的数据应用程序
- MSDN单元测试的演练有问题
- MSDN介绍的“在 Internet Explorer 5.5 中创建可编辑的 Web 页”
- 数据分析工作的一点改进
- msdn 构建安全的数据访问
- 关于开发高手2004第8期中,<jsp创建基于WEB的动态图表>一文中的些许错误
- QuickSearchBox的一点改进
- 关于buildDoc函数的一点改进,增强分页打印效果
- 分页加载数据效果的新颖改进
- 分页加载数据效果的新颖改进
- 一处重复代码的改进(封装无数据情况)
- 数据窗体向导创建窗体的问题
- Web 窗体页的数据绑定表达式
- 控制输入的数据为数字或中文的方法
- 阿里巴巴斥资4000万在美国打广告 为上市铺路
- The differences between some patterns.
- 研究rds的困惑
- 偶的流氓LG(zz)
- MSDN中“演练:使用 Web 窗体页创建分页的数据访问” 一文中的代码的一点改进
- .Net 是未来的趋势
- .NET 技术FAQ(一)-----简介
- .NET 技术FAQ(二)-----基本术语
- .NET 技术FAQ(三)-----元件
- .NET 技术FAQ(四)-----应用程序域
- .NET 技术FAQ(五)-----垃圾收集
- .NET 技术FAQ(六)-----属性
- INI文件的读写