在列表视图中隐藏一个元素
本文关键字:一个 元素 列表 视图 隐藏 | 更新日期: 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
,因为它有助于分离关注点,并加强/客户端代码后面的整个代码规则。