DataPager没有';不要列出第2页以外的内容
本文关键字:2页 没有 DataPager | 更新日期: 2023-09-27 18:21:49
DataPager
有一些奇怪的行为。
因此,为了解决这个问题,我有一个包含信息的DataPagerReapeater
。我有一个CCD_ 3,这是我为合作而制作的。我有3页,但DataPager
有一些奇怪的行为。
当我在第一页上点击下一页时,它会转到第二页,一切都很好。当我再次点击"下一步"时,它会回发,但不会移动到第三页。倒数第一也很好。
但当我在第二个页面上单击"下一步"时,它不会移动到第三个页面,而是停留在第二页。同样,如果我手动点击第三页并点击上一页,它会转到第一页。
我真的不明白为什么。
这是DataPager
:
<asp:DataPager ID="DataPager1" PagedControlID="ReapeaterCSGator" PageSize="5"
runat="server" onprerender="DataPager1_PreRender">
<fields>
<asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="True" FirstPageText="<< First"
ShowNextPageButton="False" ShowPreviousPageButton="False" />
<asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="False" FirstPageText="< Previous"
ShowNextPageButton="False" ShowPreviousPageButton="True" />
<asp:NumericPagerField />
<asp:NextPreviousPagerField ButtonType="Link" ShowLastPageButton="False" LastPageText="Next >"
ShowNextPageButton="True" ShowPreviousPageButton="False" />
<asp:NextPreviousPagerField ButtonType="Link" ShowLastPageButton="True" LastPageText="Last >>"
ShowNextPageButton="False" ShowPreviousPageButton="False" />
</fields>
</asp:DataPager>
以下是我在PreRender上执行的代码:
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
IEnumerable<CollaborativeSpace> listCS = LoadCollaborativeSpaces();
// Binding the repeater with the list of documents
ReapeaterCSGator.DataSource = listCS;
ReapeaterCSGator.DataBind();
}
所以,这种行为真的很奇怪,我不知道可能是什么问题
还有人面对这样的问题吗?
更新:这是加载方法和我在那里有什么:
ResultPerPages = GetResultsPerPage();
DataPager2.PageSize = ResultPerPages;
DataPager1.PageSize = ResultPerPages;
//We initialize the pager repeater with the same value
ReapeaterCSGator.SetPageProperties(0, ResultPerPages, false);
//We add an handler on item data bound event for sub repeater
ReapeaterCSGator.ItemDataBound += ReapeaterCSGator_ItemDataBound;
//If the user is not post backing
if (!IsPostBack)
{
//We add choices on drop down list "Results per page"
foreach (int choice in NbResultsChoices)
{
NbResultsPerPage.Items.Add(new ListItem(choice + " results per page", choice.ToString(CultureInfo.InvariantCulture)));
}
//We get collaborative spaces from Sharepoint list
//IEnumerable<CollaborativeSpace> listCS = LoadCollaborativeSpaces();
//// Binding the repeater with the list of documents
//ReapeaterCSGator.DataSource = listCS;
更新2:以下是SetPageProperties()背后的代码
public void SetPageProperties(int startRowIndex, int maximumRows, bool databind)
{
ViewState["_startRowIndex"] =startRowIndex;
ViewState["_maximumRows"] = maximumRows;
if (TotalRows > -1)
{
if (TotalRowCountAvailable != null)
{
TotalRowCountAvailable(this, new PageEventArgs((int)ViewState["_startRowIndex"], (int)ViewState["_maximumRows"], TotalRows));
}
}
}
该组件的使用形式如下:http://www.codeproject.com/Articles/45163/Extend-Repeater-to-support-DataPager
问题解决了,似乎数据页面显示程序没有以正确的方式实现,现在我找到了可以修复它的源代码。无论如何,感谢
如果我读对了你的加载方法,你会在每个Page_Load
上将中继器重置为第1页。
发生的是:
- 在
Page_Load
中,在SetPagerProperties()
调用中将中继器重置为第1页 - 在控制事件调度阶段,数据寻呼机前进到相对于第1页的下一页:
- 如果使用"第一页"、"最后一页"和特定的页面,则一切都正常,因为它们不是相对的更改
- "下一页"转到第1页之后的页面,这就是为什么你被困在第2页
- "previous"尝试转到1之前的页面,因为没有,所以它停留在1上
要解决此问题,请在每次加载页面时停止初始化寻呼机。要么取消调用——我不知道它为什么会在那里,我只使用它来"重置"中继器,例如在用户单击列标题对列表视图进行排序之后。或者将其移动到if (!IsPostback)
块中。