我正在尝试使用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;" %> '
我做错了吗?它花了很多时间,我真的很沮丧为什么它不起作用。
答案 0 :(得分:2)
非常粗糙的破坏,但这就是你要做的。请记住在.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
,因为它有助于分离关注点并强化整个代码/客户端代码规则。