c# - 如何使用中继器调试 C# 分页程序
问题描述
我无法从我要在我的网站上实施的帖子中获得所需的结果。我想使用转发器控件进行分页。
问题描述:
- 我不想实现存储过程功能,因此我只关注了这篇文章,直到第 3 步。
我已将页面大小设置为 1,并且我在数据库中有 4 条记录。
寻呼中继器(根据代码的中继器 1)已正确显示 4 页
问题是当点击最后一页时,它没有显示任何结果。为了解释确切的问题,我在此链接上制作了不正确的代码。
可以在此链接上查看所有 4 个帖子的列表。(滚动到页面底部)
导致此问题的主要问题可能是什么?
我采取的步骤: 1. 我尝试设置 pdsData.CurrentPageIndex = 0; 到第 41 行的 1(第 3 步) - 问题未解决 2. 我尝试设置
ViewState["PageNumber"] = Convert.ToInt32(e.CommandArgument);
作为
ViewState["PageNumber"] = Convert.ToInt32(e.CommandArgument)+1;
问题仍然相同(第 61 行或第 3 步)
我对使用中继器控制实现高效寻呼的替代方案持开放态度。我正在使用 asp.net 4.5 版。
解决方案
我相信代码中的问题在于for 循环:
for (int i = 1; i <= pdsData.PageCount; i++)
alPages.Add((i).ToString());
此循环已初始化为 i=1,而索引通常从零开始。我已将此初始化更改为 i=0。这使我的 for 循环如下:
for (int i = 0; i < pdsData.PageCount; i++)
alPages.Add((i).ToString());
这解决了额外页面空白的问题。
注意:此解决方案将从 0、1、2 等而不是 1、2、3 等开始启动寻呼机(底部的页码)。
我通过在 .aspx 页面中的绑定字段中添加一个 (+1) 来解决此问题。请参见下面的示例:
<%#Int32.Parse( Container.DataItem.ToString())+1%>
这些编辑使使用中继器的分页无错误且流畅。