在列表视图中隐藏一个元素

本文关键字:一个 元素 列表 视图 隐藏 | 更新日期: 2023-09-27 18:13:53

我试图通过使用visible='false'来隐藏我的ListView中的锚,但我注意到它不起作用。我也试过隐藏元素使用css,但它也不工作。我已经检查过了,没有javascript错误或代码错误。

我是这样做的:

       //inside ItemTemplate in ListView
    <td>
    <a runat="server"  id="selectionAnchor" href='Somelocation' visible='<%# (Convert.ToBoolean(uoshowHiddenField.Value)) %>' >  Edit</a>
 </td>

我把我的uoShowHiddenField放在listview上面:

 <asp:HiddenField ID="uoShowHiddenField" runat="server" Value="false" /> 

但是当我在浏览器中检查元素时它会显示如下:

<a href="Somelocation" id="selectionAnchor"> Edit</a>

我也试过用这个方法,但没有用:

style=' <%# (uoShowHiddenField.Value == "true") %> ? " ": "display:none;" %> '

我做错了什么吗?这花了我很多时间,我真的很沮丧,为什么它不工作。

在列表视图中隐藏一个元素

非常粗略的概述,但这就是您应该如何做的。请记住,在.aspx代码中将OnItemDataBound=""事件绑定到ListView:

代码:

由于您使用的是普通的旧HTML超链接,因此必须使用HtmlGenericControl类来定位控件

protected void SampleListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
       if(uoShowHiddenField.Value == "true") {
          HtmlGenericControl hyperlink = (HtmlGenericControl)e.item.FindControl("selectionAnchor");
          hyperlink.Visible = false;
       }
    }
}

ASPX:

<asp:ListView ID="SampleListView" OnItemDataBound="SampleListView_ItemDataBound" runat="server">
        <ItemTemplate>
            <a runat="server" ID="selectionAnchor">Link</a>
        </ItemTemplate>
    </asp:ListView>

我倾向于选择ItemDataBound,因为它有助于分离关注点,并加强/客户端代码后面的整个代码规则。