asp.net – ListView与DataPager不工作

前端之家收集整理的这篇文章主要介绍了asp.net – ListView与DataPager不工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
从我读过的一切中,似乎添加到ListView控件的分页应该是简单的,但它不适用于我。将ListView和DataPager控件添加到表单并将其连接在一起后,我变得非常奇怪的行为。 DataPager正确地限制了ListView的页面大小,但是单击分页按钮根本不会影响ListView。寻呼按钮似乎认为他们正在做他们的工作,因为最后一个按钮被禁用,当你去最后一页等,但是ListView从不改变。此外,DataPager需要两次点击即可使其执行任何操作,即单击“上一次”不执行任何操作,但再次单击将导致DataPager反应,就像最后一页现在被选中一样。

我唯一可以想到的是,我在运行时绑定DataSource(到一个LINQ对象),不使用LinqDataSource控件或任何东西。有没有人看到这个行为?我做错了吗?这是我使用的代码

<asp:DataPager ID="HistoryDataPager" runat="server" PagedControlID="HistoryListView" PageSize="10">
    <Fields>
        <asp:NextPrevIoUsPagerField ButtonType="Button" ShowFirstPageButton="true" ShowLastPageButton="true" />
    </Fields>
</asp:DataPager>

<asp:ListView ID="HistoryListView" runat="server">
    ...
</asp:ListView>

代码隐藏中:

Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load

    If Not IsPostBack Then
        HistoryListView.DataSource = From x in myContext.myTables ...
        DataBind()
    End If

End Sub

解决方法

看看ListViewPagedDataSource。
private ListViewPagedDataSource GetProductsAsPagedDataSource(DataView dv)
{
// Limit the results through a PagedDataSource
ListViewPagedDataSource pagedData = new ListViewPagedDataSource();
pagedData.DataSource = dv;
pagedData.MaximumRows = dv.Table.Rows.Count;
pagedData.TotalRowCount = dpTop.PageSize;

if (Request.QueryString[dpTop.QueryStringField] != null)
  pagedData.StartRowIndex = (Convert.ToInt32(Request.QueryString[dpTop.QueryStringField]) - 1) * dpTop.PageSize;
else
  pagedData.StartRowIndex = 0;

return pagedData;
}

虽然,查看最后一页时遇到问题。 DataPager跳转到第一页,但显示的数据是最后一页。

猜你在找的asp.Net相关文章