<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:wfw="http://wellformedweb.org/CommentAPI/"
 xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
 xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
>
<channel>
<title>Ken's Blog</title>
<description>Full Posts from Current Stories</description>
<lastBuildDate>Wed, 11 Nov 2009 18:40:57 -0400</lastBuildDate>
<link>http://www.keysolutions.com/blogs/kenyee.nsf</link>
<item><title>JQuery UI Dialog and ASP.Net button postbacks</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7XPVS6</link><description><![CDATA[ When you use JQuery UI's Dialog plugin to bring up a div as a dialog, it usually pulls the div out of the form to do this and then ASP.Net elements don't work. &nbsp;I found this clean solution to this from Ravi's Software+Usability Blog:
In your dialog ...]]></description><dc:subject>.Net</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7XPVS6</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7XPVS6</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">When you use JQuery UI's Dialog plugin to bring up a div as a dialog, it usually pulls the div out of the form to do this and then ASP.Net elements don't work. &nbsp;I found this clean solution to this from Ravi's </font><a href="http://blog.roonga.com.au/2009/07/using-jquery-ui-dialog-with-aspnet-and.html"><font size=2 color=blue face="sans-serif">Software+Usability Blog</font></a><font size=2 face="sans-serif">:</font>
<br /><font size=2 face="sans-serif">In your dialog creation code, add an open event handler:</font>
<br /><tt><font size=1>&nbsp; &nbsp; $(</font></tt><tt><font size=1 color=#a11f12>'#divDialog'</font></tt><tt><font size=1>).dialog({</font></tt>
<br /><tt><font size=1>&nbsp; &nbsp; &nbsp; bgiframe: </font></tt><tt><font size=1 color=blue>true</font></tt><tt><font size=1>, autoOpen: </font></tt><tt><font size=1 color=blue>false</font></tt><tt><font size=1>, height: 175, </font></tt>
<br /><tt><font size=1>&nbsp; &nbsp; &nbsp; width: 600, minWidth: 200, modal:
</font></tt><tt><font size=1 color=blue>true</font></tt><tt><font size=1>,</font></tt>
<br /><tt><font size=1>&nbsp; &nbsp; &nbsp; open: </font></tt><tt><font size=1 color=blue>function</font></tt><tt><font size=1>(type,data) {</font></tt>
<br /><tt><font size=1>&nbsp; &nbsp; &nbsp; &nbsp; $(</font></tt><tt><font size=1 color=blue>this</font></tt><tt><font size=1>).parent().appendTo(</font></tt><tt><font size=1 color=#a11f12>&quot;form&quot;</font></tt><tt><font size=1>);</font></tt>
<br /><tt><font size=1>&nbsp; &nbsp; &nbsp; }</font></tt>
<br /><tt><font size=1>&nbsp; &nbsp; });</font></tt>
<br /><font size=2 face="sans-serif">This will bring the ASP.Net elements back inside the form so they can post back to the ASPX page properly.</font>
<br /> ]]></content:encoded><pubDate>Wed, 11 Nov 2009 18:40:57 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=47B483BE93188F338525766B00822556</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=47B483BE93188F338525766B00822556</wfw:comment></item><item><title>ASP.Net LoadXml Doesn't Cache DTDs</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7WZQWP</link><description><![CDATA[ Seems like a bad oversight on MS' part. &nbsp;Why would you want to read the DTD each time XmlDocument.LoadXml() is called? :-P
Someone was nice enough to write a caching XML resolver so you can save your bandwidth if you use LoadXml to parse files off a web ...]]></description><dc:subject>None</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7WZQWP</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7WZQWP</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">Seems like a bad oversight on MS' part. &nbsp;Why would you want to read the DTD each time XmlDocument.LoadXml() is called? :-P</font>
<br /><font size=2 face="sans-serif">Someone was nice enough to write a caching XML resolver so you can save your bandwidth if you use LoadXml to parse files off a web site:</font>
<br />
<br /><font size=2 face="sans-serif">http://www.nablasoft.com/alkampfer/index.php/2008/05/20/xmldocument-xmlresolver-and-cache-the-schema-of-xhtml/</font>
<br />
<br /><font size=2 face="sans-serif">The actual code is:</font>
<br /><tt><font size=1 color=blue>public</font></tt><tt><font size=1> </font></tt><tt><font size=1 color=blue>class</font></tt><tt><font size=1> CachedXmlResolver : XmlUrlResolver<br />  &nbsp; &nbsp;{<br />  &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>public</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>override</font></tt><tt><font size=1> Uri ResolveUri(Uri baseUri, </font></tt><tt><font size=1 color=blue>string</font></tt><tt><font size=1> relativeUri)<br />  &nbsp; &nbsp; &nbsp; &nbsp;{<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>if</font></tt><tt><font size=1> (relativeUri == </font></tt><tt><font size=1 color=#800000>&quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;</font></tt><tt><font size=1>)<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>return</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>new</font></tt><tt><font size=1> Uri(</font></tt><tt><font size=1 color=#800000>&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;</font></tt><tt><font size=1>);<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>else</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>if</font></tt><tt><font size=1> (relativeUri == </font></tt><tt><font size=1 color=#800000>&quot;-//W3C XHTML 1.0 Transitional//EN&quot;</font></tt><tt><font size=1>)<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>return</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>new</font></tt><tt><font size=1> Uri(</font></tt><tt><font size=1 color=#800000>&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;</font></tt><tt><font size=1>);<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>else</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>if</font></tt><tt><font size=1> (relativeUri == </font></tt><tt><font size=1 color=#800000>&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</font></tt><tt><font size=1>)<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>return</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>new</font></tt><tt><font size=1> Uri(</font></tt><tt><font size=1 color=#800000>&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;</font></tt><tt><font size=1>);<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>else</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>if</font></tt><tt><font size=1> (relativeUri == </font></tt><tt><font size=1 color=#800000>&quot;-//W3C XHTML 1.0 Frameset//EN&quot;</font></tt><tt><font size=1>)<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>return</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>new</font></tt><tt><font size=1> Uri(</font></tt><tt><font size=1 color=#800000>&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd&quot;</font></tt><tt><font size=1>);<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>else</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>if</font></tt><tt><font size=1> (relativeUri == </font></tt><tt><font size=1 color=#800000>&quot;-//W3C//DTD XHTML 1.1//EN&quot;</font></tt><tt><font size=1>)<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>return</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>new</font></tt><tt><font size=1> Uri(</font></tt><tt><font size=1 color=#800000>&quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;</font></tt><tt><font size=1>);<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>return</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>base</font></tt><tt><font size=1>.ResolveUri(baseUri, relativeUri);<br />  &nbsp; &nbsp; &nbsp; &nbsp;}<br />
<br />  &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>public</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>override</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>object</font></tt><tt><font size=1> GetEntity(Uri absoluteUri, </font></tt><tt><font size=1 color=blue>string</font></tt><tt><font size=1> role, Type ofObjectToReturn)<br />  &nbsp; &nbsp; &nbsp; &nbsp;{<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>if</font></tt><tt><font size=1> (!cache.ContainsKey(absoluteUri))<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;GetNewStream(absoluteUri, role, ofObjectToReturn);<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>return</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>new</font></tt><tt><font size=1> FileStream(cache&lsqb;absoluteUri&rsqb;, FileMode.Open, FileAccess.Read, FileShare.Read);<br />  &nbsp; &nbsp; &nbsp; &nbsp;}<br />
<br />  &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>private</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>void</font></tt><tt><font size=1> GetNewStream(Uri absoluteUri, </font></tt><tt><font size=1 color=blue>string</font></tt><tt><font size=1> role, Type ofObjectToReturn) {<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>using</font></tt><tt><font size=1> (Stream stream = (Stream)</font></tt><tt><font size=1 color=blue>base</font></tt><tt><font size=1>.GetEntity(absoluteUri, role, ofObjectToReturn))<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;String filename = System.IO.Path.GetTempFileName();<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>using</font></tt><tt><font size=1> (FileStream ms = </font></tt><tt><font size=1 color=blue>new</font></tt><tt><font size=1> FileStream(filename, FileMode.Create, FileAccess.Write))<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Byte&lsqb;&rsqb; buffer = </font></tt><tt><font size=1 color=blue>new</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>byte</font></tt><tt><font size=1>&lsqb;</font></tt><tt><font size=1 color=#800080>8192</font></tt><tt><font size=1>&rsqb;;<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Int32 count = </font></tt><tt><font size=1 color=#800080>0</font></tt><tt><font size=1>;<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>while</font></tt><tt><font size=1> ((count = stream.Read(buffer, </font></tt><tt><font size=1 color=#800080>0</font></tt><tt><font size=1>, buffer.Length)) &gt; </font></tt><tt><font size=1 color=#800080>0</font></tt><tt><font size=1>)<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ms.Write(buffer, </font></tt><tt><font size=1 color=#800080>0</font></tt><tt><font size=1>, count);<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ms.Flush();<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;cache.Add(absoluteUri, filename);<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br />  &nbsp; &nbsp; &nbsp; &nbsp;}<br />
<br />  &nbsp; &nbsp; &nbsp; &nbsp;</font></tt><tt><font size=1 color=blue>public</font></tt><tt><font size=1>
</font></tt><tt><font size=1 color=blue>static</font></tt><tt><font size=1> Dictionary&lt;Uri, String&gt; cache = </font></tt><tt><font size=1 color=blue>new</font></tt><tt><font size=1> Dictionary&lt;Uri, String&gt;();<br />
<br />  &nbsp; &nbsp;}</font></tt>
<br /> ]]></content:encoded><pubDate>Tue, 20 Oct 2009 15:32:13 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=D94C89BDAC4727C985257655006B6501</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=D94C89BDAC4727C985257655006B6501</wfw:comment></item><item><title>Notes 8.5.1 includes Designer at no charge!</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7WRSSK</link><description><![CDATA[ In the early days of Notes, all the Notes clients included the &quot;Designer&quot; app that let power users create their own apps so most users could see how useful Notes was instead of having to wait for approval to get a corporate programmer to spend time ...]]></description><dc:subject>IBM&#47;Lotus</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7WRSSK</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7WRSSK</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">In the early days of Notes, all the Notes clients included the &quot;Designer&quot; app that let power users create their own apps so most users could see how useful Notes was instead of having to wait for approval to get a corporate programmer to spend time creating something. &nbsp;This way, they could prototype something they knew best about and the official developers could make it act like standard apps afterwards. &nbsp;XPages is now more complete and very usable for applications that are more web-centric. &nbsp;Check the </font><a href="http://www-01.ibm.com/software/lotus/notesanddomino/"><font size=2 color=blue face="sans-serif">Lotus site</font></a><font size=2 face="sans-serif"> for more details.</font> ]]></content:encoded><pubDate>Mon, 12 Oct 2009 17:08:01 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=EA1F53D7CD812F538525764D00742893</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=EA1F53D7CD812F538525764D00742893</wfw:comment></item><item><title>DEP/NX Breaks Older C++ ActiveX Controls in .Net 3.5 Apps (including Web Apps)</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7WMQ4Y</link><description><![CDATA[ Thought I'd write this up in case it saves someone else a few days of debugging in Windows 2008 Server. &nbsp;The cryptic error message you'll get in your Windows Forms or ASP.Net apps is &quot;Unable to get the window handle for the 'AxBlahBlah' control. ...]]></description><dc:subject>.Net</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7WMQ4Y</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7WMQ4Y</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">Thought I'd write this up in case it saves someone else a few days of debugging in Windows 2008 Server. &nbsp;The cryptic error message you'll get in your Windows Forms or ASP.Net apps is &quot;Unable to get the window handle for the 'AxBlahBlah' control. Windowless ActiveX controls are not supported.&quot; &nbsp;If you look at the stack trace a bit more, you'll find an </font><a href="http://social.msdn.microsoft.com/forums/en/clr/thread/9c36e5d3-a75c-4760-9070-5dbaf188992b"><font size=2 color=blue face="sans-serif">Access Violation (thanks to Tom Frey for that hint)</font></a><font size=2 face="sans-serif">. &nbsp;The reason for this is that some older C++ ActiveX controls that linked to MS' very own ATL libraries are not NX/DEP safe (i.e., they run code inside data segments!); </font><a href="http://blogs.msdn.com/ed_maurer/archive/2007/12/14/nxcompat-and-the-c-compiler.aspx"><font size=2 color=blue face="sans-serif">ATL versions 7.1 and earlier</font></a><font size=2 face="sans-serif"> (basically anything before Visual Studio 2005) do this funky stunt. &nbsp;So, your choice is to </font><a href="http://www.addictivetips.com/windows-tips/what-is-data-execution-prevention-dep-and-how-to-disable-it-in-windows-vista/"><font size=2 color=blue face="sans-serif">run your app w/ DEP disabled</font></a><font size=2 face="sans-serif"> or if you're lucky, you can recompile those ancient ActiveX controls which is another PITA in itself because you have to get it to compile in a later version of Visual Studio and these controls inevitably have C++ quirks.</font>
<br />
<br /><font size=2 face="sans-serif">Windows 2008 is also missing linkinfo.dll by default, so if your ActiveX control uses wininet.dll, it can't be registered until you install the Desktop Experience feature (which includes Windows Media Player, etc.) in Win2008. &nbsp;Why oh why? :-P &nbsp;At least you can uninstall that feature afterwards; the linkinfo.dll seems to stay around.</font>
<br /> ]]></content:encoded><pubDate>Sat, 10 Oct 2009 00:00:00 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=8A156213D648B1278525764900679993</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=8A156213D648B1278525764900679993</wfw:comment></item><item><title>US Patent Office Needs Revamp</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7W2P2V</link><description><![CDATA[ You'd think that after the Unisys LZW/GIF mess (where a company used a badly protected/publicized patent to blackmail other companies for blood money), the USPTO would have made changes in how they issue patents or the requirements to keep a patent invalid... ...]]></description><dc:subject>General</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7W2P2V</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7W2P2V</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">You'd think that after the Unisys LZW/GIF mess (where a company used a badly protected/publicized patent to blackmail other companies for blood money), the USPTO would have made changes in how they issue patents or the requirements to keep a patent invalid...</font> ]]></content:encoded><pubDate>Sat, 19 Sep 2009 13:56:31 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=01DCA52A9EEA3C0E852576360062AB9F</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=01DCA52A9EEA3C0E852576360062AB9F</wfw:comment></item><item><title>asp.net AJAX Bad Handling of Inline Codeblocks and Multiple Scriptmanagers</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7UQ4W7</link><description><![CDATA[ In the &quot;why did they design it this way?&quot; category:
- inline codeblocks (the &quot;&lt;%= %&gt;&quot; syntax) aren't support by MS AJAX calls but the &quot;&lt;%# %&gt;&quot; is supported for repeaters/grids for ajax calls; you have to replace the ...]]></description><dc:subject>.Net</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7UQ4W7</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7UQ4W7</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">In the &quot;why did they design it this way?&quot; category:</font>
<br /><font size=2 face="sans-serif">- inline codeblocks (the &quot;&lt;%= %&gt;&quot; syntax) aren't support by MS AJAX calls but the &quot;&lt;%# %&gt;&quot; is supported for repeaters/grids for ajax calls; you have to replace the inline codeblocks with asp:literal's</font>
<br /><font size=2 face="sans-serif">- if you have multiple ScriptManager tags on a page (e.g., a webpart or control that needs it), instead of ignoring the extra tags, asp.net has to blow up w/ an error stating it isn't allowed; you can work around this by checking whether it's on the page already by following </font><a href="http://stackoverflow.com/questions/183950/add-scriptmanager-to-page-programmatically"><font size=2 color=blue face="sans-serif">various tips</font></a><font size=2 face="sans-serif"> on it, e.g. by doing this:</font>
<br /><tt><font size=1>protected override void OnInit(EventArgs e)<br /> {<br /> &nbsp; &nbsp; Page.Init += delegate(object sender, EventArgs e_Init)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (ScriptManager.GetCurrent(Page) == null)<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScriptManager sMgr = new ScriptManager();<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Page.Form.Controls.AddAt(0, sMgr);<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;};<br /> &nbsp; &nbsp; base.OnInit(e);<br /> }</font></tt>
<br /> ]]></content:encoded><pubDate>Fri, 7 Aug 2009 22:27:23 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=D89CFEF85960E7DD8525760C000DA768</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=D89CFEF85960E7DD8525760C000DA768</wfw:comment></item><item><title>Tapestry 5.1.x is faster than Struts!</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7S3SP8</link><description><![CDATA[ This is pretty impressive because the Tapestry page life cycle is more complicated than Struts'. &nbsp;Howard has also committed to making updates to Tapestry from 5.0 backwards compatible, so 5.x is a major leap from the rip up and replace redesigns of all ...]]></description><dc:subject>Java</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7S3SP8</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7S3SP8</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">This is </font><a href="http://blog.gidley.co.uk/2009/05/tapestry-load-testing-round-up.html"><font size=2 color=blue face="sans-serif">pretty impressive</font></a><font size=2 face="sans-serif"> because the Tapestry page life cycle is more complicated than Struts'. &nbsp;Howard has also committed to making updates to Tapestry from 5.0 </font><a href="http://tapestryjava.blogspot.com/2008/10/pushing-towards-5016.html#links"><font size=2 color=blue face="sans-serif">backwards compatible</font></a><font size=2 face="sans-serif">, so 5.x is a major leap from the rip up and replace redesigns of all the previous major versions of Tapestry <img src="http://www.keysolutions.com/blogs/kenyee.nsf/2/DLYH-5MZVLY/$FILE/smile.gif"></font> ]]></content:encoded><pubDate>Fri, 15 May 2009 17:02:38 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=1C2ECC66B8D68DAB852575B700739E1E</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=1C2ECC66B8D68DAB852575B700739E1E</wfw:comment></item><item><title>Fix for Disappearing Windows XP/Vista Multiple User Logon Screen</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7RNHQJ</link><description><![CDATA[ I thought my system was just corrupted but it turns out this is a &quot;feature&quot; of installing VMWare Server. &nbsp;It replaces the MS GINA (Graphical Identification and Authentication) DLL with its own so that it can stop/start VMWare machines on ...]]></description><dc:subject>Windows</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7RNHQJ</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7RNHQJ</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">I thought my system was just corrupted but it turns out this is a &quot;</font><a href=http://communities.vmware.com/thread/165611><font size=2 color=blue face="sans-serif">feature</font></a><font size=2 face="sans-serif">&quot; of installing VMWare Server. &nbsp;It replaces the MS GINA (Graphical Identification and Authentication) DLL with its own so that it can stop/start VMWare machines on startup/shutdown. &nbsp;There's a </font><a href=http://support.microsoft.com/kb/302346><font size=2 color=blue face="sans-serif">MS KB article</font></a><font size=2 face="sans-serif"> on this if you want to disable VMWare's GINA DLL, but you'll have to start/stop VMWare machines yourself if you do this.</font> ]]></content:encoded><pubDate>Sat, 2 May 2009 09:23:58 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=0E861C41514CD6B0852575AA0049BF58</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=0E861C41514CD6B0852575AA0049BF58</wfw:comment></item><item><title>Gitzo Systematic Bad Plate Locking Design</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7QC4M3</link><description><![CDATA[ Looks like there's been a spate of photographers losing equipment from this Gitzo &quot;feature&quot;, so I thought I'd warn about it as well. &nbsp;It mainly affects you if you sling a big lens over your shoulder while the camera is on a Systematic tripod. ...]]></description><dc:subject>Photography</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7QC4M3</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7QC4M3</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">Looks like there's been a spate of photographers losing equipment from this Gitzo &quot;feature&quot;, so I thought I'd warn about it as well. &nbsp;It mainly affects you if you sling a big lens over your shoulder while the camera is on a Systematic tripod. &nbsp;Threads on this:</font>
<br /><font size=2 face="sans-serif">http://www.birdphotographers.net/forums/showthread.php?p=229545</font>
<br /><font size=2 face="sans-serif">http://www.naturescapes.net/phpBB3/viewtopic.php?f=1&amp;t=140837</font>
<br /><font size=2 face="sans-serif">http://www.naturescapes.net/phpBB3/viewtopic.php?f=1&amp;t=131075&amp;start=60</font>
<br />
<br /><font size=2 face="sans-serif">Naturescapes came up w/ a $70 solution to prevent this from happening:</font>
<br /><font size=2 face="sans-serif">http://www.naturescapes.net/store/product.php?productid=453</font>
<br /> ]]></content:encoded><pubDate>Fri, 20 Mar 2009 22:12:50 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=1857F5C6CB85A18785257580000C4776</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=1857F5C6CB85A18785257580000C4776</wfw:comment></item><item><title>AJAX busy/loading Icon Generator</title><link>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7PZTJN</link><description><![CDATA[ Want your own animated AJAX &quot;busy&quot; icon in a custom color? &nbsp;I found this cool Ajaxload generator page :-) ...]]></description><dc:subject>Web</dc:subject><dc:creator>Ken K. Yee</dc:creator><comments>http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7PZTJN</comments><guid isPermaLink="true">http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-7PZTJN</guid><content:encoded><![CDATA[ <font size=2 face="sans-serif">Want your own animated AJAX &quot;busy&quot; icon in a custom color? &nbsp;I found this cool </font><a href=http://www.ajaxload.info><font size=2 color=blue face="sans-serif">Ajaxload generator page</font></a><font size=2 face="sans-serif"> <img src="http://www.keysolutions.com/blogs/kenyee.nsf/2/DLYH-5MZVLY/$FILE/smile.gif"></font> ]]></content:encoded><pubDate>Tue, 10 Mar 2009 17:46:35 -0400</pubDate><slash:comments>0</slash:comments><wfw:commentRss>http://www.keysolutions.com/blogs/kenyee.nsf/CommentsRSS?Open&amp;id=08052B684920224F852575750077B5E5</wfw:commentRss><wfw:comment>http://www.keysolutions.com/blogs/kenyee.nsf/PostComment?RunAgent&amp;id=08052B684920224F852575750077B5E5</wfw:comment></item></channel>
</rss>
