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 回答