开发者

Hide an element in ASP.net based on an if inside a Repeater

I know how to use a simple If statement wrapped in the <%# tags to hide something, but I don't know how to do it in a repeater when I need to access Container.DataItem, as in I need the dataItem currently being 'repeated'

eg

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

Markup:

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


It might be more maintainable if you just tagged the controls in the repeater with id's and runat='server' and reference the DataItem in the ItemDataBound event by using e.Item.DataItem. Then use e.Item.FindControl to reference your controls in the ItemTemplate and perform your logic.

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
    }
}


use ItemDataBound Event with repeater, and make the "a" tag with a runat="server" property and 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 :)      
        }

 }

MarkUp:

 <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>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