<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ASP.NET AJAX Discussion and Suggestions</title><link>http://forums.asp.net/1007.aspx</link><description>This forum is the place for ASP.NET AJAX 'getting started' questions, general questions that don't fit in one of the other forums about AJAX </description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>FAQ in ASP.NET AJAX Discussion and Suggestions</title><link>http://forums.asp.net/thread/2076824.aspx</link><pubDate>Wed, 26 Dec 2007 02:12:06 GMT</pubDate><guid isPermaLink="false">4c671506-2930-414c-a40b-8bf57ded5924:2076824</guid><dc:creator>Raymond Wen - MSFT</dc:creator><slash:comments>0</slash:comments><comments>http://forums.asp.net/thread/2076824.aspx</comments><wfw:commentRss>http://forums.asp.net/commentrss.aspx?SectionID=1007&amp;PostID=2076824</wfw:commentRss><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a class="" title="top" name="top"&gt;&lt;/a&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq01"&gt;1. How to configure AJAX on production server?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq02"&gt;2. How to handle error 500?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq03"&gt;3. How to perform an action at a specific stage of partial PostBack?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq04"&gt;4. Why do I get PageRequestManagerParserErrorException?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq05"&gt;5. How to register event of a control in the UserControl as the trigger of an UpdatePanel?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq06"&gt;6. How to register event of a control in a UserControl as the trigger of the UpdatePanel in another UserControl?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq07"&gt;7. How to add ScriptManager and UpdatePanel to MasterPage from ContentPage dynamically?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq08"&gt;8. Can HyperLink be the trigger of UpdatePanel?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq09"&gt;9. How to trigger partial PostBack from a different window?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq10"&gt;10. How to manipulate AJAX Timer control on client side?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://forums.asp.net/t/1198016.aspx#faq11"&gt;11. Useful Links&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr /&gt;

