Подлипенский Павел

Блог о технологиях и деньгах

How To: Вызвать Javascript функцию после обновления UpdatePanel

clock April 7, 2008 16:45 by author paul

UpdatePanel - это контрол Microsoft ASP.NET AJAX, который позволяет довольно удобно интегрировать AJAX в ваше приложение. Но именно ввиду его удобства и простоты использования со стороны разработчика, некоторые вещи далеко не очевидны. К примеру как вызвать клиентский JavaScript по завершению очередного обновления этой панели?

Трюк заключается в том, чтобы добавить EndRequestHandler в request manager:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

Вот пример формы с двумя TextBox, куда вы вводите текст, а сервер возвращает длину текста и отображает ее во втором TextBox:

<%@ page language="C#" autoeventwireup="true" codebehind="DemoJScriptUpdate.aspx.cs" inherits="CharterWeb.DemoJScriptUpdate" %>
 
 <script runat
="server">
 protected void txtDataOnChange(object sender, EventArgs e) {
 txtLength.Text = txtData.Text.Length.ToString();
 }
 </script>
 <html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>">
 <head id="Head1" runat
="server">
 
 
 <script type="text/javascript">
 function EndRequestHandler(sender, args) {
 if (args.get_error() == undefined)
 alert("Your text has: " + document.getElementById("txtLength").value + " character(s)");
 else
 alert("There was an error" + args.get_error().message);
 }
 function load() {
 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
 }
 </script>
 
 <form id="form1" runat
="server">
 <?xml:namespace prefix ="" asp /></asp:scriptmanager id="_scriptManager" runat="server">
 
 <asp:updatepanel id="UpdatePanel1" runat
="server">
 <contenttemplate>
 Write something: </asp:textbox id="txtData" runat="server" autopostback="true" ontextchanged="txtDataOnChange">
 <br />
 Server says the length is: </asp:textbox id="txtLength" runat="server" autopostback="true">
 </contenttemplate>
 </asp:updatepanel>
 
 </form> 

Currently rated 5.0 by 6 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


xhtmlConformance mode="Legacy" vs ASP.NET AJAX

clock April 2, 2008 16:42 by author paul

 Проблема:

Недавно у меня возникла проблема: после добавления контрола PowerWeb Zoom на страницу, напрочь отказывался работать AJAX. Оказалось этот контрол добавляет в Web.config следующую строчку для корректной работы своих JavaScriptов

<configuration>

    
<system.web>
        
<xhtmlConformance mode="Legacy" />
    </
system.web>


</configuration>

Объяснение:

При разработки еще ранних версий VS 2005 считалось что большинство приложений будут совместимы с XHTML, но для обратной совместимости решили оставить режим "Legacy" (non-XHTML формат страниц, аналогично страницам в ASP.NET 1.1). Иногда подобное изменение приводит и к изменению внешнего вида страниц.

Решение:

Добиться того, чтобы приложение отображало свои страницы в non-XHTML формате и при этом умело работать с асинхронными страницами невозможно, поэтому вам необходимо будет выбрать что-то одно. Хотя в некоторых случаях вы можете попробовать изменить режим на Transitional mode (XHTML Transitional) или на Strict mode (XHTML Strict).

В помощь вам будет список подобных "ловушек" при использовании AJAX, Visual Studio 2005, работы с данными и тп.

Currently rated 5.0 by 6 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Search


LinkedIn Profile

Calendar

<<  July 2008  >>
SuMoTuWeThFrSa
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

Archive

Tags

Categories


Recent Posts

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008

Sign in

Ó÷àñòíèê ïëàíåòû Developers.org.ua

Bookmark and Share

Web Developement Blogs - Blog Catalog Blog Directory

Êàòàëîã óêðà¿íñüêèõ áëîã³â