不要忘记我们使用的是面向对象的语言。我认为您需要通过从 BoundField 和 GridView 对象继承来进行控制。您可以覆盖 GridView 的 CreateColumns 函数并让它使用您的新 BoundField 对象而不是默认值。
这就是我从 GridView 创建多列 TreeView 的方式,请参见此处。
BoundFiled 对象具有您可以覆盖的事件,例如 New、InitializeDataCell、OnDataBindField、ExtractValuesFromCell 或您自己的事件。您可以添加事件处理程序,例如:
Protected Overrides Sub InitializeDataCell(ByVal cell As
System.Web.UI.WebControls.DataControlFieldCell,
ByVal rowState As System.Web.UI.WebControls.DataControlRowState)
... ect...
AddHandler cell.DataBinding, AddressOf OnDataBindField
End Sub
从 GridView 继承为您提供了许多可以覆盖的方法,这些方法可以让您完全控制新对象的功能。这些包括 OnInit、InitializeRow、PerformDataBinding、OnPreRender、OnSorting、UpdateRow、InitializeDataCell 等。您可以看到您将如何拥有完全的控制权。
如果你打算走这条路,我强烈推荐下面这本书。他在他的示例中使用了 GridView。