2010-01-05 79 views
0

我知道如何使用包裝在<%#標籤中的簡單If語句來隱藏某些內容,但我不知道如何在中繼器中執行此操作當我需要訪問的Container.DataItem,在我需要目前正在「重複」在ASP.net中隱藏一個元素,如果在Repeater中if隱藏一個元素

如DataItem的

if (CurrentValidationMessage.Link != "") 
{ 
    show a hyperlink 
} 

標記:

<asp:Repeater ID="repValidationResults" runat="server"> 
     <HeaderTemplate> 
     </HeaderTemplate> 
     <ItemTemplate> 
      <a href='<%# ((MttImportValidationMessage)Container.DataItem).EditLink %>'> Link to erroneous Milestone </a> 
      <%# ((MttImportValidationMessage)Container.DataItem).Message %> 
      <br /> 
     </ItemTemplate> 
    </asp:Repeater> 

回答

4

這可能是更容易維護,如果你只是tagge d帶有id和runat ='server'的中繼器中的控件,並使用e.Item.DataItem引用ItemDataBound事件中的DataItem。 然後使用e.Item.FindControl在ItemTemplate中引用您的控件並執行您的邏輯。

protected void repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item) 
    { 
     Domain.Employee employee = (Domain.Employee)e.Item.DataItem; 
     Control myControl = (Control)e.Item.FindControl("controlID"); 
     //Perform logic 
    } 
} 
+0

謝謝,我超級新的ASP,但這是一個更好的方式做到這一點。 – Tarks 2010-01-05 16:05:09

0

使用ItemDataBound事件與轉發,使 「一」 標籤中具有runat = 「服務器」 屬性和ID

protected void repValidationResults_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    RepeaterItem item = e.Item; 
     if (item.ItemType == ListItemType.AlternatingItem || item.ItemType == ListItemType.Item) 
     { 

      HyperLink link = (HyperLink) item.FindControl("link");  
      //Do all your logic here :)  
     } 

} 

標記:

<asp:Repeater ID="repValidationResults" runat="server"> 
    <HeaderTemplate> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <a runat="server" ID="link"> Link to erroneous Milestone </a> 
     <%# ((MttImportValidationMessage)Container.DataItem).Message %> 
     <br /> 
    </ItemTemplate> 
</asp:Repeater>