2010-01-05 5 views
0

Я знаю, как использовать простой оператор If, завернутый в теги <% #, чтобы скрыть что-то, но я не знаю, как это сделать в ретрансляторе когда мне нужно получить доступ к Container.DataItem, как мне нужно DataItem в настоящее время 'повторяется'Скрыть элемент в ASP.net на основе if внутри ретранслятора

например

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

Markup:

<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' и ссылаются на DataItem в событии ItemDataBound, используя e.Item.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

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> 
Смежные вопросы