&lt;p&gt;&lt;a class="" title="faq01" name="faq01"&gt;&lt;/a&gt;&lt;b&gt;1. How to configure AJAX on production server? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Here are some actions we need to perform on the production server to host an AJAX-enabled web site on it.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 1. Install AJAX Extension on the server&lt;br /&gt;&amp;nbsp; 2. The virtual directory is configured as an application in IIS&lt;br /&gt;&amp;nbsp; 3. The ASP.NET version of the application is configured to 2.0&lt;br /&gt;&amp;nbsp; 4. Add some entries in web.config to register necessary assemblies, HttpHandlers, etc. &lt;/p&gt;
&lt;p&gt;The easiest way is to create a website using the ASP.NET AJAX-Enabled Web Site template. If you need to update an existing site, please edit the web.config file manually. This document (&lt;a href="http://asp.net/AJAX/Documentation/Live/ConfiguringASPNETAJAX.aspx"&gt;http://asp.net/AJAX/Documentation/Live/ConfiguringASPNETAJAX.aspx&lt;/a&gt;) and the two tutorial videos (&lt;a class="" href="http://www.asp.net/learn/ajax-videos/video-82.aspx"&gt;How Do I: ASP.NET AJAX Enable an Existing Web Service?&lt;/a&gt;, &lt;a class="" href="http://www.asp.net/learn/ajax-videos/video-81.aspx"&gt;How Do I: Add ASP.NET AJAX Features to an Existing Web Application?&lt;/a&gt; ) explain what is necessary and why. &lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq02" name="faq02"&gt;&lt;/a&gt;&lt;b&gt;2. How to handle error 500? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;An error with status code 500 indicates that there is a problem when the server tries to process the request. There can be variant causes. The problem is how to find out the real cause of the error.&lt;br /&gt;Here are two ways to find it out:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 1. Set a breakpoint in the code that is responsible for processing the request, then debug through it to find out the exception being thrown;&lt;br /&gt;&amp;nbsp; 2. The real error message is usually returned in the response. We can use an HTTP Sniffer (e.g., Fiddler) to peek into the traffic between the client and server to find out the error message.&lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq03" name="faq03"&gt;&lt;/a&gt;&lt;b&gt;3. How to perform an action at a specific stage of partial PostBack? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;In Microsoft AJAX Library, there is a client side lifecycle model similar to the page lifecycle on server side. Developers can add different event handlers to perform specific actions at a specific state. For example, disable a button just before the page is going to be posted in beginRequest event handler, then enable it again in endRequest event handler. &lt;br /&gt;This document (&lt;a class="" href="http://msdn.microsoft.com/en-us/library/bb386417.aspx"&gt;AJAX Client Life-Cycle Events&lt;/a&gt;) contains a full description of the order of those events, and how to use them.&lt;br /&gt;&lt;br /&gt;Related threads:&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1109705.aspx"&gt;http://forums.asp.net/t/1109705.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq04" name="faq04"&gt;&lt;/a&gt;&lt;b&gt;4. Why do I get PageRequestManagerParserErrorException? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;This exception may occur when we are working with UpdatePanel. Upon a partial PostBack, the request is exactly the same as a normal PostBack’s. The difference is that the request is sent with the XmlHttpRequest. Another notable difference is that the response for the request is in a particular format. &lt;br /&gt;Typically, the response only contains the content of the UpdatePanels to be updated, and it must follow a specified format so that it can be parsed by the client library to update the page.&lt;br /&gt;If you try to output something additional with Response.Write, Server Trace, or modify the output with an HttpModule, the response won’t comply with the format any more. As a result, the client library is not able to parse it. So the exception occurs.&lt;br /&gt;In order to get rid of this, we should not use the above features when there is an UpdatePanel on the page.&lt;br /&gt;&lt;br /&gt;Related threads:&lt;br /&gt;&lt;a href="http://forums.asp.net/p/1140794/1844602.aspx"&gt;http://forums.asp.net/p/1140794/1844602.aspx&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq05" name="faq05"&gt;&lt;/a&gt;&lt;b&gt;5. How to register event of a control in the UserControl as the trigger of an UpdatePanel? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The best solution is to bubble up the event of the control as a custom event of the user control. Then register the custom event of the UserControl as the trigger of the UpdatePanel.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 1. Define a custom delegate and event on the UserControl&lt;br /&gt;&amp;nbsp; 2. Fire the custom event in the event to be bubbled up&lt;br /&gt;&amp;nbsp; 3. Register the custom event of the UserControl as the trigger of the UpdatePanel just like a normal control&lt;br /&gt;&lt;br /&gt;Here is a sample:&amp;nbsp; 
&lt;blockquote&gt;&lt;pre class="coloredcode"&gt;&lt;span class="dir"&gt;&amp;lt;%@ Control Language=&amp;quot;C#&amp;quot; ClassName=&amp;quot;TestUc&amp;quot; %&amp;gt;&lt;/span&gt;
&amp;lt;&lt;span class="tag"&gt;script&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
    public delegate void ClickEventHandler(object sender, CommandEventArgs e);
    public event ClickEventHandler TestCustomEvent;
    protected void lb_Command(object sender, CommandEventArgs e)
    {   // bubble up the command event as TestCustomEvent
        if (TestCustomEvent != null) TestCustomEvent(this, e);
    }
&amp;lt;/&lt;span class="tag"&gt;script&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span class="tag"&gt;asp:LinkButton&lt;/span&gt;&lt;span class="attr"&gt; ID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;LinkButton1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; CommandArgument=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;LinkButton1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; OnCommand=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;lb_Command&amp;quot;&lt;/span&gt;&amp;gt;LinkButton1&amp;lt;/&lt;span class="tag"&gt;asp:LinkButton&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span class="tag"&gt;asp:LinkButton&lt;/span&gt;&lt;span class="attr"&gt; ID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;LinkButton2&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; CommandArgument=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;LinkButton2&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; OnCommand=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;lb_Command&amp;quot;&lt;/span&gt;&amp;gt;LinkButton2&amp;lt;/&lt;span class="tag"&gt;asp:LinkButton&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&amp;nbsp;&lt;span class="dir"&gt;&amp;nbsp; 
&lt;blockquote&gt;&lt;pre class="coloredcode"&gt;&lt;span class="dir"&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; %&amp;gt;
&amp;lt;%@ Register src=&amp;quot;TestUc.ascx&amp;quot; TagName=&amp;quot;TestUc&amp;quot; TagPrefix=&amp;quot;uc1&amp;quot; %&amp;gt;&lt;/span&gt;
&amp;lt;&lt;span class="tag"&gt;!DOCTYPE&lt;/span&gt; html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;
&amp;lt;&lt;span class="tag"&gt;script&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
    protected void TestUc1_TestCustomEvent(object sender, CommandEventArgs e)
    {
        Label1.Text = DateTime.Now.ToString();
    }
&amp;lt;/&lt;span class="tag"&gt;script&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span class="tag"&gt;html&lt;/span&gt;&lt;span class="attr"&gt; xmlns=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span class="tag"&gt;head&lt;/span&gt;&lt;span class="attr"&gt; id=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Head1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
    &amp;lt;&lt;span class="tag"&gt;title&lt;/span&gt;&amp;gt;Trigger UpdatePanel&amp;lt;/&lt;span class="tag"&gt;title&lt;/span&gt;&amp;gt;
&amp;lt;/&lt;span class="tag"&gt;head&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span class="tag"&gt;body&lt;/span&gt;&amp;gt;
    &amp;lt;&lt;span class="tag"&gt;form&lt;/span&gt;&lt;span class="attr"&gt; id=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;form1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
        &amp;lt;&lt;span class="tag"&gt;div&lt;/span&gt;&amp;gt;
            &amp;lt;&lt;span class="tag"&gt;asp:ScriptManager&lt;/span&gt;&lt;span class="attr"&gt; ID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;ScriptManager1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
            &amp;lt;/&lt;span class="tag"&gt;asp:ScriptManager&lt;/span&gt;&amp;gt;
            &amp;lt;&lt;span class="tag"&gt;uc1:TestUc&lt;/span&gt;&lt;span class="attr"&gt; id=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;TestUc1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; OnTestCustomEvent=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;TestUc1_TestCustomEvent&amp;quot;&lt;/span&gt;&amp;gt;
            &amp;lt;/&lt;span class="tag"&gt;uc1:TestUc&lt;/span&gt;&amp;gt;
            &amp;lt;&lt;span class="tag"&gt;asp:UpdatePanel&lt;/span&gt;&lt;span class="attr"&gt; ID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
                &amp;lt;&lt;span class="tag"&gt;ContentTemplate&lt;/span&gt;&amp;gt;
                    &amp;lt;&lt;span class="tag"&gt;asp:Label&lt;/span&gt;&lt;span class="attr"&gt; ID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Label1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; Text=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Label&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class="tag"&gt;asp:Label&lt;/span&gt;&amp;gt;
                &amp;lt;/&lt;span class="tag"&gt;ContentTemplate&lt;/span&gt;&amp;gt;
                &amp;lt;&lt;span class="tag"&gt;Triggers&lt;/span&gt;&amp;gt;
                    &amp;lt;&lt;span class="tag"&gt;asp:AsyncPostBackTrigger&lt;/span&gt;&lt;span class="attr"&gt; ControlID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;TestUc1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; EventName=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;TestCustomEvent&amp;quot;&lt;/span&gt; /&amp;gt;
                &amp;lt;/&lt;span class="tag"&gt;Triggers&lt;/span&gt;&amp;gt;
            &amp;lt;/&lt;span class="tag"&gt;asp:UpdatePanel&lt;/span&gt;&amp;gt;
        &amp;lt;/&lt;span class="tag"&gt;div&lt;/span&gt;&amp;gt;
    &amp;lt;/&lt;span class="tag"&gt;form&lt;/span&gt;&amp;gt;
&amp;lt;/&lt;span class="tag"&gt;body&lt;/span&gt;&amp;gt;
&amp;lt;/&lt;span class="tag"&gt;html&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/span&gt;
&lt;p&gt;Related threads:&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1138191.aspx"&gt;http://forums.asp.net/t/1138191.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1123812.aspx"&gt;http://forums.asp.net/t/1123812.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1141328.aspx"&gt;http://forums.asp.net/t/1141328.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1175921.aspx"&gt;http://forums.asp.net/t/1175921.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq06" name="faq06"&gt;&lt;/a&gt;&lt;b&gt;6. How to register event of a control in a UserControl as the trigger of the UpdatePanel in another UserControl? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;In order to do that, we can first define a custom property to expose the client ID of a hidden trigger control of the UpdatePanel on the UserControl (say &amp;quot;UserControlA&amp;quot;). On the other UserControl (say &amp;quot;UserControlB&amp;quot;), we will be able to fire the click event of the hidden trigger control.&lt;br /&gt;Here are the specific steps:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 1. Define a custom property to store the client ID of a hidden trigger control of the Update Panel(Button1clientID property of Gallery User Control):&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="coloredcode"&gt;&lt;span class="dir"&gt;&amp;lt;%@ Control Language=&amp;quot;C#&amp;quot; ClassName=&amp;quot;Gallery&amp;quot; %&amp;gt;&lt;/span&gt;
&amp;lt;&lt;span class="tag"&gt;script&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = DateTime.Now.ToString();
    }
    public string Button1clientID
    {
        get
        {
            return Button1.ClientID;
        }
    }
