0

我创建了一个从 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

然后我可以在代码隐藏中创建类的实例并将它们放入占位符中。但是,我试图覆盖的功能永远不会触发。我根据 Microsoft 文档和其他来源检查了它的签名,它似乎与记录的签名相同,但它从未被调用。关于它为什么不起作用或如何调试此类问题的任何建议?

(请注意,我还在类中放入了一个构造函数,这被称为 OK - 只有上面没有被调用)。

4

1 回答 1

0

GridView.AutoGenerateColumns文档:

当 AutoGenerateColumns 属性设置为 true 时,会为数据源中的每个字段自动创建一个 AutoGeneratedField 对象。然后,每个字段在 GridView 控件中显示为一列,按照字段在数据源中出现的顺序。此选项提供了一种方便的方式来显示数据源中的每个字段;但是,您对自动生成的列字段的显示或行为方式的控制有限。

你在AutoGenerateColumns某处设置为真吗?您还需要为 Grid 提供数据源。你使用什么样的数据源?

如果您已根据上面的链接设置了所有内容,则不必重写该函数来获取代码中的行为,因为它会自动创建这些实例。此外,请查看该功能的文档:它已经过时了——所以我很难知道它今天做了什么。

如果您查看该属性的文档,它会提供一些有关如何控制生成内容的选项,例如使用ColumnsGenerator.

于 2013-11-07T02:33:40.287 回答