2

これは実際にはより一般的な質問ですが、私が考えることができる唯一の方法は、特定の例を使用することです.

現在、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ですか? この問題は、動的コンテンツを持つ可能性のあるすべてのコントロールに実際に適用されます。ドロップダウン リストなどにエントリを追加する適切な場所はどこですか。多くの方法がありますが、どれが「正しい」のでしょうか? コントロールの「作成」のドロップダウン部分に選択を追加していますか? 選択が動的かどうかに依存していますか?

4

1 に答える 1

0

BoundFieldはコントロールではなく、Columnsgridviewのコレクションは状態管理されているためPreRender、コントロールをデータバインドする前に、イベントに列を安全に追加できます。

于 2012-06-13T15:03:50.450 に答える