将一个元素隐藏在listview中

时间:2014-07-22 01:24:32

标签: c# asp.net listview element visible

我正在尝试使用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;" %> '

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

1 个答案:

答案 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,因为它有助于分离关注点并强化整个代码/客户端代码规则。