<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>Atlas</title>
        <link>http://geekswithblogs.net/jonasb/category/3943.aspx</link>
        <description>Posts about Microsoft's Atlas framework.</description>
        <language>en-US</language>
        <copyright>Jonas Bush</copyright>
        <managingEditor>jonasbush@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Using Atlas to act as a check on javascript calls</title>
            <link>http://geekswithblogs.net/jonasb/archive/2006/08/16/88185.aspx</link>
            <description>&lt;FONT size=2&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;One of the things I've been working on is how to use Atlas web services to verify actions on the server. So the client requests to perform a particular action on the server, and if they don't have access to perform that action or the action fails (because a database is down, or something along those lines), I don't want the method on the client to continue executing.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;The problem with that is that Atlas web service calls are asynchronous by nature (explained &lt;A href="http://weblogs.asp.net/bleroy/archive/2005/12/01/432031.aspx"&gt;here&lt;/A&gt; and &lt;A href="http://weblogs.asp.net/bleroy/archive/2005/12/15/433278.aspx"&gt;here&lt;/A&gt;). So I can't say something like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;if(myService.myServiceCall() == true)&lt;BR&gt;{&lt;BR&gt;  //do stuff&lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;What I've come up with is this javascript object:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;function&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; webServiceRunner(webServiceFunction, returnFunction, returnParams)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;{&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;var&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; _returnFunction = returnFunction;&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;var&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; _returnParams = returnParams;&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;var&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; _webServiceFunction = webServiceFunction;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;  this&lt;/FONT&gt;&lt;FONT size=2&gt;.runService = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;function&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;()&lt;BR&gt;  &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;{&lt;BR&gt;    &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;_webServiceFunction(onServiceComplete);&lt;BR&gt;  &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;  function&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; onServiceComplete(result)&lt;BR&gt;  &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;{&lt;BR&gt;    &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;var&lt;/FONT&gt;&lt;FONT size=2&gt; r = &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'_returnFunction('&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;;&lt;BR&gt;    &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;for&lt;/FONT&gt;&lt;FONT size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;var&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; i = 0; i &lt; _returnParams.length; i++)&lt;BR&gt;    &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;{&lt;BR&gt;      &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;r += &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#ff0000 size=2&gt;'_returnParams['&lt;/FONT&gt;&lt;FONT size=2&gt; + i.toString() + &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;']'&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;;&lt;BR&gt;      &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;(i &lt; returnParams.length - 1)&lt;BR&gt;        &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;r += &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;','&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;;&lt;BR&gt;    &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;}&lt;BR&gt;    &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;r += &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;', result);'&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;;&lt;BR&gt;    &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;FONT face="Courier New"&gt;//alert(r);&lt;BR&gt;    &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;eval(r);&lt;BR&gt;  &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;This takes advantage of some of the nice (and dangerous) features of Javascript, the &lt;FONT face="Courier New"&gt;eval()&lt;/FONT&gt; statement, the &lt;FONT face="Courier New"&gt;arguments&lt;/FONT&gt; object, and function pointers. &lt;FONT face="Courier New"&gt;Eval()&lt;/FONT&gt; will let you create a string, like &lt;FONT face="Courier New"&gt;var s = 'alert(&amp;#8220;hi&amp;#8220;);';&lt;/FONT&gt; - and then call &lt;FONT face="Courier New"&gt;eval(s);&lt;/FONT&gt; - the end result of which will be &amp;#8220;Hi&amp;#8220; showing up in an alert box. The &lt;FONT face="Courier New"&gt;arguments&lt;/FONT&gt; object is created automatically for you in javascript inside of any function, and contains an array of all the arguments passed into that function.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;So now I can instantiate and call this class like so:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#800000 size=2&gt;span&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;class&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="CommandLink"&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;onclick&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="testOne(this);"&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;Test&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;span&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;function&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; testOne(sender, result)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;{&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;(result == undefined)&lt;BR&gt;  &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;{&lt;BR&gt;    &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;var&lt;/FONT&gt;&lt;FONT size=2&gt; sr = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; webServiceRunner(TestWebService.HasAccess, testOne, arguments);&lt;BR&gt;    &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;sr.runService();&lt;BR&gt;    &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;;&lt;BR&gt;  &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;}&lt;BR&gt;&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;if&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;(result)&lt;BR&gt;  &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;{&lt;BR&gt;  &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;}&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="Courier New"&gt;else&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;{&lt;BR&gt;    &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;alert(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#ff0000 size=2&gt;'sorry, you are unable to perform that action'&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;);&lt;BR&gt;  &lt;/FONT&gt;&lt;FONT face="Courier New"&gt;}&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Assuming I have a webservice defined, as well as the proper Atlas script manager setup: &lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Verdana&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;atlas&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;:&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;scriptmanager&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;id&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="scriptManager"&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;runat&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="server"&gt;&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;services&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&gt;&lt;BR&gt;    &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&lt;&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;atlas&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;:&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;servicereference&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;path&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;="TestWebService.asmx"&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;/&gt;&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;services&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;atlas&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;:&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;scriptmanager&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;[&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#008080 size=2&gt;WebMethod&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;]&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;bool&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; HasAccess()&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;{&lt;BR&gt;  &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;return&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;false&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;What ends up happening inside the webServiceRunner is that the following string will be created:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;_returnFunction(_returnParams[0], result);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;Then that string is eval-ed, and my original testOne function is called, with the original sender object (from the original click), and the result parameter from the web service.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;FONT face=Verdana&gt;If this is confusing, post a comment or send me an email and I'll try and elaborate further. If you think this is silly or useless, leave a comment and explain why. :)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt; &lt;/P&gt;&lt;/FONT&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=88185"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=88185" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jonasb/aggbug/88185.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonas Bush</dc:creator>
            <guid>http://geekswithblogs.net/jonasb/archive/2006/08/16/88185.aspx</guid>
            <pubDate>Wed, 16 Aug 2006 21:48:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jonasb/comments/88185.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jonasb/archive/2006/08/16/88185.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jonasb/comments/commentRss/88185.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jonasb/services/trackbacks/88185.aspx</trackback:ping>
        </item>
        <item>
            <title>Repeaters, Checkboxes and UpdatePanels, Oh My!</title>
            <link>http://geekswithblogs.net/jonasb/archive/2006/05/08/77624.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I was working on some sample stuff that I'll be posting later and ran into a problem. I had 2 different update panels; inside one was just a div, inside the other one was a repeater. Inside the repeater I had a bunch of checkboxes, and when I checked/unchecked them, I needed the first update panel to be updated. This posed a couple of problems:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;A checkbox doesn't have a CommandName property, and can't be used to trigger a Repeater's ItemCommand event&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;This I got around by declaring the event handler for the checkbox in the markup: &lt;FONT face="Courier New"&gt;OnCheckedChanged=&amp;#8221;myCB_OnCheckedChanged&amp;#8221;&lt;/FONT&gt;, and in the event handler I can cast the sender argument to a checkbox. The other problem:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;An UpdatePanel's list of triggers can't include a control that's inside a template&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Which means I can't say &lt;FONT face="Courier New"&gt;&amp;lt;atlas:ControlEventTrigger ControlID=&amp;#8221;myCB&amp;#8221; EventName=&amp;#8221;myCB_OnCheckedChanged&amp;#8221; /&amp;gt;&lt;/FONT&gt;, since myCB doesn't actually exist at runtime. Instead, in myCB_OnCheckedChanged, I can just say: &lt;FONT face="Courier New"&gt;updatePanel1.Update();&lt;/FONT&gt; and everything works fine.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Hope this helps...&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=77624"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=77624" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jonasb/aggbug/77624.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonas Bush</dc:creator>
            <guid>http://geekswithblogs.net/jonasb/archive/2006/05/08/77624.aspx</guid>
            <pubDate>Mon, 08 May 2006 21:08:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jonasb/comments/77624.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jonasb/archive/2006/05/08/77624.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jonasb/comments/commentRss/77624.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jonasb/services/trackbacks/77624.aspx</trackback:ping>
        </item>
        <item>
            <title>Atlas and JSON</title>
            <link>http://geekswithblogs.net/jonasb/archive/2006/04/03/74196.aspx</link>
            <description>&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;I just finished up some code that uses some other functionality of atlas.&amp;nbsp; To sum up: Whoa! This may be available in AJAX.net or some of the other frameworks, but I was amazed at how easy this was:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;I have a web service that returns a class, like so:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;public class MyClass&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; public string MyString;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; public int MyInt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;[WebMethod(true)]&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;public MyClass MyWebMethod()&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; //init MyClass here&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; MyClass myClass = new MyClass();&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; return myClass;&lt;BR&gt;}&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;the beauty of it is, I have access to those fields in my javascript:&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;function callWS()&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;&amp;nbsp; MyWebService.MyWebMethod(onComplete);&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;}&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;function onComplete(result)&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face="Courier New" size=2&gt;{&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;&lt;FONT face="Courier New"&gt;&amp;nbsp; alert(result.MyString);&lt;BR&gt;}&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;Very very very very cool :)&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=74196"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=74196" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jonasb/aggbug/74196.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonas Bush</dc:creator>
            <guid>http://geekswithblogs.net/jonasb/archive/2006/04/03/74196.aspx</guid>
            <pubDate>Mon, 03 Apr 2006 21:10:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jonasb/comments/74196.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jonasb/archive/2006/04/03/74196.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jonasb/comments/commentRss/74196.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jonasb/services/trackbacks/74196.aspx</trackback:ping>
        </item>
        <item>
            <title>Success!</title>
            <link>http://geekswithblogs.net/jonasb/archive/2006/02/15/69634.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;After struggling with Atlas for awhile, we finally released our latest feature on &lt;A href="http://www.squeet.com"&gt;http://www.squeet.com&lt;/A&gt;. The new &amp;#8220;Preview&amp;#8220; functionality uses the Atlas UpdatePanel to display the 5 latest entries for any blog you enter. It will by default show only a summary of the item, but you can click on the &amp;#8220;expand&amp;#8220; link to show the full HTML content for the entry. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;The UpdatePanel is surrounding a standard ASP.Net repeater control, which contains some LinkButtons. The UpdatePanel responds to the RowCommand event raised by the repeater, and all the code to handle the event is normal code-behind code. The Atlas portion of this portion was very easy to implement (once I got away from using the WebService calls directly, those don't seem to be fully mature yet).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG alt=preview src="/images/geekswithblogs_net/jonasb/3984/o_squeetpreview.PNG"&gt;&lt;/P&gt;

&lt;!-- whYjw35CIKHVZcb --&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69634"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69634" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jonasb/aggbug/69634.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonas Bush</dc:creator>
            <guid>http://geekswithblogs.net/jonasb/archive/2006/02/15/69634.aspx</guid>
            <pubDate>Wed, 15 Feb 2006 18:18:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jonasb/comments/69634.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jonasb/archive/2006/02/15/69634.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jonasb/comments/commentRss/69634.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jonasb/services/trackbacks/69634.aspx</trackback:ping>
        </item>
        <item>
            <title>Atlas, Viewstate, IE and FF.</title>
            <link>http://geekswithblogs.net/jonasb/archive/2006/02/13/69327.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;In my &lt;A href="http://geekswithblogs.net/jonasb/archive/2006/02/12/AtlasJanCTPIssues.aspx"&gt;inaugural post&lt;/A&gt;, I described a problem I had with a WebMethod erroring out instantly on the client, accompanied by a puzzling message in the Event Log, regarding viewstate.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;On a whim, on that site, I decided to &amp;#8220;publish&amp;#8221; the website from within VS 2005 to a separate directory.&amp;nbsp; I set up another virtual directory within IIS to point to that directory, loaded up the site and IE, and all my WebMethod calls were working!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;From IE6, that is.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;From FireFox, none of the calls work on the published website....&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;...the first time. If I click on the link that calls the WebMethod again (after getting the instant error), it works fine. Very weird.&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69327"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69327" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jonasb/aggbug/69327.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonas Bush</dc:creator>
            <guid>http://geekswithblogs.net/jonasb/archive/2006/02/13/69327.aspx</guid>
            <pubDate>Mon, 13 Feb 2006 14:47:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jonasb/comments/69327.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jonasb/archive/2006/02/13/69327.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jonasb/comments/commentRss/69327.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jonasb/services/trackbacks/69327.aspx</trackback:ping>
        </item>
        <item>
            <title>Putting the hair back in.</title>
            <link>http://geekswithblogs.net/jonasb/archive/2006/02/13/69319.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;In &lt;A href="http://geekswithblogs.net/jonasb/archive/2006/02/12/69212.aspx"&gt;this post&lt;/A&gt;, I mentioned tearing my hear out because I couldn't get a gridview to work right with the update panel. Today I decided to just start on a fresh web form and everything seems to be working fine.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I did learn that an updatepanel without any triggers will consume any server-side event that fires inside of it (ie, to get paging and sorting working you don't need to explicitly specify triggers to handle those events). I also learned that (and this isn't related to Atlas) a gridview's page and sort events also fire off RowCommand events...which I guess make sense since the header is a &amp;#8220;row&amp;#8221; and the pager thing is also a &amp;#8220;row&amp;#8221;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Still trying to figure out the updatePanel inside of a userControl thing figured out, I'll keep you posted.&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69319"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69319" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jonasb/aggbug/69319.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonas Bush</dc:creator>
            <guid>http://geekswithblogs.net/jonasb/archive/2006/02/13/69319.aspx</guid>
            <pubDate>Mon, 13 Feb 2006 14:07:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jonasb/comments/69319.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jonasb/archive/2006/02/13/69319.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jonasb/comments/commentRss/69319.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jonasb/services/trackbacks/69319.aspx</trackback:ping>
        </item>
        <item>
            <title>Tearing my hear out, bit by bit.</title>
            <link>http://geekswithblogs.net/jonasb/archive/2006/02/12/69212.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Ok, I'm about to have a nervous breakdown and need to post this, and then walk away for a bit.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I have a gridview on a page, that looks like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;asp:gridview id="gvTest" runat="server" allowpaging="true" allowsorting="true" autogeneratecolumns="false" pagesize="5" onpageindexchanging="gvTest_PageIndexChanging" onrowcommand="gvTest_RowCommand" onsorting="gvTest_Sorting" enablesortingandpagingcallbacks="false"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;columns&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;asp:boundfield datafield="Id" headertext="Id" sortexpression="Id" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;asp:boundfield datafield="Name" headertext="Name" sortexpression="Name" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;asp:templatefield headertext="Preview"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;itemtemplate&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;asp:linkbutton id="linkPreview" runat="server" commandname="Preview" commandargument='&amp;lt;%#(int)DataBinder.Eval(Container.DataItem, "Id") %&amp;gt;' text="Preview" /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/itemtemplate&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/asp:templatefield&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/columns&amp;gt;&lt;BR&gt;&amp;lt;/asp:gridview&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I have an UpdatePanel that has triggers like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;&amp;lt;triggers&amp;gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;lt;atlas:controleventtrigger controlid="gvTest" eventname="RowCommand" /&amp;gt;&lt;BR&gt;&amp;lt;/triggers&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Why then, when I sort&amp;nbsp;or page the gridview, does the updatepanel swallow my postback, but when I click the linkbutton that says preview, do I get a postback?&lt;/FONT&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69212"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69212" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jonasb/aggbug/69212.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonas Bush</dc:creator>
            <guid>http://geekswithblogs.net/jonasb/archive/2006/02/12/69212.aspx</guid>
            <pubDate>Sun, 12 Feb 2006 17:07:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jonasb/comments/69212.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jonasb/archive/2006/02/12/69212.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jonasb/comments/commentRss/69212.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jonasb/services/trackbacks/69212.aspx</trackback:ping>
        </item>
        <item>
            <title>Atlas - Jan CTP issues</title>
            <link>http://geekswithblogs.net/jonasb/archive/2006/02/12/AtlasJanCTPIssues.aspx</link>
            <description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I've been playing around with &lt;A href="http://atlas.asp.net/"&gt;Atlas&lt;/A&gt; since the Jan CTP dropped a couple days ago. It's got some impressive functionality, as well as some (seemingly) glaring oversights. One of the things I'm trying to do is incorporate an UpdatePanel inside of a UserControl. I need the UpdatePanel to have a trigger that's on the containing page, but I can't get it to work. I've tried the following (on the containing page):&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;protected&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;override&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; OnPreInit(&lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;EventArgs&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt; e)&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;{&lt;/FONT&gt; &lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#008080 size=2&gt;ControlEventTrigger&lt;/FONT&gt;&lt;FONT size=2&gt; t = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#008080 size=2&gt;ControlEventTrigger&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;();&lt;/FONT&gt; &lt;BR&gt;&lt;FONT face="Courier New"&gt;t.ControlID = &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;this&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;.linkGetFeedPreview.ID;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;t.EventName = &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#800000 size=2&gt;"Click"&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;;&lt;/FONT&gt;&lt;BR&gt;&lt;FONT face="Courier New"&gt;previewControl.UpdatePanel.Triggers.Add(t);&lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;base&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="Courier New"&gt;.OnPreInit(e);&lt;BR&gt;}&lt;/FONT&gt; &lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;I've also tried putting this code in OnInit, and have had no luck. I always get the error message &lt;EM&gt;The ControlID property of the trigger must reference a valid control.&lt;/EM&gt; Has anyone else tried this and gotten it to work.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;
&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Another issue I've been having is that calls to a WebMethod in my page class aren't always executing. The javascript is: PageMethods.SomeMethodName(blah, onComplete, onTimeout, onError);.&amp;nbsp; Many times when I execute that javascript, the error method immediately executes, and in the event viewer on that machine I'll see the following:&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=1&gt;
&lt;P&gt;Event code: 4009 &lt;/P&gt;
&lt;P&gt;Event message: Viewstate verification failed. Reason: Viewstate was invalid. &lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Google has proven useless thus far. Anyone have any thoughts?&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69207"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=69207" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jonasb/aggbug/69207.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jonas Bush</dc:creator>
            <guid>http://geekswithblogs.net/jonasb/archive/2006/02/12/AtlasJanCTPIssues.aspx</guid>
            <pubDate>Sun, 12 Feb 2006 16:13:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jonasb/comments/69207.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jonasb/archive/2006/02/12/AtlasJanCTPIssues.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jonasb/comments/commentRss/69207.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jonasb/services/trackbacks/69207.aspx</trackback:ping>
        </item>
    </channel>
</rss>