VS2010 GridView分页实现与解决常见问题
4星 · 超过85%的资源 需积分: 15 113 浏览量
更新于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-06 上传
2020-12-23 上传
2020-12-11 上传
2020-10-20 上传
weiwei1111111
- 粉丝: 0
- 资源: 5
最新资源
- 毕业设计&课设-混合动力电动汽车的性能和效率仿真.zip
- crunch:高级 DXTc 纹理压缩和转码库
- Water-plant-scheduler:该应用程序使用户能够为其植物创建浇水时间表。 功能包括
- VNET:肺肿瘤分割
- Terraia-ChestTweaks:Minecraft Mod,仿写 Terraria 的箱子整理功能
- matlab求导代码-CO2-System-Extd:用于MATLAB(或GNUOctave)的CO2SYS软件,用于计算海洋CO2系统变量并
- ABB快速上手神器.zip
- 毕业设计&课设-基于Matlab的Intertial导航仿真.zip
- zoomy:终端的Zoom实用程序
- CODE injector-crx插件
- 猜猜我有多爱你flash动画
- matlab求导代码-PRST:Python水库模拟工具箱
- driver_load.rar
- freeglut 3.2.1 vs2017 64位
- dhh
- nodejs-dashboard:来自终端的node.js应用程序的遥测仪表板!