Определите, является ли обратный вызов page_load или itemcommand
У меня есть список пользователей в левой части моей страницы в сетке данных, и я хочу загрузить div в правой части моей страницы с информацией о пользователя, по которой щелкнули. Я предполагаю, что я сделаю загрузку div в событии itemcommand, но как мне тогда обработать загрузку страницы? Нужно ли знать, что вызвало обратную передачу? Нужно ли перезагрузить сетку на page_load
также?
2 ответа
как мне тогда обрабатывать загрузку страницы?
Каждый постбэк использует новый экземпляр класса вашей страницы и полностью перестраивает страницу. Единственное, что отличается, это то, что некоторые элементы управления могут быть предварительно заполнены через ViewState. Вам не нужно повторять загрузку для любого из этих элементов управления.
Нужно ли знать, что вызвало обратную передачу?
ASP.Net позаботится об этом и устроит событие. Вам нужно только знать, является ли это постбэком, а может даже и не так (см. Следующую часть).
Нужно ли перезагрузить сетку на page_load?
Да. Ну вроде как. Вы должны повторно отрендерить HTML для сетки в браузер. Хорошей новостью является то, что шансы на то, что данные вашей сетки уже находятся в viewstate, будут происходить автоматически. Вам не нужно беспокоиться об этом самостоятельно.
Однако во многих случаях вы можете обнаружить, что лучше отключить режим просмотра для сеток и перезагрузить их на каждом постбеке в любом случае. Это связано с тем, что ViewState - это просто скрытый вход на вашей странице, который должен публиковаться (загружаться) на сервер при каждом запросе. Большинство интернет-пользователей имеют очень ограниченную пропускную способность при загрузке, поэтому большой ViewState может сделать ваш сайт вялым, даже если ваш сервер почти не потеет.
В зависимости от вашей ситуации, вы могли бы добиться большего, обменяя некоторую избыточную производительность сервера на отзывчивость сайта, отключив ViewState в некоторых элементах управления. В этом случае вы всегда будете загружать сетку, и вам больше не нужно заботиться о том, является ли запрос обратной передачей.
В отличие от этого, если это внутреннее сетевое приложение, в котором пользователи обычно имеют локальные соединения Ethernet с вашим веб-сервером, трудно превзойти ViewState для балансировки скорости отклика и производительности сервера.
Исключите привязку к сетке при проверке!IsPostBack
if(!IsPostBack){
// Bind the Grid
}
Для команды div item вы получаете извлечение значения, которое выбирается из сетки, и загружаете информацию о пользователе.
Таким образом, вам не нужно загружать сетку каждый раз. Это будет просто загрузить в первый раз. Я не думаю, что вам потребуется проверять, что было сделано после обратной передачи, потому что в любом случае вы загрузите сетку только один раз.