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 に答える