2012-05-28 3 views
3

OnItemDataBound 이벤트를 처리하는 동안 리피터에서 항목 수를 얻으려고합니다. 나는 그것을 아주 간단하게하기 위해 노력하고있다. 나는 의 마지막 항목에 숨기려고 노력하고 있습니다. 현재 ItemIndexItems.Count에 연결되어 있지만 OnItemDataBound 동안 색인과 개수가 함께 증가합니다.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 이벤트 핸들러가 여러 개의 중계기를 통해 사용하고, 그래서 약간 더 일반적인 것을 필요로 할 것입니다. 이 작동하는지 내가 확실하지 않다

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에 액세스 할 수 몰랐 :

답변

2

당신의 라인을 따라 뭔가를 할 수는 기본적으로 false로 Visible을 설정 한 나는 당신의 코드를 보았지만 그럴듯 해 보였다.

+0

'첫 번째'항목에서 항목을 숨기려고하면이 기능이 작동하지만 '마지막'항목에서는 숨기려고합니다. :) – Richard

+0

@Richard Yup ... 기본적으로'Visible'을'false'로 설정하면이 코드는 마지막 항목을 제외한 모든 항목에 대해 'true'로 설정합니다. (각 바인딩에서 _previous_ 라벨을 찾아서 보여줍니다.) – Rawling

+0

아 물론 그렇습니다. 가능한 해결 방법입니다. 감사합니다. – Richard