Как установить [ScaffoldColumn(false)] по умолчанию для динамических данных?
У меня есть несколько таблиц с большим количеством столбцов, с которыми я использую динамические данные. Я только хочу показать небольшое подмножество столбцов.
В настоящее время, когда Dynamic Data создает таблицу, он создает все столбцы, если я не установил для [ScaffoldColumn(false)] значение false. Это работает, но так как я хочу отображать только небольшое подмножество столбцов, было бы легче включить их, а не выключать.
Есть ли способ изменить поведение по умолчанию, чтобы столбец не создавался в скаффолде, если я не скажу это?
1 ответ
Я не знаю, как сделать это из коробки. Тем не менее, вы можете создать свой собственный атрибут для этого.
Вот несколько примеров того, как создать пользовательский атрибут для управления работой 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, а в коде метода GenerateFields объекта IAutoFieldGenerator вы затем будете соответствующим образом искать свой собственный атрибут и код, а если ваш атрибут не будет их, тогда вы просто будете использовать способ DD по умолчанию.
Вы также можете сделать это с вашим собственным поставщиком метаданных:
http://mattberseth.com/blog/2008/08/dynamic_data_and_custom_metada.html
На этом я не уверен, как именно вы могли бы сделать это с обычным поставщиком, но, возможно, небольшое исследование покажет, что это хороший вариант.