DataPager
有一些奇怪的行为。
所以为了解决这个问题,我有一个DataPagerReapeater
信息。我有DataPager
,
我一起工作。我有3页,但DataPager
有一些奇怪的行为。
当我在第一页时,我点击下一步它转到第二页,一切都很好。当我再次点击它时,它会进行回发,但不会移动到第3页。最后也是第一个也很好。
但是当我在第二页并且我点击下一页时它将不会移动到第三页,而是停留在第二页上。如果我手动点击第三页并单击上一页,则会转到第一页。
我真的不明白为什么。
以下是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
问题已解决,似乎datapagerrepeater没有以正确的方式实现,现在我找到了可以解决它的来源。无论如何,谢谢你的帮助
答案 0 :(得分:1)
如果我正确阅读了您的加载方法,那么您每隔Page_Load
重置一次转发器到第1页。
会发生什么:
Page_Load
中,您将转发器重置为SetPagerProperties()
来电中的第1页要解决此问题,请在每次加载页面时停止初始化寻呼机。要么摆脱掉电话 - 我不确定它为什么存在,我只用它来“重置”转发器,例如在用户点击列标题对列表视图进行排序之后。或者将其移至if (!IsPostback)
区块。