Listview中的Findcontrol返回null

时间:2014-03-11 21:27:53

标签: asp.net listview

我试图更改listview中超链接的Text属性,但Findcontrol返回null,虽然我知道它应该返回一个超链接。

列表视图:

<asp:ListView ID="ListView2" OnDataBound="ListView2_DataBound" runat="server">
       <ItemTemplate>

             <asp:HyperLink ID="HyperLinkMenuItem" runat="server" class="btn btn-default" Text='<%#Eval("CatName") %>' NavigateUrl='<%# "City.aspx?City="+ Request.QueryString["City"]+"&CatID="+Eval("CatID") %>'></asp:HyperLink>


       </ItemTemplate>
 </asp:ListView>

代码背后:

protected void ListView2_DataBound(object sender, EventArgs e)
   {

foreach (ListViewDataItem item in ListView1.Items)
   {
       HyperLink MenuItem = (HyperLink) item.FindControl("HyperLinkMenuItem");
       if (MenuItem.Text == "Something")
           {
                MenuItem.Text = "";
           }
    }
}

1 个答案:

答案 0 :(得分:1)

您需要在 ListViewItemEventArgs 中使用 ItemDataBound 事件。

<asp:ListView ID="ListView2" 
    OnItemDataBound="ListView2_ItemDataBound" runat="server">

此外,您不需要遍历 ListView1 (我不知道 ListView1 来自何处)

protected void ListView2_DataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        var menuItem = e.Item.FindControl("HyperLinkMenuItem") as HyperLink;
    }
}