Domanda

Perché i rendimenti metodo FindControl() null su FormView fino chiamata DataBind().

Dopo che restituisce tutto correttamente?

Che soluzione ci sono?

Chiamata DataBind() prima del primo richiamo di FindControl()?

È stato utile?

Soluzione

In ogni modo esplicito chiamare DataBind (), oppure inserire il codice nel caso DataBound del FormView.

Altri suggerimenti

Come sarebbe un FormView avere alcuna informazione circa il suo contenuto prima che abbia tutti i dati per costruire su di?

Quindi immagino che già risposto alla tua domanda, si dovrà DataBind() prima.

Non ha nulla a che fare con il legame. Uno è alla ricerca di controllo del server, non per i suoi dati legati. SO - il controllo dovrebbe essere disponibile tramite FindControl. Il motivo è da qualche altra parte ...

E 'molto strano. Non ha funzionato per me basta chiamare DataBind (). Ho dovuto creare un nuovo elenco, aggiungere un elemento, impostare come origine dati, quindi databin.

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

quello che ho vissuto è questo,

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

null restituito.

Quindi, ho fatto questo:

 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";
                }
            //}
        } 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top