2

CompositeDataBoundControl クラス ( http://msdn.microsoft.com/en-us/library/ms366539(v=vs.100).aspx ) のドキュメントには、次のように記載されています。

これは、DataBoundControl クラスを拡張する基本クラスであり、次の機能を提供します。

  • 複合コントロールに必要な一般的なコードを実装します。これには、ポストバックが行われた後にコントロールの子コントロール階層をビューステートから復元するコードが含まれます。
  • IEnumerable データ ソースにバインドし、データを列挙してコントロール ツリーを構築します。
  • GridView や DetailsView などのデータ バインド コントロールの基礎として機能します。

手動で DataBind を呼び出さずに PostBack 後にコントロールを保持する CompositeDataBoundControl を作成する方法の例を誰かが説明または示すことができますか? 私の例は複雑すぎて投稿できませんが、たとえば ListView をバインドすると、PostBack の後に各項目がレンダリングされます。このドキュメントは、このクラスから継承するときにこれが自動的に処理されることを示しているようですが、私はそれを機能させることができませんでした.

DataBind を呼び出さなくても、ポストバックごとに CreateChildControls が呼び出されることがわかりますが、データ ソースは null オブジェクトの IEnumerable (ポストバック前に元のデータ ソースで渡されたのと同じ量の DummyDataSource) です。 . このコレクションで何かをする必要があるようですが、作成するコントロールのタイプはそのアイテムのタイプに依存するため、何をすべきかわかりません (この場合、PropertyInfo の List にバインドし、特定のプロパティの属性に応じたクラス)。

ご協力いただきありがとうございます。

4

0 に答える 0