在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

希望你们中的一些人能对为什么它不起作用提出建议。

在asp.net中尝试为没有数据源控件的列表视图创建数据寻呼机时,出现绑定错误

代码的问题是DataPager需要完整的数据来计算页码,但您将IEnumerable<T>分配给ListView,这将在绑定数据时得到解决(您可以阅读有关LINQ Deferred Execution的信息)。

要解决此问题,只需使用ToArrayToList:-枚举结果

lstAllProducts.DataSource = svc.GetAllItemsOverview()
                               .OrderByDescending(i => i.id)
                               .ToArray();