我在处理OnItemDataBound
事件时尝试获取转发器中的项目数。我想要实现的目标非常简单;我试图在转发器中的最后一项上隐藏某个标签。目前我正在加入ItemIndex
和Items.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
事件处理程序正在多个转发器中使用,所以我需要稍微需要一些东西更通用。
答案 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
,直到我看到你的代码 - 但它似乎是合理的。