C# 如何获取ItemDataBound内Repeater中的项目计数

C# 如何获取ItemDataBound内Repeater中的项目计数,c#,asp.net,repeater,C#,Asp.net,Repeater,我有一个中继器 <asp:Repeater runat="server" ID="rptID" OnItemDataBound="repID_ItemDataBound"> <ItemTemplate> <a href='example.com/somepage.aspx' id="myLink"> <%# Eval("MyVal")%> </a>

我有一个
中继器

<asp:Repeater runat="server" ID="rptID" OnItemDataBound="repID_ItemDataBound">
         <ItemTemplate>
         <a href='example.com/somepage.aspx' id="myLink">
                 <%# Eval("MyVal")%> 
         </a>
        </ItemTemplate>
</asp:Repeater>

这将为您提供数据源项的计数:

if (((IEnumerable)rptID.DataSource).Cast<object>().Count() == 1)
{
    ((HtmlGenericControl)e.Item.FindControl("myLink")).Attributes
                                                 .Add("class", "Count1");
}
if(((IEnumerable)rptID.DataSource.Cast().Count()==1)
{
((HtmlGenericControl)e.Item.FindControl(“myLink”)).Attributes
.添加(“类别”、“计数1”);
}

计算
IEnumerable
是从此线程借用的:

如果当前项是第一项,或者数据源仅包含一项,则需要设置它?如何将数据绑定到中继器?@TroyCarlson仅当datasource.count为1@IcarusrptID.DataSource=myDataTable;rptID.DataBind();感谢您的回答,但是rpt.DataSource.Count不存在,“无法解析符号计数”可能我需要使用if(rpt.Items.Count==1)?我尝试过,但它给了我相同的错误“无法解析符号‘ToList’”,在建议中,我只有这个选项var rpt=Page.FindControl(“rptID”)作为Repeater;//总是给我空:(是的,它是可用的,但它在每个itemDataBound中都是递增的,我必须在最后一次迭代中检查它,以了解项目的实际计数
if (((IEnumerable)rptID.DataSource).Cast<object>().Count() == 1)
{
    ((HtmlGenericControl)e.Item.FindControl("myLink")).Attributes
                                                 .Add("class", "Count1");
}