ASP.net 2.0 Gridview с расширяющимися строками панели - как создать панель «на лету»
-
08-07-2019 - |
Вопрос
В настоящее время я создаю Gridview с расширяемыми строками. Каждая строка содержит динамически созданные элементы панели формы. Прямо сейчас у меня есть функция javascript, которая расширяет (или в моем случае делает видимой) панель при щелчке по изображению в строке Gridview.
Мой вопрос ... есть ли более эффективный способ сделать это. Вместо того, чтобы извлекать все мои данные для начала и создавать каждую новую строку по мере того, как я привязываю данные, есть ли способ просто создать строку с панелью, заполненной текстовыми полями и выпадающими списками, на лету, когда пользователь нажимает кнопку «Развернуть»? & Quot; р>
Я бы хотел ограничить количество обращений к серверу, делая это таким образом, а не так, как я это делаю в настоящее время, просматривая каждую строку и создавая новую панель с элементами формы и вставляя ее в скрытую строку. р>
Решение 4
На самом деле это недавно было обработчиком AJAX, возвращающим структуру формы. Это по требованию, и работает хорошо. Просто вызовите $ ajax через jQuery, верните структуру HTML, вставьте в DIV. Это немного ограничивает реальную функциональность, поэтому будьте осторожны.
Другие советы
На самом деле, он не работает плохо, так как мой исходный запрос SQL может заполнять каждую строку, и я включил подкачку в Gridview. Мне просто интересно, могут ли они быть построены на лету, используя PageMethods или какое-то решение JSON / AJAX. Я ничего не видел, но ... стоит попытаться найти его.
вы можете переопределить событие RowdataBound, а затем добавить любые необходимые элементы управления в зависимости от того, какие данные поступают в ячейку.
Личная попытка создать данные на лету, скорее всего, приведет к замедлению работы пользователя.
Когда я делаю то, что вы описываете, я обычно использую Repeaters, таким образом я могу создавать макет шаблона, который просто сразу определяет все необходимые элементы и обрабатывает действия привязки.
В противном случае, я бы предположил, что ваш путь не работает слишком медленно, как есть.