我创建了一个继承自gridview的控件:
Partial Public Class nullGridView
Inherits System.Web.UI.WebControls.GridView
Protected Overrides Function CreateAutoGeneratedColumn(ByVal fieldProperties As AutoGeneratedFieldProperties) As AutoGeneratedField
' Create an AutoGeneratedField object.
Dim field As New AutoGeneratedField(fieldProperties.DataField)
' Set the properties of the AutoGeneratedField using
' the values from the AutoGeneratedFieldProperties
' object contained in the fieldProperties parameter.
CType(field, IStateManager).TrackViewState()
field.HeaderText = fieldProperties.Name
field.SortExpression = fieldProperties.Name
field.ReadOnly = fieldProperties.IsReadOnly
field.DataType = fieldProperties.Type
field.NullDisplayText = "NULL"
Return field
End Function
End Class
然后我可以在codebehind中创建类的实例并将它们放入占位符。但是,我试图覆盖的功能永远不会触发。我根据Microsoft文档和其他来源检查了它的签名,它看起来与文档签名相同,但它永远不会被调用。关于它为什么不起作用的任何建议,或者如何调试这类问题?
(注意我还将一个构造函数放入类中,并且调用了OK - 只是上面没有调用它。)
答案 0 :(得分:0)
来自GridView.AutoGenerateColumns文档:
当AutoGenerateColumns属性设置为true时,a 将为每个字段自动创建AutoGeneratedField对象 数据源。然后每个字段显示为一列中的 GridView控件按字段出现在数据中的顺序 资源。此选项提供了显示每个字段的便捷方式 在数据源中;但是,你对如何控制有限 自动生成的列字段显示或表现。
您是否在某处将AutoGenerateColumns
设置为true?您还需要为Grid提供数据源。你使用什么样的数据源?
如果您已根据上面的链接设置了所有内容,则不必重写该函数以获取代码中的行为,因为它将自动创建这些实例。进一步看一下the documentation for that function:它已经过时了 - 所以我很难知道它今天做了什么。
如果您查看the property's documentation,它会提供一些有关如何控制生成内容的选项,例如使用ColumnsGenerator
。