【问题标题】:How to count the number of items in an asp repeater?如何计算asp中继器中的项目数?
【发布时间】:2014-05-09 13:00:30
【问题描述】:

如何使用 ASP.NET 计算转发器中的项目数?

我想展示以下内容:

标记

第 1 页,共 5 页

ASPX

获取项目索引:(工作中)

<%# DataBinder.Eval(Container, "ItemIndex", "") + 1%>

项目总数:(失败)

<%# DataBinder.Eval(Container.ItemIndex, rpt.Items.Count)%>

我更愿意在页面上执行此操作,但我愿意接受建议和背后的代码。

【问题讨论】:

  • 你是如何获取数据的?页面数据适配器?通过代码隐藏的数据阅读器?还有什么?
  • 通过从 sp 填充的页面上的 SqlDataSource。

标签: asp.net vb.net data-binding repeater markup


【解决方案1】:

如果数据源是数据表,使用下面的代码

<%# Convert.ToString(((System.Data.DataTable)((Repeater)Container.Parent).DataSource).Rows.Count) %>

【讨论】:

    【解决方案2】:

    这是我得到的最好的解决方案

    <asp:Repeater ID="rptGallery" runat="server"  >
        <ItemTemplate>
            <div>
                <div>        
                    <asp:Label ID="Number_of_element_in_repeater" runat="server"
                    Text='<%#Convert.ToString(((IList((Repeater)Container.Parent).DataSource).Count) %>'>
                    </asp:Label>
    
                </div>
            </div>
        </ItemTemplate>
    </asp:Repeater>
    

    repeater 中的项目数为:

    Convert.ToString(((IList)((Repeater)Container.Parent).DataSource).Count)
    

    【讨论】:

    • 对我来说晚了 5 年半,但我会接受,谢谢。
    【解决方案3】:

    我相信 SqlDataSource 使用“SQLdatareader”,它是逐行访问的。因此,如果它有行,它一次返回一行,不知道还要走多少。

    您可以在行集中包含总行数(类似于 count(*)),并将其作为每行中的字段返回。这并不理想,但这是将其返回到当前代码的一种方式。

    如果您也不反对使用代码隐藏,那么您可以调用并获取记录以通过这种方式获取行数,然后在您的标记中使用该值(将其设置为隐藏字段,例如例子)。无论哪种方式,您都需要遍历所有行才能知道有多少行。

    【讨论】:

    • 只检测最后呈现的项目怎么样?
    【解决方案4】:

    看起来您需要转换为支持您正在使用的属性的数据类型,试试这个:

    ((Container.Parent as Repeater).DataSource as IList).Count
    

    【讨论】:

    • 和我的回答不一样? :?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多