.NETデータバインドリピーターコントロールを動的に更新する方法
-
19-08-2019 - |
質問
リストに対して.NET repeater
であるdata-bound
コントロールがあります。リピーターのItem Collection
の一部として、<!> quot; Remove Button <!> quot;があります。これにより、この現在のList要素が効果的に削除されます。
これは機能します。コードビハインドでは、 Repeater のdatasource
からアイテムを正常に削除できます。
私の問題はこれです:更新されたMyRepeater.DataBind()
をリセットし、再度<=>を呼び出すと、アイテムが削除された状態で Repeater インターフェースが更新されません。
更新されたリストに基づいて、基本的に Repeater を再描画または更新するイベントを探しています。ポインタや例に感謝します。
解決
データソースで「DataBind」メソッドを呼び出し、 then リピーターコントロールで「DataBind」を呼び出す必要があります。
他のヒント
更新されたデータソースをフィードしていますか?
コードビハインドでデータソースを設定している場合は、更新されたデータを使用して設定し、DataBindメソッドを呼び出す必要があります。
リピーターコントロールとDataTableソースを使用して、そのようなものに遭遇しました。
DataTableにはRefreshメソッドはありませんでしたが、最初のページの読み込み時にDataTable.EnableDynamicData(typeof(DataTable))を呼び出すと問題が解決しました。
似たような状況がありました... UpdatePanel内のxmlDataSourceにバインドされたリピーター。ユーザーに一度に1つの名前を入力させてから、<!> quot; Add <!> quot;リピーターのリストを更新するボタン。
<!> quot; EnableViewState <!> quot;を設定します。リピーターとxmlDataSourceでFalseに設定し、<!> quot; EnableCaching <!> quot;を設定します。同様にxmlDataSourceをFalseにします。 xmlDataSourceのDataBindと呼ばれるxmlDataSourceのDataプロパティを設定し、リピーターのDataSourceIDプロパティを設定してから、リピーターのDataBindと呼ばれます。多分それは行き過ぎだった...しかし、それは働いた。たぶんこれが役立つでしょう。
UPDATE:リピーターコントロールでEnableViewStateをFalseに設定すると、ItemCommandイベントが発生しません。しかし、データソースのEnableViewState / EnableCachingをFalseに設定するだけでよいと思います...リピーターのEnableViewState設定をTrueに戻したので、すべてがうまくいきました。
Databindの強制は通常、 PreRender イベントで自動DataBindが実行される場所で実行されます。
通常、クリックイベントで削除を行った場合、preRenderでは自動的にページ上のコントロールがDataBind()であるため、リピーターは自動的に更新されます。マイクロソフトのドキュメントには次のように書かれています:
PreRender:このイベントが発生する前に、DataSourceIDプロパティが設定されている各データバインドコントロールがDataBindメソッドを呼び出します。
したがって、おそらくYouritem.DataSource = Listに影響がありますが、MSはYourItem.DataSourceID = List.ID、またはそのようなことを行うことをお勧めします。
希望する