2013-05-14 3 views
0

Возможно, нет никакого способа сделать это, но я полагаю, что я спрошу. Я относительно новичок в asp.net, сыграв с ним уже около недели. Теперь у меня есть страница, которая вызывает веб-службу, опроса ее до ее завершения (с прогрессом, отображаемым в UpdatePanel), а затем скрывает текст прогресса и вместо этого отображает результат (рекурсивный список файлов с некоторыми метаданными), создавая TreeView и добавление его в UpdatePanel. Я бы хотел, чтобы щелкнуть узел в TreeView, чтобы обновить вторую UpdatePanel с расширенной информацией (полученной на стороне сервера) об узле, который был просто нажат. Я не вижу способа вызвать функцию codebehind, щелкнув TreeNode, но я могу указать код Javascript, установив NavigateUrl узла на «javascript: function ([полный путь узла]»).Измените UpdatePanel, вызвав код на стороне сервера из кода клиента

На данный момент, однако, я немного в тупике. StackOverflow заполнен правильно заданными вопросами о том, как перезванивать в codebehind из javascript (используя WebMethod или его эквивалент), но, видимо, вы не можете вызывать код, который не является статичным, что означает, что я не мог изменить сама страница или, если на то пошло, доступ к состоянию сеанса или страницы. StackOverflow также полон вопросов о том, как иметь javascript-запрос, который обновляет UpdatePanel (__doPostBack()), но без какого-либо способа связаться с сервером, на что было нажато, UpdatePanel не будет знать, что отображать.

Таким образом, вопрос, на который я надеюсь, имеет ответ: я пропустил какой-то умный способ, чтобы javascript на странице запускал серверную функцию, способную принимать параметр и использовать его для частичной обратной передачи другой UpdatePanel?

Спасибо!

+0

Для кого-то, кто случайно споткнется на этот вопрос: я не мог получить ответ ниже, чтобы работать, поэтому я просто полностью перепутал проблему, вместо ajax-ly информации на * той же * странице, вместо этого используя плагин lightbox, чтобы открыть * новую * страницу в пузыре с информацией, которую я хотел отобразить при нажатии. Это отлично поработало и выполнило все требования. – neminem

ответ

0

На самом деле это довольно просто. Просто разместите LinkButton внутри второй панели обновления (он может иметь пустой текст и, следовательно, быть невидимым), в JavaScript-вызове на стороне клиента .click() метод этого элемента управления и в ASP.NET обрабатывать серверную сторону OnClick.

Смежные вопросы