<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>ASP.NET AJAX</title>
        <link>http://blogs.ugidotnet.org/dsantarelli/category/ASP.NET AJAX.aspx</link>
        <description>ASP.NET AJAX</description>
        <language>it-IT</language>
        <copyright>Dario Santarelli</copyright>
        <generator>Subtext Version 2.6.0.0</generator>
        <item>
            <title>jQuery e ASP.NET Ajax: $(document).ready() VS asynchronous postback</title>
            <link>http://blogs.ugidotnet.org/dsantarelli/archive/2009/03/09/jquery-e-asp.net-ajax-document.ready-vs-asynchronous-postback.aspx</link>
            <description>&lt;p&gt;Molto spesso capita di dover integrare, anche solo per semplici miglioramenti grafici, dei plugin jQuery all’interno delle nostre pagine ASP.NET. Gran parte delle volte l’impatto è indolore mentre in alcuni casi specifici occorre far riferimento ad accorgimenti non banali, soprattutto quando c’è di mezzo ASP.NET Ajax.   &lt;br /&gt;Il classico esempio si verifica quando ci si aspetta che la funzione &lt;a href="http://docs.jquery.com/Tutorials:Introducing_$(document).ready()" target="_blank"&gt;$(document).ready()&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;venga chiamata correttamente anche dopo un asynchronous postback tramite UpdatePanel. Infatti, la funzione $(document).ready() permette di determinare il momento in cui il DOM della pagina è caricato dal browser. Tuttavia, in caso di asynchronous postback il DOM può essere eventualmente modificato e non ricaricato nuovamente. Quindi il nostro codice javascript nella forma:    &lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;$(document).ready(&lt;span style="color: blue"&gt;function&lt;/span&gt;()       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;{     &lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="color: green"&gt;// codice...       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; line-height: 115%; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;});&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;... non verrà eseguito!    &lt;br /&gt;Un workaround molto semplice per questo tipo di situazione è quello di sfruttare l’evento client-side &lt;a href="http://msdn.microsoft.com/it-it/library/bb383810.aspx" target="_blank"&gt;endRequest&lt;/a&gt; generato dopo un postback asincrono, quando il controllo viene  restituito al browser. Agganciando il nostro codice jQuery che usa $(document).ready() all’interno di un opportuno event Handler per tale evento possiamo risolvere il problema. Ecco un semplice esempio:    &lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 8pt; background: yellow; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-highlight: yellow; mso-ansi-language: en-us"&gt;&amp;lt;%&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;@&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt; &lt;span style="color: #a31515"&gt;Page&lt;/span&gt; &lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;="C#"&lt;/span&gt; &lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: blue"&gt;="true"&lt;/span&gt; &lt;span style="color: red"&gt;CodeFile&lt;/span&gt;&lt;span style="color: blue"&gt;="Default.aspx.cs"&lt;/span&gt; &lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue"&gt;="_Default"&lt;/span&gt; &lt;span style="background: yellow; mso-highlight: yellow"&gt;%&amp;gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&amp;lt;!&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: #a31515; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;DOCTYPE&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt; &lt;span style="color: red"&gt;html&lt;/span&gt; &lt;span style="color: red"&gt;PUBLIC&lt;/span&gt; &lt;span style="color: blue"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span style="color: blue"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: #a31515; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;html&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt; &lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;="http://www.w3.org/1999/xhtml"&amp;gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: #a31515; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;head&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;       &lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;jQuery .ready() function and asynchronous postback&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&amp;lt;/&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: #a31515; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;head&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&amp;gt;     &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: #a31515; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;body&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&amp;gt;     &lt;br /&gt;  &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;form&lt;/span&gt; &lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="mainForm"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;       &lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;       &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScriptManager&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="scriptManager"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;       &lt;br /&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Scripts&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;       &lt;br /&gt;       &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScriptReference&lt;/span&gt; &lt;span style="color: red"&gt;Path&lt;/span&gt;&lt;span style="color: blue"&gt;="http://code.jquery.com/jquery-latest.js"&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;       &lt;br /&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Scripts&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;       &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;ScriptManager&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;       &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;UpdatePanel&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="updatePanel"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&amp;gt;       &lt;br /&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;                 &lt;br /&gt;         &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;="btnTest"&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;="server"&lt;/span&gt; &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;="Do Async PostBack"&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;       &lt;br /&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;       &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;UpdatePanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;       &lt;br /&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;       &lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;form&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;       &lt;p /&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text/javascript"&amp;gt;       &lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);     &lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;function&lt;/span&gt; EndRequestHandler(sender, args)       &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;{     &lt;br /&gt;      &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (args.get_error() == undefined) Test();&lt;span style="mso-spacerun: yes"&gt;            &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;}     &lt;br /&gt;      &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="color: blue"&gt;function&lt;/span&gt; Test()       &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;{     &lt;br /&gt;      &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;$(document).ready(&lt;span style="color: blue"&gt;function&lt;/span&gt;()       &lt;br /&gt;      &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;{     &lt;br /&gt;        &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes; mso-ansi-language: en-us"&gt;alert(&lt;span style="color: #a31515"&gt;'$(document).ready() called!!!'&lt;/span&gt;);       &lt;br /&gt;      &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;});     &lt;br /&gt;    &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;}     &lt;br /&gt;      &lt;br /&gt;    &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;Test();&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;             &lt;br /&gt;            &lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;       &lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 8pt; color: #a31515; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;body&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&amp;gt;     &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size: 8pt; color: #a31515; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;html&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue; font-family: &amp;quot;Courier New&amp;quot;; mso-no-proof: yes"&gt;&amp;gt;     &lt;p /&gt;   &lt;/span&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0d2ddb6a-8ca7-4ffc-89d5-18c75e15fbdf" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/jQuery" rel="tag"&gt;jQuery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/ASP.NET" rel="tag"&gt;ASP.NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Ajax" rel="tag"&gt;Ajax&lt;/a&gt;,&lt;a href="http://technorati.com/tags/DOM" rel="tag"&gt;DOM&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/dsantarelli/aggbug/95644.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dario Santarelli</dc:creator>
            <guid>http://blogs.ugidotnet.org/dsantarelli/archive/2009/03/09/jquery-e-asp.net-ajax-document.ready-vs-asynchronous-postback.aspx</guid>
            <pubDate>Mon, 09 Mar 2009 22:58:18 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dsantarelli/archive/2009/03/09/jquery-e-asp.net-ajax-document.ready-vs-asynchronous-postback.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dsantarelli/comments/commentRss/95644.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dsantarelli/services/trackbacks/95644.aspx</trackback:ping>
        </item>
        <item>
            <title>Caricamento dinamico di UserControl via jQuery Ajax e HttpHandler</title>
            <link>http://blogs.ugidotnet.org/dsantarelli/archive/2008/12/21/caricamento-dinamico-di-usercontrol-via-jquery-ajax-e-httphandler.aspx</link>
            <description>&lt;p&gt;In applicazioni Web di una certa complessità, spesso le classiche tecniche di caricamento dinamico di UserControl tramite PostBack o UpdatePanel rischiano di rendere lo sviluppo delle pagine molto complesso nonché, cosa più pericolosa, non performante. Di certo uno scenario maggiormente flessibile dovrebbe anzitutto ridurre al minimo il traffico da/verso il server (vedi "&lt;a href="http://blogs.ugidotnet.org/Markino/archive/2008/06/29/updatepanel-e-abusi.aspx"&gt;UpdatePanel e i suoi abusi&lt;/a&gt;") ma soprattutto permettere di richiedere il caricamento di contenuti on-demand sfruttando la potenza di AJAX.     &lt;br /&gt;In questo esempio voglio mostrare quanto sia semplice implementare un' infrastruttura di base che permetta il caricamento dinamico di UserControl tramite jQuery AJAX (client-side) e un HttpHandler (server-side). In breve:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Il client richiede all'HttpHandler uno UserControl con una richiesta JSON &lt;/li&gt;    &lt;li&gt;L'HttpHandler processa la richiesta inizializzando &lt;strong&gt;solo&lt;/strong&gt; lo UserControl desiderato ed inviando al client &lt;strong&gt;solo&lt;/strong&gt; l' (X)Html di rendering dello UserControl &lt;/li&gt;    &lt;li&gt;Il client posiziona l' (X)Html ricevuto in una zona specifica della pagina &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Ovviamente esistono altri modi per creare dinamicamente UserControl con AJAX (es. tramite &lt;a href="http://weblogs.asp.net/sanjeevagarwal/archive/2008/07/22/Dynamically-create-ASP.NET-user-control-using-ASP.NET-Ajax-and-Web-Service.aspx" target="_blank"&gt;WebService&lt;/a&gt;), ma per brevità tralasciamo volutamente questo aspetto.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;1. Il DataContract della richiesta&lt;/em&gt;       &lt;br /&gt;&lt;/strong&gt;Anzitutto abbiamo bisogno di una classe che faccia da DataContract per la richiesta di uno UserControl. In particolare, la proprietà &lt;em&gt;ControlParameters &lt;/em&gt;permette di specificare degli eventuali parametri da passare allo UserControl per pilotarne il corretto comportamento.     &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;[&lt;span style="color: #2b91af"&gt;DataContract&lt;/span&gt;]       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: blue; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;public&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ControlRequest        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;{&lt;span style="mso-spacerun: yes"&gt;    &lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;[&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;]       &lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; ControlName { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }       &lt;br /&gt;      &lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;[&lt;span style="color: #2b91af"&gt;DataMember&lt;/span&gt;]       &lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; ControlParameters { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;} &lt;/span&gt;    &lt;/p&gt;&lt;p /&gt;   &lt;p /&gt;  &lt;p&gt;   &lt;br /&gt;&lt;strong&gt;&lt;em&gt;2. HttpHandler&lt;/em&gt;       &lt;br /&gt;&lt;/strong&gt;Server-side abbiamo un HttpHandler che deserializza le richieste JSON conformi al DataContract sopra specificato per caricare ed inizializzare correttamente (tramite reflection) lo UserControl richiesto. Il codice si commenta quasi da solo :D&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;UserControlHandler&lt;/span&gt; : &lt;span style="color: #2b91af"&gt;IHttpHandler&lt;/span&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;{&lt;span style="mso-spacerun: yes"&gt;    &lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ProcessRequest (&lt;span style="color: #2b91af"&gt;HttpContext&lt;/span&gt; context)       &lt;br /&gt;  &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;{&lt;span style="mso-spacerun: yes"&gt;                 &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: green; line-height: 115%; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;// 1. Deserializzazione della richiesta JSON&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: #2b91af"&gt;DataContractJsonSerializer&lt;/span&gt; serializer = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DataContractJsonSerializer&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;ControlRequest&lt;/span&gt;));       &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: #2b91af"&gt;ControlRequest&lt;/span&gt; controlRequest = serializer.ReadObject(context.Request.InputStream) &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ControlRequest&lt;/span&gt;;&lt;span style="mso-spacerun: yes"&gt;         &lt;br /&gt;        &lt;br /&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: 'Courier New'; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: green; line-height: 115%; font-family: 'Courier New'; mso-no-proof: yes"&gt;// 2. Caricamento dello UserControl &lt;/span&gt;        &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: #2b91af"&gt;Page&lt;/span&gt; page = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Page&lt;/span&gt;();       &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt; userControl = (&lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt;)page.LoadControl(&lt;span style="color: #a31515"&gt;"~/Controls/"&lt;/span&gt; + controlRequest.ControlName + &lt;span style="color: #a31515"&gt;".ascx"&lt;/span&gt;);&lt;span style="mso-spacerun: yes"&gt;               &lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;userControl.EnableViewState = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;span style="font-size: 8pt; color: green; line-height: 115%; font-family: 'Courier New'; mso-no-proof: yes"&gt; &lt;/span&gt;       &lt;br /&gt;      &lt;br /&gt;   &lt;span lang="EN-US" style="font-size: 8pt; font-family: 'Courier New'; mso-no-proof: yes; mso-ansi-language: en-us"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: green; line-height: 115%; font-family: 'Courier New'; mso-no-proof: yes"&gt;// 3. Inizializzazione dei parametri dello UserControl via Reflection &lt;/span&gt;      &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;SetControlParameters(controlRequest, userControl);      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;    &lt;span style="font-size: 8pt; color: green; line-height: 115%; font-family: 'Courier New'; mso-no-proof: yes"&gt;// 4. Esecuzione dello UserControl all'interno di un form &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;   &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: #2b91af"&gt;HtmlForm&lt;/span&gt; form = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;HtmlForm&lt;/span&gt;();     &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;form.Controls.Add(userControl);    &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;page.Controls.Add(form);    &lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: #2b91af"&gt;StringWriter&lt;/span&gt; textWriter = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;StringWriter&lt;/span&gt;();     &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: #2b91af"&gt;HttpContext&lt;/span&gt;.Current.Server.Execute(page, textWriter, &lt;span style="color: blue"&gt;false&lt;/span&gt;);  &lt;br /&gt;    &lt;br /&gt;&lt;span style="font-size: 8pt; color: green; line-height: 115%; font-family: 'Courier New'; mso-no-proof: yes"&gt;  // 5. Invio dell'html di rendering dello UserControl (senza il form contenitore) &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: 'Courier New'; mso-no-proof: yes; mso-ansi-language: en-us"&gt;    &lt;/span&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;context.Response.ContentType = &lt;span style="color: #a31515"&gt;"text/html"&lt;/span&gt;;     &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;context.Response.ContentEncoding = System.Text.&lt;span style="color: #2b91af"&gt;Encoding&lt;/span&gt;.UTF8;     &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;context.Response.Write(&lt;span style="color: #2b91af"&gt;Regex&lt;/span&gt;.Replace(textWriter.ToString(), &lt;span style="color: #a31515"&gt;@"&amp;lt;[/]?(form)[^&amp;gt;]*?&amp;gt;"&lt;/span&gt;, &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty, &lt;span style="color: #2b91af"&gt;RegexOptions&lt;/span&gt;.IgnoreCase));&lt;span style="mso-spacerun: yes"&gt;             &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;  }  &lt;br /&gt;    &lt;br /&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt; &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; SetControlParameters(&lt;span style="color: #2b91af"&gt;ControlRequest&lt;/span&gt; request, &lt;span style="color: #2b91af"&gt;UserControl&lt;/span&gt; userControl)     &lt;br /&gt;  &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;{    &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: blue"&gt;string&lt;/span&gt; parameterName &lt;span style="color: blue"&gt;in&lt;/span&gt; request.ControlParameters.Keys)     &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;{    &lt;br /&gt;      &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: #2b91af"&gt;PropertyInfo&lt;/span&gt; property = userControl.GetType().GetProperty(parameterName);     &lt;br /&gt;      &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (property != &lt;span style="color: blue"&gt;null&lt;/span&gt;) property.SetValue(userControl, request.ControlParameters[parameterName], &lt;span style="color: blue"&gt;null&lt;/span&gt;);     &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;}    &lt;br /&gt;  &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;}&lt;span style="mso-spacerun: yes"&gt;   &lt;br /&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;br /&gt;  ...       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; line-height: 115%; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;}&lt;/span&gt;   &lt;p&gt;   &lt;br /&gt;&lt;em&gt;&lt;strong&gt;Let's try!!!&lt;/strong&gt;&lt;/em&gt;  &lt;br /&gt;Supponiamo di avere nella nostra soluzione uno UserControl &lt;em&gt;CustomersGridView.ascx &lt;/em&gt;il cui codebehind include la complicatissima logica per popolare e filtare la classica griglia di Customers.  &lt;br /&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;     &lt;br /&gt;public&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt; &lt;span style="color: blue"&gt;partial&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CustomersGridView&lt;/span&gt; : System.Web.UI.&lt;span style="color: #2b91af"&gt;UserControl        &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;{      &lt;br /&gt;  &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; FilterExpression { &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }       &lt;br /&gt;      &lt;br /&gt;  &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier" en-us?="EN-US?" mso-ansi-language:="mso-ansi-language:" yes;="yes;"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; NorthwindSqlDataSource_Selecting(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;SqlDataSourceSelectingEventArgs&lt;/span&gt; e)       &lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;{      &lt;br /&gt;    &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;e.Command.Parameters[&lt;span style="color: #a31515"&gt;"@ContactName"&lt;/span&gt;].Value = FilterExpression;       &lt;br /&gt;  &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;}      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; line-height: 115%; font-family: " yes?="yes?" mso-no-proof:="mso-no-proof:" new?;="new?;" courier="courier"&gt;}      &lt;br /&gt;      &lt;br /&gt;&lt;/span&gt;Come possiamo notare la proprietà FilterExpression esposta serve proprio per determinare il filtraggio dei customer in fase di popolamento della GridView.     &lt;br /&gt;A questo punto non rimane che creare la nostra pagina di test:&lt;/p&gt;  &lt;div style="overflow: auto; width: 800px; height: 300px"&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="asp"&gt;&amp;lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" 
         EnableViewState="false" %&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;!&lt;/span&gt;&lt;span class="html"&gt;DOCTYPE&lt;/span&gt; &lt;span class="attr"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;PUBLIC&lt;/span&gt; &lt;span class="kwrd"&gt;"-//W3C//DTD XHTML 1.0 Transitional//EN"&lt;/span&gt; &lt;span class="kwrd"&gt;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt; &lt;span class="attr"&gt;xmlns&lt;/span&gt;&lt;span class="kwrd"&gt;="http://www.w3.org/1999/xhtml"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Dynamic UserControl Loading via jQuery Ajax and HttpHandler&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;   
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="form1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="scriptManager"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Scripts&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;="~/scripts/jquery-1.2.6.pack.js"&lt;/span&gt; &lt;span class="attr"&gt;ScriptMode&lt;/span&gt;&lt;span class="kwrd"&gt;="Release"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptReference&lt;/span&gt; &lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;="~/scripts/jquery.json-1.3.min.js"&lt;/span&gt; &lt;span class="attr"&gt;ScriptMode&lt;/span&gt;&lt;span class="kwrd"&gt;="Release"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Scripts&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;                
        ContactName: 
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="txtCustomer"&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; 
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="button"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="Search"&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;="SearchCustomer()"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;strong&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="testDiv"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="text/javascript"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;function&lt;/span&gt; getData(request) 
        {           
            $.ajax&lt;br /&gt;            ({
                type: &lt;span class="str"&gt;"POST"&lt;/span&gt;,
                contentType: &lt;span class="str"&gt;"application/json; charset=utf-8"&lt;/span&gt;,
                url: &lt;span class="str"&gt;"UserControlHandler.ashx"&lt;/span&gt;,
                data: $.toJSON(request), &lt;span class="rem"&gt;// Uso del plugin jquery.json                                               &lt;/span&gt;
                success: &lt;span class="kwrd"&gt;function&lt;/span&gt;(msg) { $(&lt;span class="str"&gt;'#testDiv'&lt;/span&gt;).html(msg); }, &lt;span class="rem"&gt;// 'testDiv' viene popolato con l'Html di rendering dello UserControl&lt;/span&gt;
                error: &lt;span class="kwrd"&gt;function&lt;/span&gt;(XMLHttpRequest, textStatus, errorThrown) { alert(&lt;span class="str"&gt;"Error Occured!"&lt;/span&gt;); }
            });
        }

        &lt;span class="kwrd"&gt;function&lt;/span&gt; SearchCustomer()
        {
            &lt;span class="kwrd"&gt;var&lt;/span&gt; filterExpression = $(&lt;span class="str"&gt;'#txtCustomer'&lt;/span&gt;).val();
            &lt;span class="kwrd"&gt;var&lt;/span&gt; request = {ControlName:&lt;span class="str"&gt;'CustomersGridView'&lt;/span&gt;,ControlParameters:[{Key:&lt;span class="str"&gt;'FilterExpression'&lt;/span&gt;,Value:filterExpression}]};                  
            getData(request);
        }        
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;script&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[






.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;

&lt;p&gt;  &lt;br /&gt;Al click del button "Search" viene invocata la function &lt;em&gt;SearchCustomer()&lt;/em&gt; che inizializza la stringa JSON da inviare all' HttpHandler, specificando il nome dello UserControl desiderato (&lt;em&gt;CustomersGridView&lt;/em&gt;) ed i parametri richiesti (&lt;em&gt;FilterExpression&lt;/em&gt;). Viene quindi invocata la funzione &lt;em&gt;getData(...)&lt;/em&gt; che si occupa di gestire la comunicazione AJAX con l' HttpHandler. Infine, l' Html di rendering dello UserControl &lt;em&gt;CustomersGridView&lt;/em&gt; viene posizionato all'interno del div "testDiv" della pagina&lt;em&gt;.&lt;/em&gt; 

  &lt;br /&gt;

  &lt;br /&gt;&lt;img src="http://img237.imageshack.us/img237/722/immagineir9.jpg" /&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c43190bc-f457-419e-90c8-9be6b6c5bb19" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tag: &lt;a href="http://technorati.com/tags/jQuery" rel="tag"&gt;jQuery&lt;/a&gt;,&lt;a href="http://technorati.com/tags/AJAX" rel="tag"&gt;AJAX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/HttpHandler" rel="tag"&gt;HttpHandler&lt;/a&gt;,&lt;a href="http://technorati.com/tags/JSON" rel="tag"&gt;JSON&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/dsantarelli/aggbug/94994.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dario Santarelli</dc:creator>
            <guid>http://blogs.ugidotnet.org/dsantarelli/archive/2008/12/21/caricamento-dinamico-di-usercontrol-via-jquery-ajax-e-httphandler.aspx</guid>
            <pubDate>Sun, 21 Dec 2008 20:57:48 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dsantarelli/archive/2008/12/21/caricamento-dinamico-di-usercontrol-via-jquery-ajax-e-httphandler.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dsantarelli/comments/commentRss/94994.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dsantarelli/services/trackbacks/94994.aspx</trackback:ping>
        </item>
        <item>
            <title>[ASP.NET AJAX] UpdatePanelPopupExtender</title>
            <link>http://blogs.ugidotnet.org/dsantarelli/archive/2008/12/15/asp.net-ajax-updatepanelpopupextender.aspx</link>
            <description>&lt;p&gt;Un controllo AJAX molto "cool": &lt;strong&gt;&lt;a target="_blank" href="http://weblogs.asp.net/rajbk/archive/2007/01/24/inserting-and-deleting-with-the-ajax-updatepanelpopupextender.aspx"&gt;UpdatePanelPopupExtender&lt;/a&gt;&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
Si tratta di un ASP.NET AJAX extender che può essere agganciato ad un UpdatePanel in modo tale che quest'ultimo appaia dietro ad un qualsiasi controllo che specifichiamo come PopUp. &lt;br /&gt;
&lt;br /&gt;
&lt;img alt="" src="http://farm1.static.flickr.com/177/367751183_15a05a6c83_o.gif" /&gt;&lt;br /&gt;
&lt;br /&gt;
In &lt;a target="_blank" href="http://weblogs.asp.net/rajbk/archive/2007/01/17/master-details-using-ajax-introducing-the-updatepanelpopupextender.aspx"&gt;questo post&lt;/a&gt; vengono evidenziati alcuni interessanti scenari che si possono implementare con questo controllo:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;Master Details&lt;/strong&gt; &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Master Multiple Details&lt;/strong&gt; &lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;AJAX search&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Un grazie a Manuel per la segnalazione.&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e1bde5bf-238a-4397-86a9-ba794037e537" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tag: &lt;a rel="tag" href="http://technorati.com/tags/ASP.NET AJAX"&gt;ASP.NET AJAX&lt;/a&gt;&lt;/div&gt;&lt;img src="http://blogs.ugidotnet.org/dsantarelli/aggbug/94946.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dario Santarelli</dc:creator>
            <guid>http://blogs.ugidotnet.org/dsantarelli/archive/2008/12/15/asp.net-ajax-updatepanelpopupextender.aspx</guid>
            <pubDate>Mon, 15 Dec 2008 18:50:17 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dsantarelli/archive/2008/12/15/asp.net-ajax-updatepanelpopupextender.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dsantarelli/comments/commentRss/94946.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dsantarelli/services/trackbacks/94946.aspx</trackback:ping>
        </item>
        <item>
            <title>[ASP.NET AJAX] Modal Progress con jQuery</title>
            <link>http://blogs.ugidotnet.org/dsantarelli/archive/2008/10/27/asp.net-ajax-modal-progress-con-jquery.aspx</link>
            <description>In questo &lt;a target="_blank" href="http://encosia.com/2008/10/04/using-jquery-to-enhance-aspnet-ajax-progress-indication/"&gt;post&lt;/a&gt; viene mostrato un utilizzo del &lt;a target="_new" href="http://www.malsup.com/jquery/block/"&gt;jQuery BlockUI plugin&lt;/a&gt; per visualizzare un Modal Progress personalizzato durante il partial postback di un UpdatePanel. Il risultato che si può ottenere con questo approccio è ad esempio il seguente:&lt;br /&gt;
&lt;br /&gt;
&lt;img alt="" src="http://encosia.com/blog/wp-content/uploads/2008/10/block-ui-progress-indicator.gif" /&gt;&lt;br /&gt;
&lt;br /&gt;
Molto interessante :)&lt;br /&gt;
&lt;br /&gt;
Technorati Tag: &lt;a rel="tag" href="http://technorati.com/tags/AJAX"&gt;AJAX&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/jQuery"&gt;jQuery&lt;/a&gt;&lt;img src="http://blogs.ugidotnet.org/dsantarelli/aggbug/94392.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dario Santarelli</dc:creator>
            <guid>http://blogs.ugidotnet.org/dsantarelli/archive/2008/10/27/asp.net-ajax-modal-progress-con-jquery.aspx</guid>
            <pubDate>Mon, 27 Oct 2008 13:45:26 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dsantarelli/archive/2008/10/27/asp.net-ajax-modal-progress-con-jquery.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dsantarelli/comments/commentRss/94392.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dsantarelli/services/trackbacks/94392.aspx</trackback:ping>
        </item>
        <item>
            <title>[ASP.NET AJAX] Accesso sicuro al DOM</title>
            <link>http://blogs.ugidotnet.org/dsantarelli/archive/2008/08/12/asp.net-ajax-accesso-sicuro-al-dom.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://blogs.ugidotnet.org/dsantarelli/archive/2008/05/03/operazione-terminata-in-ie.aspx" target="_blank"&gt;Un po' di tempo fa&lt;/a&gt; mi sono imbattutto in un &lt;a href="http://blogs.msdn.com/ie/archive/2008/04/23/what-happened-to-operation-aborted.aspx" target="_blank"&gt;post&lt;/a&gt; dell' &lt;a href="http://blogs.msdn.com/ie" target="_blank"&gt;IEBlog&lt;/a&gt; in cui viene mostrato come l'aggiunta "prematura" di elementi al DOM tramite javascript ( ovvero prima che il parser rilevi la corretta chiusura del tag padre dell'elemento aggiunto dinamicamente ) può indurre IE7 alla visualizzazione di un &lt;a href="http://img214.imageshack.us/img214/1237/immaginepa5.jpg" target="_blank"&gt;messageBox "Operation aborted"&lt;/a&gt; che preclude addirittura la visualizzazione della pagina. Viceversa, se il DOM viene acceduto "troppo tardi" - ad esempio per nascondere degli elementi della pagina come immagini o oggetti embedded - si possono ottenere degli effetti indesiderati di lampeggiamento ("flickers"). Dunque, sorge spesso il dubbio circa quando e come modifcare il DOM della pagina in base al browser per evitare inconsistenze/risultati non ottimali. Certamente la questione non è banale!     &lt;br /&gt;Anzitutto, modificare il DOM dopo che si è scatenato l'evento &lt;a href="http://www.w3schools.com/jsref/jsref_onload.asp" target="_blank"&gt;window.onload&lt;/a&gt; costituisce un'operazione sicura, ma talvolta ci troviamo di fronte all'esigenza di non poter attendere il completo caricamento della pagina (DOM + oggetti) in quanto può avvenire troppo tardi rispetto alle nostre esigenze: potremmo infatti desiderare che il nostro script venga eseguito subito dopo che il DOM viene parserizzato dal browser ma prima che le immagini vengano scaricate.     &lt;br /&gt;Prima di vedere come questo scenario sia gestito automaticamente (e in maniera cross-browser) dal framework client-side di ASP.NET AJAX, spendiamo un attimo due parole sull' attuale supporto fornito dai principali browser per la manipolazione client-side del DOM.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Firefox, Opera e Safari&lt;/strong&gt; prevedono un evento &lt;a href="http://developer.mozilla.org/en/docs/Gecko-Specific_DOM_Events"&gt;DOMContentLoaded&lt;/a&gt; che viene scatenato subito dopo il caricamento del DOM ma immediatamente prima del download dei vari oggetti della pagina. Quindi, l'unica cosa da fare è aggiungere un EventListener per l'evento DOMContentLoaded e il gioco è fatto.     &lt;br /&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: " courier="courier"&gt;     &lt;br /&gt;if&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt; (document.addEventListener)      &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt;{&lt;span style="mso-spacerun: yes"&gt;   &lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt;document.addEventListener(&lt;span style="color: #a31515"&gt;"DOMContentLoaded"&lt;/span&gt;, &lt;span style="color: blue"&gt;function&lt;/span&gt;() {&lt;span style="mso-spacerun: yes"&gt;  &lt;br /&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; color: green; font-family: " courier="courier"&gt;// Codice che accede al DOM in maniera sicura...&lt;span style="mso-spacerun: yes"&gt;  &lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " courier="courier"&gt;}, &lt;span style="color: blue"&gt;false&lt;/span&gt;);       &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; line-height: 115%; font-family: " courier="courier"&gt;}&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Internet Explorer&lt;/strong&gt; (almeno fino alla versione 7) non rende la vita così semplice, in quanto l'evento DOMContentLoaded non è supportato. Siamo dunque costretti ad affidarci a qualche workaround che lo emuli. Nello specifico, i due workaround più conosciuti sono:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;utilizzare l'attributo &lt;em&gt;defer&lt;/em&gt; nel tag script:  &lt;span lang="EN-US" style="font-size: 8pt; color: blue; line-height: 115%; font-family: " courier="courier"&gt;&amp;lt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: #a31515; line-height: 115%; font-family: " courier="courier"&gt;script&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; line-height: 115%; font-family: " courier="courier"&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="text/javascript"&lt;/span&gt; &lt;span style="color: red"&gt;defer&lt;/span&gt;&lt;span style="color: blue"&gt;="defer"&lt;/span&gt; &lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;="onload.js" /&amp;gt;&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;    &lt;li&gt;implementare un meccanismo di controllo alternativo come &lt;a href="http://ajaxian.com/archives/iecontentloaded-yet-another-domcontentloaded" target="_blank"&gt;questo&lt;/a&gt; per attendere il corretto caricamento del DOM. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In framework client-side di &lt;strong&gt;ASP.NET AJAX&lt;/strong&gt; invece risolve il problema alla radice!     &lt;br /&gt;Anzitutto, per ovvi motivi non è prevista alcuna ottimizzazione dedicata ad un browser specifico (es. agganciamento dell'evento DOMContentLoaded a seguito dello sniffing del browser), tuttavia l'inizializzazione dei vari componenti viene sempre eseguita dopo il caricamento del DOM. Come avviene tutto questo? Vediamo.     &lt;br /&gt;Nel codice sorgente dell' AJAX Library viene definita una classe &lt;em&gt;Sys.Application&lt;/em&gt; che viene istanziata automaticamente in ogni pagina:     &lt;br /&gt;    &lt;br /&gt;&lt;span lang="EN-US" style="font-size: 8pt; line-height: 115%; font-family: " courier="courier"&gt;Sys.Application = &lt;span style="color: blue"&gt;new&lt;/span&gt; Sys._Application();&lt;/span&gt;&lt;/p&gt; Il costruttore &lt;em&gt;_Application()&lt;/em&gt; al suo interno include il seguente codice:   &lt;br /&gt;  &lt;br /&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt;Sys.UI.DomEvent.addHandler(window, &lt;span style="color: #a31515"&gt;"load"&lt;/span&gt;, &lt;span style="color: blue"&gt;this&lt;/span&gt;._loadHandlerDelegate);       &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; line-height: 115%; font-family: " courier="courier"&gt;Sys.UI.DomEvent.addHandler(window, &lt;span style="color: #a31515"&gt;"unload"&lt;/span&gt;, &lt;span style="color: blue"&gt;this&lt;/span&gt;._unloadHandlerDelegate); &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt; &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;La prima istruzione aggancia l'evento &lt;em&gt;Application.load&lt;/em&gt; all'evento window.load del browser mentre la seconda istruzione associa l'evento &lt;em&gt;Application.unload&lt;/em&gt; all'evento window.unload. Dunque, quando viene scatenato l'evento window.load viene invocato il metodo &lt;em&gt;_loadHandlerDelegate()&lt;/em&gt; di ASP.NET AJAX, il quale a sua volta invoca il metodo &lt;em&gt;_Application.initialize()&lt;/em&gt;:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt; &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="font-size: 8pt; color: blue; font-family: " courier="courier"&gt;function&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt; Sys$_Application$initialize()      &lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt;{      &lt;br /&gt;  &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt;(!&lt;span style="color: blue"&gt;this&lt;/span&gt;._initialized &amp;amp;&amp;amp; !&lt;span style="color: blue"&gt;this&lt;/span&gt;._initializing)       &lt;br /&gt;  &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt;{      &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt;&lt;span style="color: blue"&gt;this&lt;/span&gt;._initializing = &lt;span style="color: blue"&gt;true&lt;/span&gt;;       &lt;br /&gt;    &lt;/span&gt;&lt;span lang="EN-US" style="font-size: 8pt; font-family: " courier="courier"&gt;&lt;strong&gt;window.setTimeout(Function.createDelegate(&lt;span style="color: blue"&gt;this&lt;/span&gt;, &lt;span style="color: blue"&gt;this&lt;/span&gt;._doInitialize), 0);         &lt;br /&gt;&lt;/strong&gt;  &lt;/span&gt;&lt;span style="font-size: 8pt; font-family: " courier="courier"&gt;}      &lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 8pt; line-height: 115%; font-family: " courier="courier"&gt;}&lt;/span&gt;&lt;span lang="EN-US" style="mso-ansi-language: en-us"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-bottom: 0pt; line-height: normal; mso-layout-grid-align: none"&gt;   &lt;br /&gt;A cosa serve l'ultima istruzione &lt;em&gt;window.setTimeout(...)&lt;/em&gt;? Da quanto ho avuto modo di apprendere, impostare l'invocazione di un metodo a seguito di un timeout di 0 millisecondi forza il browser ad eseguire la funzione prima possibile. In questo caso, si suppone che il metodo &lt;em&gt;_doInitialize&lt;/em&gt; venga eseguito dopo che il DOM viene caricato ma prima che venga scaricato il contenuto binario di immagini, oggetti flash/silverlight etc. In questo modo il runtime di javascript non permette lo scadere del timeout e forza l'esecuzione di &lt;em&gt;_doInitialize&lt;/em&gt; finché il DOM non sarà completamente caricato.   &lt;br /&gt;Di conseguenza il metodo &lt;em&gt;_doInitialize&lt;/em&gt; verrà eseguito solo quando sarà sicuro modificare il DOM e nello stesso tempo ci preserverà dall'attesa della completa esecuzione dell' evento window.load (il quale - ricordiamolo ancora - attende il download degli oggetti binari nella pagina).     &lt;br /&gt;    &lt;br /&gt;In conclusione, ASP.NET AJAX fornisce un proprio meccanismo analogo al DOMContentLoaded che permette il corretto accesso al DOM indipendentemente dal browser utilizzato. A questo punto la domanda finale è: dove viene posizionata la chiamata &lt;em&gt;Sys.Application.initialize()&lt;/em&gt; ?  &lt;br /&gt;Lo ScriptManager si prenderà cura di posizionarla appena prima della chiusura del tag &amp;lt;/form&amp;gt; in fondo alla pagina, assumendo ovviamente che non ci siano altri script "a rischio" dopo di esso.  &lt;br /&gt;    &lt;br /&gt;Technorati tags: &lt;img alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=AJAX" /&gt;&lt;a href="http://technorati.com/tags/AJAX/"&gt;AJAX&lt;/a&gt;, &lt;img alt=" " src="http://static.technorati.com/static/img/pub/icon-utag-16x13.png?tag=DOM" /&gt;&lt;a href="http://technorati.com/tags/DOM/"&gt;DOM&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.ugidotnet.org/dsantarelli/aggbug/93690.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dario Santarelli</dc:creator>
            <guid>http://blogs.ugidotnet.org/dsantarelli/archive/2008/08/12/asp.net-ajax-accesso-sicuro-al-dom.aspx</guid>
            <pubDate>Tue, 12 Aug 2008 15:31:44 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dsantarelli/archive/2008/08/12/asp.net-ajax-accesso-sicuro-al-dom.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dsantarelli/comments/commentRss/93690.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dsantarelli/services/trackbacks/93690.aspx</trackback:ping>
        </item>
        <item>
            <title>AjaxControlToolkit v1.0.10606: uno strano comportamento del ModalPopupExtender</title>
            <link>http://blogs.ugidotnet.org/dsantarelli/archive/2007/06/13/81628.aspx</link>
            <description>&lt;p&gt;Vorrei&amp;nbsp;segnalare uno strano comportamento della nuova versione del&amp;nbsp;ModalPopupExtender che ho avuto modo di&amp;nbsp;notare proprio oggi&amp;nbsp;nell' &lt;a href="http://www.codeplex.com/AtlasControlToolkit/Release/ProjectReleases.aspx?ReleaseId=1813"&gt;ultima release di AjaxControlToolkit&lt;/a&gt;.&lt;br&gt;Supponiamo di avere il seguente scenario, in cui ci sono due ModalPopupExtender aventi TargetControlID diversi ma&amp;nbsp;lo stesso PopupControlID:&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:215737ec-f219-448c-a96e-07f3901ef8a6" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;;font-family:Courier New;font-size:15,75"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;...
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;asp:Panel &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;ID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;MyTestPanel&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
            My content...&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;br &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;br &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;asp:Button &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;ID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;OKButt&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; Text&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot; OK &amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;            
            &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;asp:LinkButton &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;ID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;Close_LB&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; Text&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;Chiudi&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;asp:LinkButton&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;asp:Panel&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;asp:LinkButton &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;ID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;ShowPanel1_LB&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; Text&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;Show1&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;asp:LinkButton&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
        &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;asp:LinkButton &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;ID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;ShowPanel2_LB&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; Text&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;Show2&amp;quot;&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000; "&gt;asp:LinkButton&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;
                
         &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;ajax:ModalPopupExtender &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;ID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;ModalPopupExtender1&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt;
            TargetControlID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;ShowPanel1_LB&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt;
            PopupControlID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;MyTestPanel&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; 
            OkControlID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;OKButt&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt;
            CancelControlID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;Close_LB&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; 
            DropShadow&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;     
            
         &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000; "&gt;ajax:ModalPopupExtender &lt;/span&gt;&lt;span style="color: #FF0000; "&gt;ID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;ModalPopupExtender2&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; runat&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; 
            TargetControlID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;ShowPanel2_LB&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt;
            PopupControlID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;MyTestPanel&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; 
            OkControlID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;OKButt&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt;
            CancelControlID&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;Close_LB&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; 
            DropShadow&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #FF0000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color: #000000; "&gt;     
...&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&lt;br&gt;Con la nuova versione del controllo, al momento del click su uno dei due TargetControlID viene scatenata dal framework client-side&amp;nbsp;la seguente eccezione:&lt;br&gt;&lt;br&gt;&lt;em&gt;"Sys.InvalidOperationException: Two components with the same id&amp;nbsp;'&amp;lt;nomePanel&amp;gt;$DropShadowBehaviour' can't be added to the application."&lt;br&gt;&lt;/em&gt;&lt;br&gt;Come si può intuire&amp;nbsp;immediatamente, si tratta di un problema legato alla proprietà DropShadow del ModalPopupExtender. Infatti, se la si imposta a "false", automaticamente tutto torna a funzionare correttamente.&lt;br&gt;Nei prossimi giorni dovrò cercare di trovare una spiegazione plausibile a questo problema, anche perché sono rimasto veramente&amp;nbsp;amareggiato dal fatto che nella release precedente questo scenario era&amp;nbsp;supportato e funzionante (come logicamente è normale che sia).&lt;img src="http://blogs.ugidotnet.org/dsantarelli/aggbug/81628.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dario Santarelli</dc:creator>
            <guid>http://blogs.ugidotnet.org/dsantarelli/archive/2007/06/13/81628.aspx</guid>
            <pubDate>Wed, 13 Jun 2007 18:01:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dsantarelli/archive/2007/06/13/81628.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dsantarelli/comments/commentRss/81628.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dsantarelli/services/trackbacks/81628.aspx</trackback:ping>
        </item>
        <item>
            <title>Forzare l'Update() di un UpdatePanel tramite un evento Javascript... una scelta corretta?</title>
            <link>http://blogs.ugidotnet.org/dsantarelli/archive/2007/05/04/77266.aspx</link>
            <description>&lt;P&gt;Oggi mi &amp;#232; stato chiesto a bruciapelo (cito testualmente) "...un modo per eseguire il refresh di un UpdatePanel tramite un evento javascript (ad esempio onblur di un input text)...".&lt;BR&gt;Se ci pensiamo bene, questo tipo di scelta implementativa va "filosoficamente" contro i principi di AJAX. Infatti (assumendo che il browser supporti Javascript :)), &amp;#232;&amp;nbsp;maggiormente corretto utilizzare il pi&amp;#249; possibile le API AJAX del framework client-side per gestire il comportamento dei controlli client-side, al fine di evitare round-trip dispendiosi e spesso inutili verso il server (uno degli obiettivi primari di AJAX, d'altronde, &amp;#232; proprio questo :)).&lt;BR&gt;Si pensi al caso di un' invocazione di un Web Service: gestirla direttamente tramite il framework lato client permette di risparmiare un round-trip!&lt;BR&gt;Potremmo discutere sulla questione all'infinito...;) &lt;BR&gt;Ad ogni modo, una soluzione veloce al problema potrebbe consistere nel forzare da Javascript il PostBack della pagina nei confronti di un controllo impostato come Trigger del nostro UpdatePanel. Come controllo potremmo usare ad esempio un HiddenField:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;!DOCTYPE&amp;nbsp;html&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;PUBLIC&amp;nbsp;"-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;Transitional//EN"&amp;nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;html&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="http://www.w3.org/1999/xhtml"&amp;nbsp;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;head&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;title&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Test&amp;nbsp;UpdatePanel&amp;nbsp;'OnBlur'&amp;nbsp;su&amp;nbsp;Input&amp;nbsp;Text&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;title&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;script&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;type&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="text/javascript"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;function&amp;nbsp;postBackHF(hiddenFieldID)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var&amp;nbsp;hiddenField&amp;nbsp;=&amp;nbsp;$get(hiddenFieldID);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(hiddenField)&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hiddenField.value&amp;nbsp;=&amp;nbsp;(new&amp;nbsp;Date()).getTime();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&lt;FONT size=3&gt;__doPostBack(hiddenFieldID,'');&lt;/FONT&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/script&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/head&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;body&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;form&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="form1"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;div&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;h1&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Test&amp;nbsp;UpdatePanel&amp;nbsp;'OnBlur'&amp;nbsp;su&amp;nbsp;Input&amp;nbsp;Text&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/h1&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;asp:ScriptManager&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="TestScriptManager"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;asp:UpdatePanel&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="UpdatePanelTest"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;UpdateMode&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="Conditional"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ChildrenAsTriggers&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="False"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ContentTemplate&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;div&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;style&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="background-color:&amp;nbsp;#FFFF00;&amp;nbsp;padding:&amp;nbsp;10px;"&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;h2&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;UpdatePanel&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/h2&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;input&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;type&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="text"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="testTB"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;value&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="Scatena&amp;nbsp;l'OnBlur..."&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;onblur&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;="postBackHF('&amp;lt;%=HiddenFieldTest.ClientID&amp;nbsp;%&amp;gt;')"&lt;/STRONG&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;br&amp;nbsp;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;asp:HiddenField&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="HiddenFieldTest"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;asp:Label&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="Outputlbl"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;Text&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="Label"&amp;gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;asp:Label&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/div&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;ContentTemplate&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Triggers&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;asp:AsyncPostBackTrigger&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ControlID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="HiddenFieldTest"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;EventName&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="ValueChanged"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;Triggers&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;asp:UpdatePanel&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/div&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/form&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/body&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/html&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;E nel CodeFile...&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;...&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;protected&amp;nbsp;void&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Page_Load(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;object&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;sender,&amp;nbsp;EventArgs&amp;nbsp;e)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;FONT color=#0000ff&gt;if&lt;/FONT&gt;(IsPostBack) &lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Outputlbl.Text&amp;nbsp;=&amp;nbsp;"UpdatePanel&amp;nbsp;Refreshed:&amp;nbsp;"&amp;nbsp;+&amp;nbsp;DateTime.Now.ToString();&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;...&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;Come si pu&amp;#242; osservare, all'occorrenza dell' evento "onblur" della nostra textbox, andiamo a cambiare il valore lato client del nostro HiddenField di appoggio. Quindi, forziamo il __doPostBack() in modo da scatenarne, lato server, l'evento &lt;FONT face="Courier New" size=2&gt;ValueChanged&lt;/FONT&gt;, ovvero il Trigger che invocher&amp;#224; automaticamente il metodo &lt;FONT face="Courier New" size=2&gt;Update()&lt;/FONT&gt; del nostro UpdatePanel. &lt;BR&gt;In questo caso si &amp;#232; scelto di impostare l'evento &lt;FONT face="Courier New" size=2&gt;ValueChanged&lt;/FONT&gt; dell' HiddenField come &lt;FONT face="Courier New" size=2&gt;AsyncPostBackTrigger&lt;/FONT&gt; in quanto la propriet&amp;#224; &lt;FONT face="Courier New" size=2&gt;ChildrenAsTriggers&lt;/FONT&gt; dell'UpdatePanel &amp;#232; impostata su "False". E' chiaro che si pu&amp;#242; pensare di implementare questo scenario in tanti altri modi diversi :)...&lt;/P&gt;&lt;img src="http://blogs.ugidotnet.org/dsantarelli/aggbug/77266.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dario Santarelli</dc:creator>
            <guid>http://blogs.ugidotnet.org/dsantarelli/archive/2007/05/04/77266.aspx</guid>
            <pubDate>Fri, 04 May 2007 00:54:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dsantarelli/archive/2007/05/04/77266.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dsantarelli/comments/commentRss/77266.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dsantarelli/services/trackbacks/77266.aspx</trackback:ping>
        </item>
        <item>
            <title>Usare lo ScriptManager per determinare quale controllo run-time ha causato un evento in AsyncPostBack</title>
            <link>http://blogs.ugidotnet.org/dsantarelli/archive/2007/04/30/76920.aspx</link>
            <description>&lt;P&gt;Spesso nelle nostre applicazioni ASP.NET ci troviamo di fronte all'esigenza di aggiungere controlli in fase di run-time in modo da&amp;nbsp;rendere completamente dinamico&amp;nbsp;il comportamento delle nostre&amp;nbsp;pagine.&amp;nbsp; Ultimamente mi sono scontrato con la necessit&amp;#224; di utilizzare questa tecnica all'interno del&amp;nbsp;controllo &lt;FONT face="Courier New" size=2&gt;UpdatePanel&lt;/FONT&gt; di ASP.NET AJAX. &lt;BR&gt;Anzitutto,&amp;nbsp;&amp;#232; importante&amp;nbsp;precisare come non sia possibile aggiungere controlli direttamente nell'UpdatePanel (non possiamo quindi fare una cosa di questo tipo: &lt;FONT face="Courier New" size=2&gt;MyUpdatePanel.Controls.Add(...)&lt;/FONT&gt;). Siamo quindi vincolati a prevedere dei container (es. &lt;FONT face="Courier New" size=2&gt;Panel&lt;/FONT&gt;) da collocare nel &lt;FONT face="Courier New" size=2&gt;ContentTemplateContainer&lt;/FONT&gt; dell' &lt;FONT face="Courier New" size=2&gt;UpdatePanel&lt;/FONT&gt;&amp;nbsp;per procedere&amp;nbsp;all'aggiunta dei nostri controlli. &lt;BR&gt;Uno dei modi pi&amp;#249; veloci e funzionali&amp;nbsp;per poter poi riuscire a determinare quale controllo&amp;nbsp;run-time all'interno dell' &lt;FONT face="Courier New" size=2&gt;UpdatePanel&lt;/FONT&gt; ha generato un evento&amp;nbsp;in modalit&amp;#224; AsyncPostBack,&amp;nbsp;sfrutta semplicemente l'oggetto &lt;FONT face="Courier New" size=2&gt;Request&lt;/FONT&gt; della pagina relativamente allo ScriptManager dichiarato.&lt;BR&gt;Andando in ordine, questa &amp;#232; una pagina di esempio:&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;!DOCTYPE&amp;nbsp;html&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;PUBLIC&amp;nbsp;"-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.1//EN"&amp;nbsp;"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;html&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="http://www.w3.org/1999/xhtml"&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;head&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;title&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;UpdatePanel&amp;nbsp;con&amp;nbsp;controlli&amp;nbsp;Run-Time&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;title&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/head&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;body&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;h1&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;UpdatePanel&amp;nbsp;con&amp;nbsp;controlli&amp;nbsp;Run-Time&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/h1&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;form&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="form1"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;div&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;?xml:namespace prefix = asp /&gt;&lt;asp:ScriptManager SPAN &lt;&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="MyScriptManager"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;EnablePartialRendering&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="true"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;asp:UpdatePanel SPAN &lt;&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="MyUpdatePanel"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;UpdateMode&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="Conditional" &lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;RenderMode&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="Block"&lt;/SPAN&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;CONTENTTEMPLATE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;asp:Label SPAN &lt;&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="StatusLbl"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;asp:Label&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;br&amp;nbsp;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;br&amp;nbsp;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;asp:Panel SPAN &lt;&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="ControlsPanel1"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;asp:Panel&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;br&amp;nbsp;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;asp:Panel SPAN &lt;&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;ID&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="ControlsPanel2"&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #ff0000; FONT-FAMILY: Courier New"&gt;runat&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;="server"&amp;gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;asp:Panel&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;ContentTemplate&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;asp:UpdatePanel&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/div&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/form&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/body&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;BR&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #8b0000; FONT-FAMILY: Courier New"&gt;/html&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;BR&gt;E questo &amp;#232; il relativo CodeFile.&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;...&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;protected&amp;nbsp;void&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Page_Load(&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;object&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;sender,&amp;nbsp;EventArgs&amp;nbsp;e)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AddMyControls(); &lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//&amp;nbsp;Aggiunta dei controlli alla Pagina&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;if&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;(MyScriptManager.IsInAsyncPostBack)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;string &lt;/SPAN&gt;MyScriptManagerRequest = Request[MyScriptManager.ID];&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;Visualizziamo il contenuto della richiesta dello ScriptManager&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StatusLbl.Text&amp;nbsp;=&amp;nbsp;MyScriptManagerRequest ;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;if&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;(MyScriptManagerRequest.Contains("Button1"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//&amp;nbsp;Fai&amp;nbsp;qualcosa...&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;else&amp;nbsp;if&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;(MyScriptManagerRequest.Contains("Button2"))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #008000; FONT-FAMILY: Courier New"&gt;//&amp;nbsp;Fai&amp;nbsp;qualcosa...&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;private&amp;nbsp;void&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;AddMyControls()&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button&amp;nbsp;button1&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;new&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Button();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;button1.ID&amp;nbsp;=&amp;nbsp;"Button1";&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Button&amp;nbsp;button2&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Courier New"&gt;new&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #000000; FONT-FAMILY: Courier New"&gt;Button();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;button2.ID&amp;nbsp;=&amp;nbsp;"Button2";&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ControlsPanel1.Controls.Add(button1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ControlsPanel2.Controls.Add(button2);&lt;BR&gt;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;...&lt;BR&gt;&lt;BR&gt;&lt;FONT face=Verdana&gt;Occorre&amp;nbsp;porre attenzione al&amp;nbsp;fatto che il contenuto di &lt;FONT face="Courier New"&gt;Request[MyScriptManager.ID]&lt;/FONT&gt; , ovvero la stringa&amp;nbsp;nel POST Http&amp;nbsp;corrispondente al&amp;nbsp;nostro ScriptManager (&lt;FONT face="Courier New"&gt;MyScriptManager&lt;/FONT&gt;),&amp;nbsp;contiene qualcosa del tipo "&lt;FONT face="Courier New"&gt;&amp;lt;ID UpdatePanel&amp;gt;&lt;ID UpdatePanel&gt;|&amp;lt;ID Controllo&amp;gt;&lt;ID Controllo&gt;&lt;/FONT&gt;" (nel nostro caso ad esempio&amp;nbsp;"MyUpdatePanel|Button1"). &lt;BR&gt;Possiamo quindi&amp;nbsp;processare questa stringa per capire quale controllo ha causato il PostBack asincrono e quindi procedere con la nostra logica di business. &lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/asp:Panel&gt;&lt;/asp:Panel&gt;&lt;/SPAN&gt;&lt;/asp:Label&gt;&lt;/SPAN&gt;&lt;/asp:UpdatePanel&gt;&lt;/SPAN&gt;&lt;/asp:ScriptManager&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.ugidotnet.org/dsantarelli/aggbug/76920.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Dario Santarelli</dc:creator>
            <guid>http://blogs.ugidotnet.org/dsantarelli/archive/2007/04/30/76920.aspx</guid>
            <pubDate>Mon, 30 Apr 2007 00:55:00 GMT</pubDate>
            <comments>http://blogs.ugidotnet.org/dsantarelli/archive/2007/04/30/76920.aspx#feedback</comments>
            <wfw:commentRss>http://blogs.ugidotnet.org/dsantarelli/comments/commentRss/76920.aspx</wfw:commentRss>
            <trackback:ping>http://blogs.ugidotnet.org/dsantarelli/services/trackbacks/76920.aspx</trackback:ping>
        </item>
    </channel>
</rss>