VS2010 GridView分页实现与解决常见问题
4星 · 超过85%的资源 需积分: 15 48 浏览量
更新于2024-09-16
2
收藏 94KB DOC 举报
在Visual Studio 2010中,利用自带的分页功能可以帮助我们构建高效的数据管理系统,如一个简单的签到系统。本文将详细介绍如何在VS2010中实现分页功能以及遇到的问题及其解决方案。
首先,为了在GridView中启用分页,我们需要在设计阶段设置Gridvie的属性。在GridView控件上,找到并打开其属性窗口,确保"AutoGeneratePages"属性被勾选,这会自动为数据源生成分页控件。如图1-1所示,界面已预设了分页,每一页显示一定数量的记录。
接着,在GridView的事件处理中,关注"PageIndexChanging"事件,这是用户翻页时触发的事件。在事件处理方法`protected void gvAttend_PageIndexChanging(object sender, GridViewPageEventArgs e)`中,设置新的页码并调用数据绑定函数`Dbing()`。该方法负责根据用户选择的页码重新加载数据集。
`Dbing()`方法中的代码如下:
```csharp
int temp = 0;
string cardid = CardId;
DataSet ds = _AttendInfoBLL.GetAttendInfo(cardid);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i]["AttendTime"].ToString().IndexOf("迟到") > 0)
{
temp++;
}
}
Session["count"] = temp;
gvAttend.DataSource = ds;
gvAttend.DataBind();
}
```
这个部分计算迟到的记录数量,并根据计数重新绑定数据。
然而,当用户翻到第二页并点击“填写原因”(通过`RowCommand`事件)时,可能会出现下标越界错误。这是因为`RowCommand`事件是在单个记录级别触发的,而不是在页级别。为解决这个问题,我们需要在`RowCommand`事件中进一步处理,确保正确获取当前页的数据范围。
在`protected void gvAttend_RowCommand(object sender, GridViewCommandEventArgs e)`中,添加对`CommandName`的检查,仅在用户点击的是“btnFill”按钮时执行以下逻辑:
```csharp
if (e.CommandName == "btnFill")
{
int iPageIndex = gvAttend.PageIndex; // 获取当前页的索引
int iPageSize = gvAttend.PageSize;
int startIndex = (iPageIndex - 1) * iPageSize; // 计算起始行号
int endIndex = startIndex + iPageSize; // 计算结束行号
if (startIndex <= ds.Tables[0].Rows.Count)
{
DataView dv = new DataView(ds.Tables[0]);
dv.RowFilter = string.Format("ROW_NUMBER() OVER (ORDER BY AttendTime) BETWEEN {0} AND {1}", startIndex + 1, endIndex);
gvAttend.DataSource = dv;
gvAttend.DataBind();
}
}
```
这样,通过在`RowCommand`事件中应用数据视图(DataView)和行过滤(RowFilter),我们可以确保在分页操作下正确地访问和显示数据,避免了下标越界的问题。通过这些步骤,您可以在VS2010中成功实现Gridvie的分页功能,提供良好的用户体验。
2010-12-21 上传
2020-10-17 上传
2019-03-01 上传
2020-12-23 上传
2020-12-11 上传
2020-10-20 上传
weiwei1111111
- 粉丝: 0
- 资源: 5
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