关于msdn上面的《Web 窗体页创建分页的数据访问》的改进

web|创建|访问|分页|数据

前段时间做了第一个ASP.NET项目,很简单的。在DataGrid分页的时候遇到小问题,就参考msdn的例子做了一个。实际过程中发现似乎有点问题,改进了一下:

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

说明:该文章使用了两个sql语句,目的是向前翻页的时候和向后翻页的时候分别使用不同的语句。改进以后只用一条语句就可以。我在项目里面使用的是存储过程:
CREATE PROCEDURE selectAllUser
(
@Id int
)
AS
select top 15 Id,UserName,IDcard,Sex,Birthday,MailAddr,GetscholarTime
from UserInfo
where Id>=@Id
GO

关键代码如下:
///
/// 从数据库读取从userID开始的15条记录并显示
///
///
private void showAllUser(int userID)
{
ManageDB managedb = new ManageDB();
int count = managedb.getUserCount(); //这个方法获取总记录数
if(count == -1)
{
Response.Redirect("error.aspx",true);
return;
}
count = count/this.gridUser.PageSize;
SqlDataReader reader = managedb.getAllUser(userID);
this.gridUser.DataSource = reader;
this.gridUser.DataBind();
reader.Close();
ViewState["CurrentPage"] = CurrentPage;
ViewState[CurrentPage.ToString()] = this.gridUser.Items[0].Cells[0].Text;
if(CurrentPage <=0)
{
this.btnPrevious.Enabled = false;
}
if(CurrentPage >= count)
{
this.btnNext.Enabled = false;
}
}

下一页按钮点击事件:
private void btnNext_Click(object sender, System.EventArgs e)
{
this.btnPrevious.Enabled = true;
CurrentPage = (int)(ViewState["CurrentPage"]);
CurrentPage ++;
//下面的代码有个+1操作,这个是必须的,这样保证了取得的记录没有重复的。
int lastID = Convert.ToInt32(this.gridUser.Items[this.gridUser.PageSize-1].Cells[0].Text) + 1;
this.showAllUser(lastID);
}

上一页按钮点击事件
private void btnPrevious_Click(object sender, System.EventArgs e)
{
this.btnNext.Enabled = true;
CurrentPage = Convert.ToInt32(ViewState["CurrentPage"]);
CurrentPage--;
if (CurrentPage >= 0)
{
int firstid;
firstid = Convert.ToInt32(ViewState[(CurrentPage).ToString()]);
this.showAllUser(firstid);
}
}

最后是page load事件里面添加:

if(!Page.IsPostBack)
{
CurrentPage = 0;
this.showAllUser(0);
}

这样就对一个简单的分页改进了一下。当然我们还可以显示出总页数,当前页数。但是这种分页功能不强,不能做到直接跳转到第几页。但是这个分页效率可以说是相当高的。

整个源代码可以这里下载,注意数据库是sql server2000。
另外我的Blog最近将推出.net书籍以及源代码下载,请关注!

时间: 2024-08-01 05:43:03

关于msdn上面的《Web 窗体页创建分页的数据访问》的改进的相关文章

Web 窗体页的数据绑定表达式

web|数据   对 Web 窗体页中的各项控件属性进行数据绑定不是通过直接将属性绑定到数据源来实现的.而是通过使用特殊的表达式格式来实现数据绑定的.与要绑定到的数据有关的信息被置入该表达式,然后将表达式的结果分配给控件属性. 例如,假设您要将 TextBox Web 服务器控件绑定到一些数据.您创建数据绑定表达式并将其分配给控件的 Text 属性,以便该值将在控件中显示. 下面的示例说明控件声明在 HTML 视图中的大体形式.控件的 Text 属性被绑定到包含单个记录的数据视图.数据绑定表达式

向 Web 窗体页添加 Repeater 控件

