FormView.FindControl () restituisce null fino DataBind ()
-
24-09-2019 - |
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()
?
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";
}
//}
}