如何计算asp转发器中的项目数?

时间:2014-05-09 13:00:31

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

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

我希望显示以下内容:

MARKUP

第1页,共5页

ASPX

获取物品索引:(工作)

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

计算总项目数:(失败)

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

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

4 个答案:

答案 0 :(得分:1)

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

<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>

中继器中的项目数为:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我相信SqlDataSource使用&#34; SQLdatareader&#34;,这是逐行访问。因此,如果它有行,则一次返回一行,而不知道它还需要多少行。

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

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

答案 3 :(得分:-1)

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

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