4

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

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

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事件处理程序正在多个转发器中使用,所以我需要一些更通用的东西。

4

1 回答 1

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——但这似乎是合理的。

于 2012-05-28T09:35:29.363 回答