&amp;lt;/&lt;span class="tag"&gt;script&lt;/span&gt;&amp;gt;

&amp;lt;&lt;span class="tag"&gt;asp:UpdatePanel&lt;/span&gt;&lt;span class="attr"&gt; ID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
    &amp;lt;&lt;span class="tag"&gt;ContentTemplate&lt;/span&gt;&amp;gt;
        &amp;lt;&lt;span class="tag"&gt;asp:Label&lt;/span&gt;&lt;span class="attr"&gt; ID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Label1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; Text=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Label&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span class="tag"&gt;asp:Label&lt;/span&gt;&amp;gt;
        &amp;lt;&lt;span class="tag"&gt;div&lt;/span&gt;&lt;span class="attr"&gt; style=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;visibility: hidden&amp;quot;&lt;/span&gt;&amp;gt;
            &amp;lt;&lt;span class="tag"&gt;asp:Button&lt;/span&gt;&lt;span class="attr"&gt; ID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Button1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; OnClick=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Button1_Click&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; UseSubmitBehavior=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; Text=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Button&amp;quot;&lt;/span&gt; /&amp;gt;&amp;lt;/&lt;span class="tag"&gt;div&lt;/span&gt;&amp;gt;
    &amp;lt;/&lt;span class="tag"&gt;ContentTemplate&lt;/span&gt;&amp;gt;
