エクステンダーコントロールは、プレレンダーの後に登録されない場合があります。 gridview databind()で発生します
-
28-10-2019 - |
質問
ASP.NET 4.0 C#Webアプリでは、デバッグ中に件名で上記のエラーが発生します。
いくつかの検索結果が問題の原因である可能性があるため、私はページ上のダイナミックコントロールでファンキーなことを実際に行っていません。
ページには2があります ajax:CalendarExtenders
しばらくの間正常に動作しています。
おそらくそれは関連していますが、私は実際にどれほどどれほど見ることができますが、これはエラーが発生したときに現在取り組んでいたものです。
AutoreFresh機能でイベントを提起するページにコントロールがあります。 [そのマップコントロール]。
私のページはそのイベントを購読し、そうすることでデータビンドは asp:GridView
. 。グリッドとマップ制御が同期していることを確認するために、毎回グリッド内のデータをバインドする必要があります。 [その車両追跡ページ
エラーはDataBindコマンドで発生します。
同じエラーを思い付くためにのみエクステンダーを削除しました。
データビンドは簡単ですが、エラーは他の場所にあると確信しています。とにかく含めます。
this.SearchGrid.DataSource = resultsWithMetrics;
this.SearchGrid.AllowPaging = true;
this.SearchGrid.PageIndex = this.SearchGridPager.CurrentPage;
this.SearchGrid.AllowPaging = this.SearchGridPager.PageSize > 0;
this.SearchGrid.PageSize = this.SearchGridPager.PageSize > 0 ? this.SearchGridPager.PageSize : this.SearchGrid.PageSize;
this.SearchGrid.DataBind();
たぶん、それは単に私をつまずかせたページのライフサイクルを理解していないかもしれません、とにかくいくつかの助けを喜んでいるでしょう。
解決
usercontrolまたはページコントロールで次のコードを使用します。 Ajaxコントロールを使用している場合に機能します。
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (this.DesignMode == true)
{
this.EnsureChildControls();
}
this.Page.RegisterRequiresControlState(this);
}
他のヒント
問題は、行データビンドでエクステンダーコントロールが各行に追加され、これらのエクステンダーが問題を引き起こしたことでした。
The Rebindをトリガーしたイベントは、コールバックを使用してサーバーと通信し、その後、おそらくページライフサイクルで遅すぎるイベントを上げるユーザーコントロールから来ました。
何が起こっているのかを完全に理解せずに、すべてが少し危険にさらされており、アプリの構造を少し変更しました。