我有许多带有大量列的表格,正在使用动态数据。我只想显示其中的一小部分列。
目前,当动态数据搭建表格时,它会创建所有列,除非我将[ScaffoldColumn(false)]设置为false。这种方法虽然可行,但由于我只想显示少数列,因此打开所需列会更容易。
是否有一种方法可以更改默认行为,使得除非我告诉它,否则不会搭建某一列?
我有许多带有大量列的表格,正在使用动态数据。我只想显示其中的一小部分列。
目前,当动态数据搭建表格时,它会创建所有列,除非我将[ScaffoldColumn(false)]设置为false。这种方法虽然可行,但由于我只想显示少数列,因此打开所需列会更容易。
是否有一种方法可以更改默认行为,使得除非我告诉它,否则不会搭建某一列?
我不知道有没有现成的方法来做这件事。但是,您可以创建自己的自定义属性来实现。
以下是如何创建自定义属性以控制 DD 工作方式的示例:
http://csharpbits.notaclue.net/2009/04/hiding-foreign-key-column-globally-in.html - 创建一个在所有表中隐藏外键列的属性示例。
http://csharpbits.notaclue.net/2008/10/dynamic-data-hiding-columns-in-selected.html - 另一个用于在页面级别隐藏列的属性示例。
我认为第一个示例,在表级别定义,可能是最好的选择。您可以创建自己的属性,例如 HideFieldsByDefault,并将其设置为 true。
您需要将希望在 ScaffoldColumn 中显示的字段添加到 true,并在 IAutoFieldGenerator 的 GenerateFields 方法的代码中查找您的自定义属性,并相应地编写代码。如果找不到您的属性,则只需使用默认的 DD 方式。
您还可以尝试使用自己的元数据提供程序来完成此操作:
http://mattberseth.com/blog/2008/08/dynamic_data_and_custom_metada.html
对于这个问题,我不确定如何使用自定义提供程序来实现,但也许通过一些研究可以发现它是一个不错的选择。