farhang67
farhang67

Reputation: 789

Findcontrol in Listview returns null

I'm trying to Change Text property of hyperlinks inside a listview but Findcontrol returns null although I know it should returns a hyperlink.

Listview:

<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>

Behind Code:

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 = "";
           }
    }
}

Upvotes: 1

Views: 737

Answers (1)

Win
Win

Reputation: 62260

You need use ItemDataBound event with ListViewItemEventArgs.

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

In addition, you do not need to loop through ListView1 (I have no clue where ListView1 came from)

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

Upvotes: 1

Related Questions