2013-02-24 107 views

回答

1

ItemDataBound確實是一個可能的選擇,但對於它的工作,你將需要總計數所以你可以識別最後一項:

protected void rptDummy_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    int itemsCount = ((List<SomeClass>)rptDummy.DataSource).Count; 

    if (e.Item.ItemType == ListItemType.Item) 
    { 
     if(e.Item.ItemIndex == itemsCount - 1) 
     { 
      //Do Things here 
     } 
    } 
} 

你甚至可以有相同的模板中的兩個佔位符,一個專爲最後一個項目:

<ItemTemplate> 
    <asp:PlaceHolder id="phIsNotLastOne" runat="server">Is not last</asp:PlaceHolder> 
    <asp:PlaceHolder id="phIsLastOne" runat="server">Is last</asp:PlaceHolder> 
</ItemTemplate> 

然後,你可以做這樣的事情:

protected void rptDummy_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    long itemsCount = ((List<SomeClass>)rptDummy.DataSource).Count; 

    if (e.Item.ItemType == ListItemType.Item) 
    { 
     PlaceHolder phIsLastOne = (PlaceHolder)e.Item.FindControl("phIsLastOne"); 
     PlaceHolder phIsNotLastOne = (PlaceHolder)e.Item.FindControl("phIsNotLastOne"); 
     phIsLastOne.Visible = e.Item.ItemIndex == itemsCount - 1; 
     phIsNotLastOne.Visible = !this.phIsLastOne.Visible; 
    } 
} 
+0

感謝您的答覆。這可以正常工作。我很好奇只使用中繼器處理這個標記。我也發現類似於你的回覆:[鏈接](http://stackoverflow.com/questions/3815483/asp-net-repeater-eval) – pilavust 2013-02-24 17:36:01

+0

你是什麼意思,沒有任何佔位符?最後一項需要什麼樣的處理? – 2013-02-24 18:02:28

+0

我想使用'AlternateItemTemlate'或另一個只在最後一項運行的中繼器項目。 – pilavust 2013-02-24 18:48:23