Повторяющийся код в элементах управления с привязкой к данным

Я уверен, что мне не хватает чего-то очевидного здесь.

У меня есть около двадцати GridView с привязкой к данным, каждый из которых имеет некоторые общие функции. Допустим, это все списки людей, и каждый из них начинается примерно с 10 столбцов, которые представляют собой сложные кнопки ссылок с наведением курсора и т. д., они все одинаковы. Остальные сетки, чрезвычайно широкие, состоят из совершенно других столбцов; дублируются только первые 10 (из 100) столбцов.

Следовательно, у меня есть этот кусок кода, который обрабатывает эти 10 столбцов базы данных и отображает этот html, используя 10 операторов Eval() и т. д. Это один и тот же код в каждом GridView, он повторяется 20 раз, и это явно не круто.

Я не могу просто добавить его в пользовательский элемент управления или пользовательский элемент управления, потому что мне нужно, чтобы GridView делал заголовки столбцов и все такое прочее. Я могу, конечно, поместить пользовательский элемент управления для одного столбца и отображать все, что я хочу, таким образом ("eval" работает вложенным), но он не дает мне заголовки столбцов, которые также сложный.

Итак, вот в чем вопрос: можно ли как-нибудь выйти из шаблонного элемента управления GridView, чтобы абстрагироваться от этого повторяющегося кода? Я почти хочу что-то вроде включения или предварительной обработки на стороне сервера, так как мне просто нужно действительно повторить текст, но мне нужно сделать это до того, как asp.net попытается его скомпилировать. Я мог бы использовать настраиваемый элемент управления для рендеринга любого HTML, который мне нравится, но это не решает проблему, поскольку мне нужно сгенерировать код asp.net, а не HTML.


person philw    schedule 08.10.2011    source источник
comment
Разве вы не можете создать подкласс из Gridview и реализовать общую функциональность для всех 10 представлений сетки, а затем иметь дополнительные подклассы, которые реализуют определенные функции для конкретных представлений сетки? Я успешно сделал это со страницами (самый базовый класс имел логику аутентификации, которую унаследовали все подклассы)   -  person Jason Turan    schedule 09.10.2011
comment
Звучит как хорошая идея - я посмотрю на это. Все они на самом деле представляют собой списки событий, но, поскольку каждое событие имеет общие сложные первые несколько столбцов, похоже, что это может сработать.   -  person philw    schedule 09.10.2011
comment
На самом деле, может быть, мне просто нужны настраиваемые поля в стандартном GridView: ="nofollow noreferrer">devlicio.us/blogs/christopher_bennage/archive/2006/09/20/   -  person philw    schedule 09.10.2011
comment
Вы были правы - наследование от GridView, затем добавление моих дополнительных столбцов и привязка к ним работают нормально - спасибо.   -  person philw    schedule 10.10.2011


Ответы (1)


Разве вы не можете создать подкласс из Gridview и реализовать общую функциональность для всех 10 представлений сетки, а затем иметь дополнительные подклассы, которые реализуют определенные функции для конкретных представлений сетки? Я успешно сделал это со страницами (самый базовый класс имел логику аутентификации, которую унаследовали все подклассы)

person Jason Turan    schedule 09.10.2011