これは実際にはより一般的な質問ですが、私が考えることができる唯一の方法は、特定の例を使用することです.
現在、SPGridView
. 現状では、GV とすべてのバインドされたフィールドは で作成されCreateChildControls
、データは で取得およびバインドされOnPreRender
ます。列は静的であるため、これは正常に機能します。
CreateChildControls{
// create and configure the gridview
// create all bound fields and add them to the gridview
// add the gridview to the page
}
OnPreRender{
// get the data and bind it to the gridview
}
ここで、ユーザーがドロップダウン リストから行った選択に応じて列を変更する必要があります。内部でCreateChildControls
は、ドロップダウン コントロールから値を取得できないため、バインドされたフィールドを条件付きで追加することはできません。私の質問は、ここでのベストプラクティスは何ですか? で可能なすべてのバインドされたフィールドを作成しCreateChildControls
、適切なフィールドのみを で GV に追加することができますOnPreRender
。バインドされたすべてのフィールドの作成を完全に に移すことができますOnPreRender
。そして、他にも本当に多くのオプションがあります。
CreateChildControls{
// create and configure the gridview
// create ALL bound fields here?
// add the gridview to the page
}
OnPreRender{
// or maybe create only the applicable bound fields here?
// add the appropriate fields to the gridview
// get the data and bind it to the gridview
}
そして、より一般的な意味で、コントロール (の目的) を「作成」することを実際に構成するものは何CreateChildControls
ですか? この問題は、動的コンテンツを持つ可能性のあるすべてのコントロールに実際に適用されます。ドロップダウン リストなどにエントリを追加する適切な場所はどこですか。多くの方法がありますが、どれが「正しい」のでしょうか? コントロールの「作成」のドロップダウン部分に選択を追加していますか? 選択が動的かどうかに依存していますか?