这确实是一个更普遍的问题,但我能想到的唯一方法是举一个具体的例子。
我们目前有一个带有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
)?这个问题确实延伸到任何可能具有动态内容的控件。将条目添加到下拉列表等的合适位置在哪里。有很多工作方式,但哪种方式是“正确的”?是否将选择添加到“创建”控件的下拉部分?它是否取决于选择是否是动态的?