在ItemDataBound中获取转发器中的项目数

时间:2012-05-28 09:27:42

标签: c# asp.net .net collections web-controls

我在处理OnItemDataBound事件时尝试获取转发器中的项目数。我想要实现的目标非常简单;我试图在转发器中的最后一项隐藏某个标签。目前我正在加入ItemIndexItems.Count,但是在OnItemDataBound期间,索引和计数一起递增。

这是我到目前为止所得到的:

Label myLabel = e.Item.FindControl<Label>("MyLabel");
if (myLabel != null)
{
    // as the item index is zero, I'll need to check against the collection minus 1?
    bool isLastItem = e.item.ItemIndex < (((Repeater)sender).Items.Count - 1);
    myLabel.Visible = !isLastItem;
}

我知道我可以将DataSource强制转换为绑定的数据项集合,但是OnItemDataBound事件处理程序正在多个转发器中使用,所以我需要稍微需要一些东西更通用。

1 个答案:

答案 0 :(得分:2)

你可以做一些事情,默认情况下将Visible设置为false:

if (e.Item.ItemIndex > 0)
{
     var previousItem = ((Repeater)sender).Items[e.Item.ItemIndex - 1];
     var previousLabel = previousItem.FindControl<Label>("MyLabel");
     if (previousLabel != null)
     {
         previousLabel.Visible = true;
     }
}

我不是确定如果这样做 - 我不知道你可以访问repeater.Items,直到我看到你的代码 - 但它似乎是合理的。