2017-02-01 7 views
1

Я пытаюсь понять раздражающее обновление GridView/Repeater, которое происходит в большинстве случаев, когда я нажимаю LinkButton внутри этого элемента. Если это вызвано Postback, то почему это не происходит все время? И если он не вызван всегда, я могу даже избавиться от него?Нажмите LinkButton в Gridview: почему Grid перезагружается большую часть времени, но не всегда?

Я обычно делаю это, чтобы получить подробную информацию о ячейке щелкнул в сетке или ретранслятора:

<asp:LinkButton ID="ButtonSelect" runat="server" CommandName ="Select" CommandArgument = '<%# Eval("date") %>' Text='<%# Bind("TAG") %>' OnClick="GetDetails"/> 

Данные, обработанные в методе «GetDetails» будет отображаться в другом элементе. Не было бы необходимости обновлять сетку.

Это обычное поведение для любого щелчка LinkButton в GridView?

Martin

+0

Возможно, что-то связано с использованием 'CommandName =" Выберите «'. Многие элементы управления databuond имеют особое поведение, связанное с этим именем команды. Попробуйте вместо этого использовать собственное имя команды и посмотрите, не имеет ли значения. Не уверен, что это будет, но легко проверить, чтобы увидеть, что происходит. Признанные имена команд: [см. Здесь] (https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.buttonfield.commandname (v = vs.110) .aspx) – user1429080

ответ

1

Это нормальное действие кнопки сервера в GridView. Это приведет к обратной передаче. Постобработка заставит страницу LifeCycle. Вся страница будет воссоздана, а привязка данных может произойти или не произойти в зависимости от параметров кеша и программирования.

«Фиксация», которая действительно зависит от того, что вы пытаетесь выполнить. Если вы просто остановите «мерцание экрана» из-за обратной передачи, рассмотрите возможность использования AJAX-вызовов или <asp:UpdatePanel> элементов управления сервером.

Если вы пытаетесь работать с JS на стороне клиента и просто хотите отложить постбэк до позже, конвертировать кнопку в поле шаблона и заменить <asp:LinkButton> с основным контролем HTML <a href="javascript:void();" ...>, <button type='button'>, <input type='button' ... и т.д .. .