繁体中文
设为首页
加入收藏
当前位置:.Net技术首页 >> 评论及其它 >> MSDN中“演练:使用 Web 窗体页创建分页的数据访问” 一文中的代码的一点改进

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

2005-01-09 20:52:21  作者:worldwind13  来源:互联网  浏览次数:1  文字大小:【】【】【
简介:如果你安装了MSDN,正在学习使用.NET制作网站,也许会碰到这样一个示例文档: Visual Basic 和 Visual C# 概念 演练:使用 Web 窗体页创建分页的数据访问 ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vb...

如果你安装了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;

}

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

责任编辑:admin
相关文章