FormView.FindControl() returns null until DataBind()

故事扮演 提交于 2019-11-29 11:54:09

Either explicitly call DataBind(), or place your code in the DataBound event of the FormView.

How would a FormView have any information about its content before it has any data to build it upon?

So I guess you already answered your own question, you will have to DataBind() before.

It has nothing to do with BINDING. One is looking for SERVER CONTROL, not for ITS BOUND DATA. SO - control should be available via FindControl. The reason is somewhere else...

It is very odd. Did not work for me just calling DataBind(). I had to create a new List, add an item, set as datasource, then databin.

List<Item> dummyList = new List<Item>();
dummyList.Add(new Item());
formview.DataSource = dummyList;
formview.DataBind();
Sanjeewa

what I experienced is this,

System.Web.UI.HtmlControls.HtmlImage bookmarkload = sessionDetail.FindControl("bookmarkimage") as System.Web.UI.HtmlControls.HtmlImage;

returned null.

So, I did this:

 protected void sessionDetail_DataBound(object sender, EventArgs e)
        {
            LoadBookmarkImage();
        }
  private void LoadBookmarkImage()
        {
            //if (_swapDetails != null)
            //{             
                try
                {
                    _currnetSession = new SessionBL(_user);

                    List<SessionVO> _tmp = null;
                    string sample = Convert.ToString(Page.RouteData.Values["sessionCode"]);
                    if (Session["Prefernce"] != null)
                    {
                        _tmp = (List<SessionVO>)Session["Prefernce"];
                    }
                    if (_tmp != null && _tmp.Count > 0)
                    {
                        _tmp = _tmp.Where(p => p.SessionCode == sample).ToList();
                    }

                    //_currentFavorite.SessionD = _swapDetails[0];
                    _currentFavorite.SessionD = _tmp[0];

                    List<FavoriteVO> _swapList = _user.ViewFavoriteONID(_currentFavorite.SessionD.SessionID);

                    if (_swapList != null && _swapList.Count > 0)
                    {
                        //access javascript counter variable
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "", "counter=1;", true);
                        System.Web.UI.HtmlControls.HtmlImage bookmarkload = sessionDetail.FindControl("bookmarkimage") as System.Web.UI.HtmlControls.HtmlImage;
                        bookmarkload.Src = "/Images/heart-checked.png";
                    }
                }
                catch (Exception ex)
                {
                    labelinfo.Visible = true;
                    labelinfo.InnerHtml = ex.Message;
                    labelinfo.Attributes["class"] = "centering text-center text-danger";
                }
            //}
        } 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!