У меня есть сценарий, в котором, например, мне нужно повторить список штатов США и отобразить таблицу городов и городского населения после названия каждого штата. Требование дизайна диктует, что каждое внешнее повторение должно быть названием штата, за которым следует таблица городов, и это требование не может быть изменено в настоящее время. Есть ли недостатки у вложения GridView в Repeater и последующей привязки каждого повторяющегося GridView во время события Repeater ItemDataBound
? Какие есть альтернативные решения?
Вложение GridView в Repeater
Ответы (4)
Если бы это был я, я бы перевернул вопрос и спросил, почему я должен использовать GridView. Если вам нужен набор встроенных функций, таких как разбиение по страницам и сортировка, тогда GridView может подойти. . Если вам просто нужны табличные данные, я бы передумал. Почему? Поскольку с GridView вы получаете целую кучу вещей, которые вы не будете использовать, ваш ViewState будет потенциально огромным, а производительность вашей страницы будет ниже.
Я не фанатик, когда дело доходит до GridView, но я использую их только тогда, когда есть чертовски веская причина.
В приведенном выше сценарии вам лучше использовать GridView в стиле master-detail, что сэкономит вам накладные расходы на все те объекты GridView, которые создаются.
Существуют различные его реализации (с использованием раскрывающегося списка для мастера , используя модальное всплывающее окно для подробностей и т. д.), но главное Дело в том, что есть доступные реализации.
По крайней мере, надеюсь, вы сможете отключить ViewState для GridViews.
Лучшее решение, которое я смог придумать, — это вложить GridView в Repeater. Затем я связывал каждый повторяющийся GridView во время события ItemDataBound Repeater. Я отключил их ViewStates, конечно, так как они не требовались.