&amp;lt;/&lt;span class="tag"&gt;asp:UpdatePanel&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp; 2. Define a custom property in the other User Control(Button1clientID property of Upload User Control):&amp;nbsp; 
&lt;blockquote&gt;&lt;pre class="coloredcode"&gt;&lt;span class="dir"&gt;&amp;lt;%@ Control Language=&amp;quot;C#&amp;quot; ClassName=&amp;quot;Upload&amp;quot; %&amp;gt;&lt;/span&gt;
&amp;lt;&lt;span class="tag"&gt;script&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
    private string buttonclientID = &amp;quot;&amp;quot;;
    public string Button1clientID
    {
        set
        {
            buttonclientID = value;
        }
    }
&amp;lt;/&lt;span class="tag"&gt;script&lt;/span&gt;&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&amp;nbsp; 3. Set Upload1.Button1clientID = Gallery1.Button1clientID in the page_Load:&amp;nbsp; 
&lt;blockquote&gt;&lt;pre class="coloredcode"&gt;&amp;lt;&lt;span class="tag"&gt;script&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&amp;gt;
    protected void Page_Load(object sender, EventArgs e)
    {
        Upload1.Button1clientID = Gallery1.Button1clientID;
    }
&amp;lt;/&lt;span class="tag"&gt;script&lt;/span&gt;&amp;gt; &lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&amp;nbsp; 4. Fire the click event of the hidden trigger control manually:&amp;nbsp; 
&lt;blockquote&gt;&lt;pre class="coloredcode"&gt;&amp;lt;&lt;span class="tag"&gt;script&lt;/span&gt;&lt;span class="attr"&gt; type=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;
     function submitForm()
     {
         document.getElementById(&amp;quot;&lt;span class="dir"&gt;&amp;lt;%=&lt;/span&gt;buttonclientID &lt;span class="dir"&gt;%&amp;gt;&lt;/span&gt;&amp;quot;).click();
     }
&amp;lt;/&lt;span class="tag"&gt;script&lt;/span&gt;&amp;gt;

