在asp.net中尝试为没有数据源控件的列表视图创建数据寻呼机时,出现绑定错误
本文关键字:寻呼机 数据 创建 视图 错误 绑定 列表 net asp 数据源控件 | 更新日期: 2023-09-27 18:29:58
我正在尝试为页面底部的列表视图创建一个数据寻呼机。当我在没有数据寻呼机的情况下绑定列表视图时,我不会得到任何错误,所有内容都会像应该的那样列出。但是,当我尝试创建一个数据寻呼机时,我得到了一个错误,它说:列表需要一个数据源,或者如果AllowPaging为true,则需要一个ICollection作为数据源
这是我的列表视图:
<asp:ListView ID="lstAllProducts" runat="server">
<ItemTemplate>
<a style="color: black" href="ProductInfo.aspx?id=<%# Eval("itemId") %>">
<div class="wrpInnerItem hvr-fade">
<div class="innerItem">
<p><%#Eval("gtin")%></p>
</div>
<div class="innerItem">
<p><%#Eval("brandName")%></p>
</div>
<div class="innerItem">
<p><%#Eval("functionalName")%></p>
</div>
<div class="innerItem">
<p><%#Eval("unitDescription")%></p>
</div>
<div class="innerItem">
<p><%#Eval("articleNr")%></p>
</div>
</div>
</a>
</ItemTemplate>
</asp:ListView>
这是数据寻呼机:
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="lstAllProducts" PageSize="12">
<Fields>
<asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="true" ShowLastPageButton="true" />
</Fields>
</asp:DataPager>
这里是我在页面加载中为列表视图绑定数据的地方:
if (!IsPostBack)
{
lstAllProducts.DataSource = svc.GetAllItemsOverview().OrderByDescending(i => i.id);
lstAllProducts.DataBind();
}
我试着遵循这个链接中的指南。http://weblogs.asp.net/hajan/paging-listview-using-datapager-without-using-datasource-control
希望你们中的一些人能对为什么它不起作用提出建议。
代码的问题是DataPager
需要完整的数据来计算页码,但您将IEnumerable<T>
分配给ListView
,这将在绑定数据时得到解决(您可以阅读有关LINQ Deferred Execution
的信息)。
要解决此问题,只需使用ToArray
或ToList
:-枚举结果
lstAllProducts.DataSource = svc.GetAllItemsOverview()
.OrderByDescending(i => i.id)
.ToArray();