web|控件   向页添加 Repeater Web 服务器控件需要若干步骤.下列过程描述创建一个工作的 Repeater 控件必须执行的最少步骤. 向 Web 窗体页添加 Repeater Web 服务器控件 向 Web 窗体页添加一个数据源.有多种方法可处理页上的数据.若要选择适当的方法,请参见 ADO.NET 数据访问介绍和对 Web 窗体页中数据访问的介绍. 在"设计"视图中,从"工具箱"的"Web 窗体"选项卡将 Repeater 控件

c# 如何关闭tabpage 以及上面的from窗体

问题描述 c#如何关闭tabpage以及上面的from窗体我现在设计个ERP模板用户点下就产生一个page页并把相关窗体加载上去.然后再做个退出按钮点下这个page就被关闭窗体也跟随关闭..请问这种怎么设计 解决方案 解决方案二:找到page的子控件关闭,再关闭page解决方案三:mainCmc=newmainC();mc.tabControl1.TabPages.Remove(mc.tabControl1.SelectedTab);mc.tabControl1.SelectedTab.Pare

为Silverlight项目创建通用WebService数据访问

在使用Silverlight之前,我们创建了自己的webService做为通用数据访问.开发者传递一个Sql语句 ,即可得到一个DataSet,DataTable作为返回值.在Silverlight项目中,由于其对DataTable的限制,我 们不得不首先得到DataTable,而后在本地再创建Web service(WCF),对得到的DataTable进行转换.转换 为数组或者泛型集合以适应Silverlight的需要. 但是这样做难免有些繁琐,且开发者做出了很多费力的工作. 这里,我们对原来

C#读取word里面的表格或数据,如何通过上面的标题获取下面的表格或数据

问题描述 我用c#做了一个winform程序,要操作Word文档,Word文档中有很多表格和数据,每个表格或数据上方都有标题,我知道想知道怎么通过标题获取下面的表格或数据?如下图: 解决方案 本帖最后由 yizhilideliliang 于 2015-08-27 10:47:15 编辑解决方案二:upupup解决方案三:嘿!有人在吗?解决方案四:去下载一个Aspose.Words,可以他来操作Word文档以C#创建一个类似的表格模型从而稍后当读取文档的时候我们可以用上它.如下所示,你可以看到创建

ASP.NET WEB窗体从入门到精通详解

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 WEB窗体简介:是ASP.NET新的开发模式,结合了ASP简易开发和VB高效率的优点.开发人员可以把控件拖放到页面上,编写代码(在代码隐藏页中)来提供交互功能,调用业务对象和执行其他任务. WEB窗体组成:还包括指令,用户控件,服务器控件以及服务器端数据绑定语法等.WEB窗体由HTML,代码和控件联合组成,其中控件在运行Microsoft I

ASP.NET 移动 Web 窗体和 ASP.NET 兼容性

asp.net|web 当编写 ASP.NET 移动 Web 应用程序时,您几乎可以使用 ASP.NET 的所有功能.但是,首先要考虑兼容性问题. 错误处理和报告如果 ASP.NET 应用程序在处理请求时遇到未处理的异常或其他错误,就会生成错误页.异常可能会在请求处理过程中的任何时候发生.例如,它们可能会在读取配置文件 (Web.config),编译页或运行页时发生. 您可以配置应用程序,使其生成默认或自定义的错误页.如果将应用程序配置为生成默认错误页,ASP.NET 将设置响应中的错误代码,并

求解决:VS2010创建web窗体后 程序停止

问题描述 当我创建web窗体时就会停止同样,当我查看一个aspx项目时一样会崩溃这种问题只会在aspx文件中出现,创建其他类别时不会出现,求解决 解决方案 解决方案二:1.重启电脑再试2.重置vs默认设置3.修复vs4.卸载后重装解决方案三:应该是你软件环境的问题,建议重装系统.检查下电脑有没有感染360等病毒.解决方案四:只能建议重装visualstudio,甚至操作系统

listview不允许别的窗体的函数删除上面的数据?

问题描述 listview不允许别的窗体的函数删除上面的数据? listview不允许别的窗体的函数删除上面的数据?怎么才能通过另一个窗体选择删除上面的数据?