&amp;lt;&lt;span class="tag"&gt;button&lt;/span&gt;&lt;span class="attr"&gt; onclick=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;javascript:submitForm();&amp;quot;&lt;/span&gt;&amp;gt;Upload&amp;lt;/&lt;span class="tag"&gt;button&lt;/span&gt;&amp;gt;
&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Here is the full sample code:&lt;br /&gt;&lt;a href="http://forums.asp.net/p/1117746/1739422.aspx#1739422"&gt;http://forums.asp.net/p/1117746/1739422.aspx#1739422&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Related threads:&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1117746.aspx"&gt;http://forums.asp.net/t/1117746.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1136932.aspx"&gt;http://forums.asp.net/t/1136932.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq07" name="faq07"&gt;&lt;/a&gt;&lt;b&gt;7. How to add ScriptManager and UpdatePanel to MasterPage from ContentPage dynamically? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The ScriptManager must be added before the initialization stage of a page that requires it. Otherwise, an InvalidOperationException will be thrown (it complains about the lack of ScriptManager on the page). It&amp;#39;s better to add it in Page_PreInit which fires before initialization.&lt;br /&gt;For example:&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="coloredcode"&gt;&lt;span class="kwd"&gt;protected void&lt;/span&gt; Page_PreInit(&lt;span class="kwd"&gt;object&lt;/span&gt; sender, EventArgs e)
{
        HtmlForm form1 = (HtmlForm)Master.FindControl(&lt;span class="st"&gt;&amp;quot;form1&amp;quot;&lt;/span&gt;);
        ScriptManager sm = &lt;span class="kwd"&gt;new&lt;/span&gt; ScriptManager();
        sm.ID = &lt;span class="st"&gt;&amp;quot;ScriptManager1&amp;quot;&lt;/span&gt;;
        form1.Controls.AddAt(0, sm);

        &lt;span class="cmt"&gt;// add a UpdatePanel and moves an existing control into it&lt;/span&gt;
        UpdatePanel panel = &lt;span class="kwd"&gt;new&lt;/span&gt; UpdatePanel();
        panel.ID = &lt;span class="st"&gt;&amp;quot;upMaster&amp;quot;&lt;/span&gt;;
        Control ctrl = ((Control)Master.FindControl(&lt;span class="st"&gt;&amp;quot;TextBox1&amp;quot;&lt;/span&gt;));
        panel.ContentTemplateContainer.Controls.Add(uc);
        form1.Controls.Add(panel);
}
&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Related threads:&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1165939.aspx"&gt;http://forums.asp.net/t/1165939.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1160425.aspx"&gt;http://forums.asp.net/t/1160425.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1163971.aspx"&gt;http://forums.asp.net/t/1163971.aspx&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq08" name="faq08"&gt;&lt;/a&gt;&lt;b&gt;8. Can HyperLink be the trigger of UpdatePanel? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;No. Please refer to this document: &lt;a href="http://www.asp.net/AJAX/documentation/live/mref/P_System_Web_UI_UpdatePanelControlTrigger_ControlID.aspx"&gt;http://www.asp.net/AJAX/documentation/live/mref/P_System_Web_UI_UpdatePanelControlTrigger_ControlID.aspx&lt;/a&gt;. The trigger must implement the INamingContainer, IPostBackDataHandler, or IPostBackEventHandler interface. HyperLink doesn&amp;#39;t implement any of them.&lt;br /&gt;Also See:&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 1. &lt;a href="http://msdn2.microsoft.com/en-us/82swx5bs"&gt;INamingContainer&lt;/a&gt; &lt;br /&gt;&amp;nbsp; 2. &lt;a href="http://msdn2.microsoft.com/en-us/bkhywh0b"&gt;IPostBackDataHandler&lt;/a&gt; &lt;br /&gt;&amp;nbsp; 3. &lt;a href="http://msdn2.microsoft.com/en-us/y35b7zf3"&gt;IPostBackEventHandler&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Related threads:&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1138804.aspx"&gt;http://forums.asp.net/t/1138804.aspx&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1099204.aspx"&gt;http://forums.asp.net/t/1099204.aspx&lt;/a&gt; &lt;br /&gt;&lt;a href="http://forums.asp.net/t/1170105.aspx"&gt;http://forums.asp.net/t/1170105.aspx&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq09" name="faq09"&gt;&lt;/a&gt;&lt;b&gt;9. How to trigger partial PostBack from a different window? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;There are cases when we need to trigger partial PostBack from a different window. For example: trigger partial PostBack in parent window from IFrame, trigger partial PostBack in opener from a popup window.&lt;br /&gt;We can add an invisible button (say Button1) on pageA, and set it to be the trigger of the UpdatePanel, and then we need to get a reference to this button from pageB and fire click on it to trigger a partial PostBack. It&amp;#39;s achievable with the following javascript. &lt;br /&gt;&amp;quot;window.parent.document.getElementById(&amp;#39;Button1&amp;#39;).click()&amp;quot;&lt;br /&gt;&amp;quot;window.opener.document.getElementById(&amp;#39;Button1&amp;#39;).click()&amp;quot;&lt;br /&gt;Here is the full sample code:&lt;br /&gt;&lt;a href="http://forums.asp.net/p/1162285/1927000.aspx#1927000"&gt;http://forums.asp.net/p/1162285/1927000.aspx#1927000&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Related threads:&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1162285.aspx"&gt;http://forums.asp.net/t/1162285.aspx&lt;/a&gt; &lt;br /&gt;&lt;a href="http://forums.asp.net/t/1117770.aspx"&gt;http://forums.asp.net/t/1117770.aspx&lt;/a&gt; &lt;br /&gt;&lt;a href="http://forums.asp.net/t/1169365.aspx"&gt;http://forums.asp.net/t/1169365.aspx&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq10" name="faq10"&gt;&lt;/a&gt;&lt;b&gt;10. How to manipulate AJAX Timer control on client side? [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;To manage the Timer control on client side, we need to get a reference to the client side component with $find method like this:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;blockquote&gt;&lt;span style="FONT-SIZE:9pt;COLOR:blue;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt;var&lt;/span&gt;&lt;span style="FONT-SIZE:9pt;mso-hansi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-bidi-font-family:&amp;#39;Times New Roman&amp;#39;;mso-no-proof:yes;"&gt; timer = $find(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Timer1&amp;quot;&lt;/span&gt;);&lt;/span&gt; &lt;/blockquote&gt;
&lt;p&gt;Then, we can call set_interval method to set the interval of the Timer control, _stopTimer method to stop it and _startTimer method to start it.&lt;br /&gt;Here is a sample:&amp;nbsp;&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="coloredcode"&gt;&amp;lt;&lt;span class="tag"&gt;asp:Timer&lt;/span&gt;&lt;span class="attr"&gt; ID=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Timer1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; runat=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; Interval=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;3000&amp;quot;&lt;/span&gt;&amp;gt;
&amp;lt;/&lt;span class="tag"&gt;asp:Timer&lt;/span&gt;&amp;gt;
&amp;lt;&lt;span class="tag"&gt;input&lt;/span&gt;&lt;span class="attr"&gt; id=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Button1&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; type=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; value=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;ChangeInterval&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; onclick=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;setTimer();&amp;quot;&lt;/span&gt;/&amp;gt;
&amp;lt;&lt;span class="tag"&gt;input&lt;/span&gt;&lt;span class="attr"&gt; id=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Button2&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; type=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; value=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Start&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; onclick=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;startTimer();&amp;quot;&lt;/span&gt;/&amp;gt;
&amp;lt;&lt;span class="tag"&gt;input&lt;/span&gt;&lt;span class="attr"&gt; id=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Button3&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; type=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;button&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; value=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;Stop&amp;quot;&lt;/span&gt;&lt;span class="attr"&gt; onclick=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;stopTimer();&amp;quot;&lt;/span&gt;/&amp;gt;
&amp;lt;&lt;span class="tag"&gt;script&lt;/span&gt;&lt;span class="attr"&gt; type=&lt;/span&gt;&lt;span class="attrv"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;
    function setTimer()
    {
        var timer = $find(&amp;quot;Timer1&amp;quot;);
        timer.set_interval(100);
    }
    
    function startTimer()
    {
        var timer = $find(&amp;quot;Timer1&amp;quot;);
        timer._startTimer();
    }
    
    function stopTimer()
    {
        var timer = $find(&amp;quot;Timer1&amp;quot;);
        timer._stopTimer();
    }
