重写函数不会触发

时间:2013-11-07 02:30:12

标签: asp.net custom-controls

我创建了一个继承自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 - 只是上面没有调用它。)

1 个答案:

答案 0 :(得分:0)

来自GridView.AutoGenerateColumns文档:

  

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

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

如果您已根据上面的链接设置了所有内容,则不必重写该函数以获取代码中的行为,因为它将自动创建这些实例。进一步看一下the documentation for that function:它已经过时了 - 所以我很难知道它今天做了什么。

如果您查看the property's documentation,它会提供一些有关如何控制生成内容的选项,例如使用ColumnsGenerator