メソッドがcall までFindControl()
戻る理由。null
FormView
DataBind()
その後、すべてを正しく返しますか?
どのような回避策がありますか?
?DataBind()
の最初の呼び出しの前に呼び出すFindControl()
メソッドがcall までFindControl()
戻る理由。null
FormView
DataBind()
その後、すべてを正しく返しますか?
どのような回避策がありますか?
?DataBind()
の最初の呼び出しの前に呼び出すFindControl()
DataBind()を明示的に呼び出すか、FormViewのDataBoundイベントにコードを配置します。
FormView
コンテンツを構築するためのデータを取得する前に、コンテンツに関する情報を取得するにはどうすればよいでしょうか?
ですから、あなたはすでに自分の質問に答えていると思いますDataBind()
。
それはBINDINGとは何の関係もありません。1つは、そのバインドされたデータではなく、サーバー制御を探しています。SO-コントロールはFindControlを介して利用可能である必要があります。理由はどこかにあります...
私が体験したことは、
System.Web.UI.HtmlControls.HtmlImage bookmarkload = sessionDetail.FindControl("bookmarkimage") as System.Web.UI.HtmlControls.HtmlImage;
返されnull
ました。
だから、私はこれをしました:
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";
}
//}
}
とても奇妙です。DataBind() を呼び出すだけではうまくいきませんでした。新しいリストを作成し、アイテムを追加し、データソースとして設定し、次にデータビンにする必要がありました。
List<Item> dummyList = new List<Item>();
dummyList.Add(new Item());
formview.DataSource = dummyList;
formview.DataBind();