&amp;lt;/&lt;span class="tag"&gt;script&lt;/span&gt;&amp;gt;
&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Related threads:&lt;br /&gt;&lt;a href="http://forums.asp.net/t/1159648.aspx"&gt;http://forums.asp.net/t/1159648.aspx&lt;/a&gt; &lt;br /&gt;&lt;a href="http://forums.asp.net/t/1163431.aspx"&gt;http://forums.asp.net/t/1163431.aspx&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;a class="" title="faq11" name="faq11"&gt;&lt;/a&gt;&lt;b&gt;11. Useful Links [&lt;a class="" href="http://forums.asp.net/t/1198016.aspx#top"&gt;top&lt;/a&gt;]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Official website of AJAX Extension&lt;br /&gt;&lt;a class="" href="http://www.asp.net/AJAX/"&gt;http://www.asp.net/AJAX/ &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Documents about AJAX Extension&lt;br /&gt;&lt;a class="" href="http://www.asp.net/AJAX/documentation/"&gt;http://www.asp.net/AJAX/documentation/&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Video tutorials for AJAX&lt;br /&gt;&lt;a class="" href="http://www.asp.net/learn/AJAX-videos/"&gt;http://www.asp.net/learn/AJAX-videos/ &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AJAX Control Toolkit Project Page &lt;br /&gt;&lt;a class="" href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit"&gt;http://www.codeplex.com/Wiki/View.aspx?ProjectName=AtlasControlToolkit &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;AJAX Control Toolkit online sample&lt;br /&gt;&lt;a class="" href="http://www.asp.net/AJAX/AJAXcontroltoolkit/samples/"&gt;http://www.asp.net/AJAX/AJAXcontroltoolkit/samples/ &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How to play an Animation? &lt;br /&gt;&lt;a class="" href="http://blogs.msdn.com/phaniraj/archive/2007/04/13/animations-how-many-ways-do-i-call-thee.aspx"&gt;http://blogs.msdn.com/phaniraj/archive/2007/04/13/animations-how-many-ways-do-i-call-thee.aspx &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;How to: Re-use Animation Extenders in a page&lt;br /&gt;&lt;a class="" href="http://blogs.msdn.com/phaniraj/archive/2007/08/15/how-to-re-use-animation-extenders-in-a-page.aspx"&gt;http://blogs.msdn.com/phaniraj/archive/2007/08/15/how-to-re-use-animation-extenders-in-a-page.aspx&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;How to: Perform Operations on all instances of a AJAX Control Extender on a page&lt;br /&gt;&lt;a class="" href="http://blogs.msdn.com/phaniraj/archive/2007/08/15/how-to-re-use-animation-extenders-in-a-page.aspx"&gt;http://blogs.msdn.com/phaniraj/archive/2007/08/15/how-to-re-use-animation-extenders-in-a-page.aspx&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;How to: Use a Key Value Pair in your AutoCompleteExtender &lt;br /&gt;&lt;a class="" href="http://blogs.msdn.com/phaniraj/archive/2007/06/19/how-to-use-a-key-value-pair-in-your-autocompleteextender.aspx"&gt;http://blogs.msdn.com/phaniraj/archive/2007/06/19/how-to-use-a-key-value-pair-in-your-autocompleteextender.aspx &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Scripting Animations from the Ms AJAX AnimationExtender &lt;br /&gt;&lt;a class="" href="http://blogs.msdn.com/phaniraj/archive/2007/05/31/scripting-animations-from-the-ms-AJAX-animationextender.aspx"&gt;http://blogs.msdn.com/phaniraj/archive/2007/05/31/scripting-animations-from-the-ms-AJAX-animationextender.aspx &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;HowTo : Change Visible Tab Using JavaScript in the MS AJAX TabControl &lt;br /&gt;&lt;a class="" href="http://blogs.msdn.com/phaniraj/archive/2007/04/16/howto-change-visible-tab-using-javascript-in-the-ms-AJAX-tabcontrol.aspx"&gt;http://blogs.msdn.com/phaniraj/archive/2007/04/16/howto-change-visible-tab-using-javascript-in-the-ms-AJAX-tabcontrol.aspx&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Show and Hide ModalPopupExtender from JavaScript&lt;br /&gt;&lt;a class="" href="http://blogs.msdn.com/phaniraj/archive/2007/02/20/show-and-hide-modalpopupextender-from-javascript.aspx"&gt;http://blogs.msdn.com/phaniraj/archive/2007/02/20/show-and-hide-modalpopupextender-from-javascript.aspx&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Change ServiceMethods and Web Service for the AutoCompleteExtender From Client Side &lt;br /&gt;&lt;a class="" href="http://blogs.msdn.com/phaniraj/archive/2007/02/16/change-servicemethods-and-web-service-for-the-autocompleteextender-from-client-side.aspx"&gt;http://blogs.msdn.com/phaniraj/archive/2007/02/16/change-servicemethods-and-web-service-for-the-autocompleteextender-from-client-side.aspx&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;</description></item></channel></rss>