У меня есть пользовательский элемент управления (ascx), который реализует интерфейс IPostBackEventHandler для перехвата настраиваемых событий, вызванных настраиваемыми HTML-ссылками.__doPostBack вне href вызывает полную обратную отправку страницы
В этом элементе управления я использую панель обновления, и внутри панели обновления я использую литеральный элемент управления, в котором я обрабатываю собственные HTML-ссылки.
Когда я визуализировать HTML-ссылки внутри буквальному управления я использую StringBuilder со следующим кодом:
sb.AppendFormat ("<a href=\"{0}\" id=\"custom_iterator_id\">Text</a>",
this.Page.ClientScript.GetPostBackClientHyperlink(this, custom_string_param));
гиперссылок оказаны хорошо, и при нажатии на них асинхронный постбэк срабатывает и частичное обновление является (поскольку все ссылки отображаются внутри панели «Обновление»).
Проблема в том, что мне нужно сделать какой-то пользовательский Javascript перед тем, как запустить __doPostBack, который отображается с помощью вышеуказанного кода. Так вот это упрощенная версия измененного кода:
sb.AppendFormat ("<a href=\"javascript:JSFunc{0}\" id=\"custom_iterator_id\">Text</a>",
custom_string_param);
Также в ASCX разметке я использую следующий код (внутри или снаружи панели Update):
<script language="javascript" type="text/javascript">
function JSFunc(param) {
// custom js code here ....
__doPostBack('<%=this.ClientID%>', param);
}
</script>
Проблема здесь состоит в том, что, когда клика по ссылке, она выполняет полную обратную передачу, а не частичную. Я также тестировал более простые версии вышеуказанного кода, и кажется, что если вы удалите __doPostBack из href или событий onclick из ссылки (тега) и переместите его в пользовательскую js-функцию, которая по очереди вы передаете по ссылке, запускается полная обратная передача.
Обратите внимание, что на странице нет ошибки, и в обоих случаях код работает правильно. Страница правильно рендеринга в зависимости от параметров, возвращаемых из __doPostBack, но во втором случае запускается полная, а не частичная обратная передача.
Любые идеи?
Спасибо заранее,
Джордж
Знаете ли вы, что вы можете отметить один ответ на вопрос как [принято] (http://meta.stackexchange.com/q/5234)? –