Вложение GridView в Repeater

У меня есть сценарий, в котором, например, мне нужно повторить список штатов США и отобразить таблицу городов и городского населения после названия каждого штата. Требование дизайна диктует, что каждое внешнее повторение должно быть названием штата, за которым следует таблица городов, и это требование не может быть изменено в настоящее время. Есть ли недостатки у вложения GridView в Repeater и последующей привязки каждого повторяющегося GridView во время события Repeater ItemDataBound? Какие есть альтернативные решения?


person Billy Jo    schedule 08.09.2008    source источник


Ответы (4)


Если бы это был я, я бы перевернул вопрос и спросил, почему я должен использовать GridView. Если вам нужен набор встроенных функций, таких как разбиение по страницам и сортировка, тогда GridView может подойти. . Если вам просто нужны табличные данные, я бы передумал. Почему? Поскольку с GridView вы получаете целую кучу вещей, которые вы не будете использовать, ваш ViewState будет потенциально огромным, а производительность вашей страницы будет ниже.

Я не фанатик, когда дело доходит до GridView, но я использую их только тогда, когда есть чертовски веская причина.

person CarmineSantini    schedule 08.09.2008
comment
Если я откажусь от использования GridView, предложите ли вы мне использовать другой Repeater для создания моего «табличного» HTML-кода или прокрутить набор данных в отделенном коде и вывести мой вывод в литерал? - person Billy Jo; 14.02.2009
comment
Если код позади, я бы добавил в вашу таблицу элементы управления (HtmlTableRow, HtmlTableCell) вместо того, чтобы создавать строку и выгружать ее в литерал (если вы это имели в виду). Или используйте HtmlTextWriter. Мне не нравится делать презентацию в отделенном коде, поэтому на моем месте я бы использовал Repeater или ListView. - person CarmineSantini; 21.02.2009

В приведенном выше сценарии вам лучше использовать GridView в стиле master-detail, что сэкономит вам накладные расходы на все те объекты GridView, которые создаются.

Существуют различные его реализации (с использованием раскрывающегося списка для мастера , используя модальное всплывающее окно для подробностей и т. д.), но главное Дело в том, что есть доступные реализации.

person Dillie-O    schedule 08.09.2008
comment
К сожалению, требования дизайна диктуют, что каждое внешнее повторение должно быть названием штата, за которым следует таблица городов. Я отредактировал свой пост, чтобы прояснить этот момент. - person Billy Jo; 14.02.2009

По крайней мере, надеюсь, вы сможете отключить ViewState для GridViews.

person NakedBrunch    schedule 09.09.2008

Лучшее решение, которое я смог придумать, — это вложить GridView в Repeater. Затем я связывал каждый повторяющийся GridView во время события ItemDataBound Repeater. Я отключил их ViewStates, конечно, так как они не требовались.

person Billy Jo    schedule 09.09.2008