首页 > 解决方案 > 如何使用中继器调试 C# 分页程序

问题描述

我无法从我要在我的网站上实施的帖子中获得所需的结果。我想使用转发器控件进行分页。

我指的是实现(c尖角的帖子)的这种方法(帖子

问题描述:

  1. 我不想实现存储过程功能,因此我只关注了这篇文章,直到第 3 步。
  2. 我已将页面大小设置为 1,并且我在数据库中有 4 条记录。

  3. 寻呼中继器(根据代码的中继器 1)已正确显示 4 页

  4. 问题是当点击最后一页时,它没有显示任何结果。为了解释确切的问题,我在此链接上制作了不正确的代码。

  5. 可以在此链接上查看所有 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 版。

标签: c#paginationrepeaterpagingasprepeater

解决方案


我相信代码中的问题在于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%>

这些编辑使使用中继器的分页无错误且流畅。


推荐阅读