LINQ与使用listview进行分页

5
我有一个页面,其中包含一个列表视图控件和一个数据分页控件。通过以下代码,可以以编程方式设置列表视图的数据源:
Dim dal as new dalDataContext
Dim bookmarks = From data In dal.getData(userid)
listview1.DataSource = bookmarks
listview1.DataBind()
当我在浏览器中测试此页面时,出现错误:“ListView with id 'listview1' must have a data source that either implements ICollection or can perform data source paging if AllowPaging is true.”
在这种情况下,如何实现分页?
谢谢
3个回答

18

尝试

listview1.DataSource = bookmarks.ToArray()

我这周也遇到了同样的问题。


非常感谢!回复非常迅速。简直不敢相信问题如此简单。 - j82374823749
有一个小问题,我必须点击页面数字两次才能进入下一页或上一页。有什么解决办法吗?谢谢。 - j82374823749
1
更好的做法是使用 ToArray() - 如果您不需要完整的 List 功能(例如添加新项),它会稍微轻量一些 - 在这里您并不需要;否则数组实现了 ICollection(和 IList)。 - Pavel Minaev
briggins5,听起来像是跟踪当前页面/绑定数据的代码有问题,如果你还卡住了,最好另开一篇帖子。 - KClough
谢谢大家的帮助。如果我自己无法解决问题,我会问一个新的问题。 - j82374823749

2
将数据绑定移至OnPreRender事件处理程序,可解决OP随后遇到的双击问题。
    protected void Page_PreRender(object sender, EventArgs e)
    {
        listview1.DataBind();
    }

0

或者创建一个页面属性更改并在那里绑定列表视图。

protected void lv_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
    //set current page startindex, max rows and rebind to false
    DataPager dp = lvNews.FindControl("lvDataPager1") as DataPager;
    dp.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);

    BindListView();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接