<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3744483557142165086</atom:id><lastBuildDate>Wed, 09 Jun 2010 19:04:53 +0000</lastBuildDate><title>Tips &amp; Tricks</title><description>ASP.NET,VB.NET, C#, AJAX, SQL SERVER, SSIS Tips and Tricks</description><link>http://www.dotnet-tips.com/</link><managingEditor>noreply@blogger.com (stanley)</managingEditor><generator>Blogger</generator><openSearch:totalResults>130</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/blogspot/eLLW" /><feedburner:info uri="blogspot/ellw" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-6788021823568795405</guid><pubDate>Thu, 29 Apr 2010 21:25:00 +0000</pubDate><atom:updated>2010-04-30T14:08:50.700-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Web services</category><category domain="http://www.blogger.com/atom/ns#">asp.net  and ajax</category><title>Using ASP.NET Caching with SQL Server</title><description>&lt;span xmlns=""&gt;&lt;p&gt;Using ASP.NET Caching with SQL Server&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;strong&gt;Enabling Cache Notification for SQL Server&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul style="margin-left: 72pt;"&gt;&lt;li&gt;On the Windows &lt;strong&gt;Start&lt;/strong&gt; menu, point to &lt;strong&gt;All Programs&lt;/strong&gt;, point to &lt;strong&gt;Accessories&lt;/strong&gt;, and then click &lt;strong&gt;Command Prompt&lt;/strong&gt; to open a command prompt window.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style="margin-left: 72pt;"&gt;&lt;li&gt;Locate the Aspnet_regsql.exe executable file on your disk drive. This file is installed with the .NET Framework version 2.0 in the following location:&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="background: none repeat scroll 0% 0% rgb(221, 221, 221);"&gt;               %windir%\Microsoft.NET\Framework\FrameworkVersion&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 72pt;"&gt;Be sure that %windir% represents your Windows directory and that the .NET Framework version is 2.0 or later. The path might look like the following:&lt;br /&gt;&lt;/p&gt;&lt;p style="background: none repeat scroll 0% 0% rgb(221, 221, 221); margin-left: 36pt;"&gt;        C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217&lt;br /&gt;&lt;/p&gt;&lt;p style="background: none repeat scroll 0% 0% rgb(221, 221, 221); margin-left: 36pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style="margin-left: 72pt;"&gt;&lt;li&gt;Use the following command to enable cache notification for the dimProductCategory table in the AdventureWorksDW database:&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="background: none repeat scroll 0% 0% rgb(221, 221, 221);"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="background: none repeat scroll 0% 0% rgb(221, 221, 221); margin-left: 36pt;"&gt;aspnet_regsql.exe -S &amp;lt;Server&amp;gt; -U &amp;lt;Username&amp;gt; -P &amp;lt;Password&amp;gt; -ed -d AdventureWorksDW -et –t dimProductCategory&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;strong&gt;Configuring the Web Page for Caching&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;p style="background: none repeat scroll 0% 0% rgb(221, 221, 221);"&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&amp;lt;%@ OutputCache Duration="3600" SqlDependency="&lt;/span&gt; AdventureWorksDW&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;:&lt;/span&gt; DimProductCategory&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;" VaryByParam="none" %&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;strong&gt;Setting Caching Configuration in the Web.config File&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;Add the following XML to the Web.config file as a child of the &lt;strong&gt;system.web&lt;/strong&gt; element:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&amp;lt;!-- caching section group --&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;caching&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;sqlCacheDependency&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style="color:red;"&gt;enabled&lt;/span&gt;&lt;span style="color:blue;"&gt; = &lt;/span&gt;"&lt;span style="color:blue;"&gt;true&lt;/span&gt;"&lt;span style="color:blue;"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style="color:red;"&gt;pollTime&lt;/span&gt;&lt;span style="color:blue;"&gt; = &lt;/span&gt;"&lt;span style="color:blue;"&gt;1000&lt;/span&gt;"&lt;span style="color:blue;"&gt; &amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;databases&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;add&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;AdventureWorksDW&lt;/span&gt;"&lt;span style="color:blue;"&gt;                         &lt;/span&gt;&lt;span style="color:red;"&gt;connectionStringName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;AdventureWorksDWConnectionString&lt;/span&gt;"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;                             &lt;/span&gt;&lt;span style="color:red;"&gt;pollTime&lt;/span&gt;&lt;span style="color:blue;"&gt; = &lt;/span&gt;"&lt;span style="color:blue;"&gt;1000&lt;/span&gt;"&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;databases&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;sqlCacheDependency&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;caching&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;            &lt;/span&gt;&lt;br /&gt;    &lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;strong&gt;To configure application-level caching&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt; caching section group &lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;caching&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;outputCacheSettings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;outputCacheProfiles&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;add&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;AppCache1&lt;/span&gt;"&lt;span style="color:blue;"&gt;&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:red;"&gt;enabled&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;true&lt;/span&gt;"&lt;span style="color:blue;"&gt;&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:red;"&gt;duration&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;60&lt;/span&gt;"&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;outputCacheProfiles&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;outputCacheSettings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;caching&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;&lt;strong&gt;Add the OutputCache into the page&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;&amp;lt;%@ OutputCache CacheProfile="AppCache1" VaryByParam="none" %&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;The sqlDependency table can also specify in the web config as below:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;    &amp;lt;!--&lt;/span&gt;&lt;span style="color:green;"&gt; caching section group &lt;/span&gt;&lt;span style="color:blue;"&gt;--&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;caching&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;        &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;outputCacheSettings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;            &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;outputCacheProfiles&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;                &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;add&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;AppCache1&lt;/span&gt;"&lt;span style="color:blue;"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style="color:red;"&gt;enabled&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;true&lt;/span&gt;"&lt;span style="color:blue;"&gt;                             &lt;/span&gt;&lt;span style="color:red;"&gt;sqlDependency&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;AdventureWorksDW:DimProductCategory&lt;/span&gt;"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;                                 &lt;/span&gt;&lt;span style="color:red;"&gt;duration&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;60&lt;/span&gt;"&lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;            &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;outputCacheProfiles&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;        &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;outputCacheSettings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;&lt;span style="color:blue;"&gt;    &amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;caching&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:blue;"   &gt;         &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;&lt;strong&gt;Cache the data object&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;The sample codes below can set up the SqlCacheDependency with the tables or the sql queries&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;// Declare the SqlCacheDependency instance, SqlDep.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;        SqlCacheDependency SqlDep = null;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;        // Check the Cache for the SqlSource key.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;        // If it isn't there, create it with a dependency&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;        // on a SQL Server table using the SqlCacheDependency class.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;        if (Cache["SqlSource"] == null)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;        {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // Because of possible exceptions thrown when this&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // code runs, use Try...Catch...Finally syntax.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            try&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                // Instantiate SqlDep using the SqlCacheDependency constructor.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                SqlDep = new SqlCacheDependency("AdventureWorksDW", "DimProductCategory");&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // Handle the DatabaseNotEnabledForNotificationException with&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // a call to the SqlCacheDependencyAdmin.EnableNotifications method.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            catch (DatabaseNotEnabledForNotificationException exDBDis)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                try&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                    SqlCacheDependencyAdmin.EnableNotifications("AdventureWorksDW");&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                // If the database does not have permissions set for creating tables,&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                // the UnauthorizedAccessException is thrown. Handle it by redirecting&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                // to an error page.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                catch (UnauthorizedAccessException exPerm)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                    throw new Exception(exPerm.Message, exPerm);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // Handle the TableNotEnabledForNotificationException with&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // a call to the SqlCacheDependencyAdmin.EnableTableForNotifications method.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            catch (TableNotEnabledForNotificationException exTabDis)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                try&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                    SqlCacheDependencyAdmin.EnableTableForNotifications("Northwind", "Categories");&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                // If a SqlException is thrown, redirect to an error page.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                catch (SqlException exc)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                    throw new Exception(exc.Message, exc);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // If all the other code is successful, add MySource to the Cache&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // with a dependency on SqlDep. If the Categories table changes,&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // MySource will be removed from the Cache. Then generate a message&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            // that the data is newly created and added to the cache.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            finally&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                Cache.Insert("SqlSource", this.SqlDataSource1, SqlDep);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;                //The data object was created explicitly;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;        }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;        else&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;        {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:black;"   &gt;            //The data was retrieved from the Cache;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;&lt;span style=";font-family:Courier New;font-size:10pt;"  &gt;    }&lt;span style="color:blue;"&gt;&lt;br /&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;3.&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Multiple Table Dependencies&lt;/p&gt;&lt;/span&gt;&lt;pre class="coloredcode"&gt;SqlCacheDependency&lt;br /&gt;  dep1 = &lt;span class="kwd"&gt;new&lt;/span&gt; SqlCacheDependency (&lt;span class="st"&gt;"MyDb"&lt;/span&gt;, &lt;span class="st"&gt;"Users"&lt;/span&gt;),&lt;br /&gt;  dep2 = &lt;span class="kwd"&gt;new&lt;/span&gt; SqlCacheDependency (&lt;span class="st"&gt;"MyDb"&lt;/span&gt;, &lt;span class="st"&gt;"UserRoles"&lt;/span&gt;),&lt;br /&gt;  dep3 = &lt;span class="kwd"&gt;new&lt;/span&gt; SqlCacheDependency (&lt;span class="st"&gt;"MyDb"&lt;/span&gt;, &lt;span class="st"&gt;"Policies"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;AggregateCacheDependency aggDep = &lt;span class="kwd"&gt;new&lt;/span&gt; AggregateCacheDependency ();&lt;br /&gt;aggDep.Add (dep1, dep2, dep3);&lt;br /&gt;&lt;br /&gt;Cache.Insert (&lt;span class="st"&gt;"SomeKey"&lt;/span&gt;, someData, aggDep);&lt;/pre&gt;&lt;span xmlns=""&gt;&lt;p style="margin-left: 36pt;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-left: 36pt;"&gt;&lt;span style=";font-family:Courier New;font-size:10pt;color:blue;"   &gt;&lt;br /&gt;    &lt;/span&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-6788021823568795405?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/6q_Wi-KDMfY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/6q_Wi-KDMfY/using-aspnet-caching-with-sql-server.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2010/04/using-aspnet-caching-with-sql-server.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-7470984680444984366</guid><pubDate>Thu, 29 Apr 2010 16:57:00 +0000</pubDate><atom:updated>2010-04-29T09:57:46.305-07:00</atom:updated><title>Create a SQL cache dependecy using a custom (non-dbo) schema</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman'&gt;&lt;span style='font-size:10pt'&gt;The store procedure "&lt;strong&gt;AspNet_SqlCacheRegisterTableStoredProcedure"&lt;/strong&gt;  'enables' change notification on the table you specify (in simpler terms, it just creates a trigger on the table you specify)&lt;/span&gt;&lt;span style='font-size:12pt'&gt;&lt;br /&gt;					&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:10pt'&gt;This procedure has the dbo schema hardcoded in it &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:10pt'&gt;&lt;strong&gt;&lt;span style='color:blue'&gt;SET&lt;/span&gt; @fullTriggerName &lt;span style='color:gray'&gt;=&lt;/span&gt;&lt;br /&gt;						&lt;span style='color:red'&gt;'dbo.['&lt;/span&gt;&lt;br /&gt;						&lt;span style='color:gray'&gt;+&lt;/span&gt; @triggerName &lt;span style='color:gray'&gt;+&lt;/span&gt;&lt;br /&gt;						&lt;span style='color:red'&gt;']&lt;/span&gt;&lt;/strong&gt;' &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:10pt'&gt;Just tweaked this portion of the procedure to extract the Schema Name specified by the user and use that to create the trigger rather than the hardcoded 'dbo'. The modified stored proc is below. You can alter the procedure on your database instance and you are all set. Ofcourse, I find similar hardcoding of 'dbo' in the procedure &lt;strong&gt;AspNet_SqlCacheUnRegisterTableStoredProcedure, &lt;/strong&gt;which is responsible for disabling notifications on your table, so you will need to tweak it a bit to make unregistration work. &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:10pt'&gt;-- ===========================================================================================&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;USE [TestDB]&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;GO&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;/****** Object:  StoredProcedure [dbo].[AspNet_SqlCacheRegisterTableStoredProcedure]    Script Date: 04/18/2008 16:05:31 ******/&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;SET ANSI_NULLS ON&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;GO&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;SET QUOTED_IDENTIFIER ON&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;GO&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;ALTER PROCEDURE [dbo].[AspNet_SqlCacheRegisterTableStoredProcedure] &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;             @tableName NVARCHAR(450) &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         AS&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         BEGIN&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         DECLARE @triggerName AS NVARCHAR(3000) &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         DECLARE @fullTriggerName AS NVARCHAR(3000)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         DECLARE @canonTableName NVARCHAR(3000) &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         DECLARE @quotedTableName NVARCHAR(3000) &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;--Vivek Start --Added A&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;         DECLARE @schemaName NVARCHAR(3000)&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;        IF(CHARINDEX('.',@tableName) &amp;lt;&amp;gt; 0) &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;        BEGIN&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;            SET @schemaName = SUBSTRING(@tableName,0,CHARINDEX('.',@tableName))&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;            SET @tableName =  SUBSTRING(@tableName,CHARINDEX('.',@tableName) + 1,LEN(@tableName) - CHARINDEX('.',@tableName))&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;        END&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;--Vivek END A&lt;/strong&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;        &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         /* Create the trigger name */ &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         SET @triggerName = REPLACE(@tableName, '[', '__o__') &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         SET @triggerName = REPLACE(@triggerName, ']', '__c__') &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         SET @triggerName = @triggerName + '_AspNet_SqlCacheNotification_Trigger' &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;         --Vivek Commented --SET @fullTriggerName = 'dbo[' + @triggerName + ']' &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;         IF(@schemaName IS NOT NULL)&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;            SET @fullTriggerName ='[' + @schemaName + '].[' + @triggerName + ']' &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;         ELSE&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;            SET @fullTriggerName = 'dbo.[' + @triggerName + ']'&lt;/strong&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         /* Create the cannonicalized table name for trigger creation */ &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         /* Do not touch it if the name contains other delimiters */ &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         IF (CHARINDEX('.', @tableName) &amp;lt;&amp;gt; 0 OR &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;             CHARINDEX('[', @tableName) &amp;lt;&amp;gt; 0 OR &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;             CHARINDEX(']', @tableName) &amp;lt;&amp;gt; 0) &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;             SET @canonTableName = @tableName &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         ELSE &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;             SET @canonTableName = '[' + @schemaName + '].[' + @tableName + ']'&lt;/strong&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         /* First make sure the table exists */ &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;         --Vivek Commented --IF (SELECT OBJECT_ID(@tableName, 'U')) IS NULL &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                           --BEGIN &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                           --  RAISERROR ('00000001', 16, 1) &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                           --  RETURN &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                           --END &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;--Vivek Start --Added B&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;         IF(@schemaName IS NULL)&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;            BEGIN&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                IF (SELECT OBJECT_ID(@tableName, 'U')) IS NULL &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                BEGIN &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                   RAISERROR ('00000001', 16, 1) &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                   RETURN &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                END&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;            END&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;         ELSE&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;            BEGIN&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                IF (SELECT OBJECT_ID(@schemaName + '.' + @tableName, 'U')) IS NULL &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                BEGIN &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                    RAISERROR ('00000001', 16, 1) &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                    RETURN &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;                END &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;            END&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;         &lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;strong&gt;--Vivek End B&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;         &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         BEGIN TRAN&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         /* Insert the value into the notification table */ &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         IF NOT EXISTS (SELECT tableName FROM dbo.AspNet_SqlCacheTablesForChangeNotification WITH (NOLOCK) WHERE tableName = @tableName) &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;             IF NOT EXISTS (SELECT tableName FROM dbo.AspNet_SqlCacheTablesForChangeNotification WITH (TABLOCKX) WHERE tableName = @tableName) &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                 INSERT  dbo.AspNet_SqlCacheTablesForChangeNotification &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                 VALUES (@tableName, GETDATE(), 0)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         /* Create the trigger */ &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         SET @quotedTableName = QUOTENAME(@tableName, '''') &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         IF NOT EXISTS (SELECT name FROM sysobjects WITH (NOLOCK) WHERE name = @triggerName AND type = 'TR') &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;             IF NOT EXISTS (SELECT name FROM sysobjects WITH (TABLOCKX) WHERE name = @triggerName AND type = 'TR') &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                 EXEC('CREATE TRIGGER ' + @fullTriggerName + ' ON ' + @canonTableName +'&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                       FOR INSERT, UPDATE, DELETE AS BEGIN&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                       SET NOCOUNT ON&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                       EXEC dbo.AspNet_SqlCacheUpdateChangeIdStoredProcedure N' + @quotedTableName + '&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                       END&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                       ')&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         COMMIT TRAN&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;         END&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;				&lt;/span&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-7470984680444984366?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/RbiR-xoqDVA" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/RbiR-xoqDVA/create-sql-cache-dependecy-using-custom.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2010/04/create-sql-cache-dependecy-using-custom.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-8940163530284553327</guid><pubDate>Thu, 11 Mar 2010 19:40:00 +0000</pubDate><atom:updated>2010-03-11T11:40:10.780-08:00</atom:updated><title>Ajax enabled WCF Service stops working with Undefined error</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='color:#1f497d'&gt;I got a javascript underfine error when I use the wcf service call. I found out that it will work after I remove or comment the &lt;span style='font-family:Courier New; font-size:10pt'&gt;extendedProtectionPolicy from the web configuration.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-8940163530284553327?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/U4l5IrPH1aE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/U4l5IrPH1aE/ajax-enabled-wcf-service-stops-working.html</link><author>noreply@blogger.com (stanley)</author><thr:total>1</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2010/03/ajax-enabled-wcf-service-stops-working.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-6299046604428412742</guid><pubDate>Tue, 09 Mar 2010 21:44:00 +0000</pubDate><atom:updated>2010-03-09T13:44:03.980-08:00</atom:updated><title>Use AspNet_Merge to Version Website Assemblies</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;If you want to add versioning information to the assemblies generated for a precompiled Web site, you can do the following: &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Add an AssemblyInfo.cs or AssemblyInfo.vb file to the App_Code folder. The assembly generated for the App_Code folder will then be versioned. You can also add version attributes to the code-behind files for pages and user controls. However, adding version attributes to individual files is tedious and applies only to code-behind files in an updatable precompilation layout.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Add references to an AssemblyInfo.cs or AssemblyInfo.vb file to the &lt;strong&gt;compilerOptions&lt;/strong&gt; attribute of the &lt;strong&gt;&amp;lt;compiler&amp;gt;&lt;/strong&gt; element in the Web.config file. This enables you to add versioning for all assemblies generated for the Web site. In that case, you must include both C# and Visual Basic compilers because ASP.NET might select a compiler for non-code type files, such as WSDL, when compiling the proxies.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Aspnet_merge.exe can version the assemblies it creates by either copying the attributes from the App_Code assembly or copying them from a specific assembly specified using the &lt;strong&gt;–copyattrs&lt;/strong&gt; option. This is therefore treated like any other assembly attribute. These options for specifying an attribute for the merged assembly or assemblies ensures that you can define all version attributes, including the file version, the assembly version, and any other assembly attributes you require.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Figure 25 shows the merge command used to apply attributes from the App_Code assembly, using the Web site shown in Figure 1. The AssemblyInfo.cs file shown in Figure 22 has been added to the Web site's App_Code folder.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Example&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Aspnet_merge c:\precompileWebsite –copyattrs –a &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-6299046604428412742?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/j13AoSvax74" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/j13AoSvax74/use-aspnetmerge-to-version-website.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2010/03/use-aspnetmerge-to-version-website.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-8627261680686404744</guid><pubDate>Mon, 08 Mar 2010 23:50:00 +0000</pubDate><atom:updated>2010-03-08T15:50:03.060-08:00</atom:updated><title>IE Modal Dialog and ASP.NET PostBack solution</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Put the following HTML code inside of your page header in HTML source, &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:13px'/&gt;&lt;col style='width:210px'/&gt;&lt;col style='width:3px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-top: 1px; padding-left: 1px; padding-bottom: 1px; padding-right: 1px' vAlign='middle'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-top: 1px; padding-left: 1px; padding-bottom: 1px; padding-right: 1px' vAlign='middle'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style='padding-top: 1px; padding-left: 1px; padding-bottom: 1px; padding-right: 1px' vAlign='middle'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-top: 1px; padding-left: 1px; padding-bottom: 1px; padding-right: 1px' vAlign='middle' colspan='2'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &amp;lt;title&amp;gt;My Page&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:13px'/&gt;&lt;col style='width:254px'/&gt;&lt;col style='width:3px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-top: 1px; padding-left: 1px; padding-bottom: 1px; padding-right: 1px' vAlign='middle'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-top: 1px; padding-left: 1px; padding-bottom: 1px; padding-right: 1px' vAlign='middle' colspan='2'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &amp;lt;base&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;									&lt;/span&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;target="_self"&amp;gt;&amp;lt;/base&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style='padding-top: 1px; padding-left: 1px; padding-bottom: 1px; padding-right: 1px' vAlign='middle'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;4&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style='padding-top: 1px; padding-left: 1px; padding-bottom: 1px; padding-right: 1px' vAlign='middle'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;The modal dialog will be able to successfully postback to itself&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-8627261680686404744?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/1F8Vl8VaHjU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/1F8Vl8VaHjU/ie-modal-dialog-and-aspnet-postback.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2010/03/ie-modal-dialog-and-aspnet-postback.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-2984297625365697347</guid><pubDate>Thu, 04 Mar 2010 16:57:00 +0000</pubDate><atom:updated>2010-03-04T08:57:33.505-08:00</atom:updated><title>Multiple Onclick JavaScript Events on a Single Control</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;You can't add two identical events to the same Html control. For example, if you have a button with an onclick event, and you add another onclick at the server, the second event will overwrite the first. This becomes a problem if you need to add an event to some variable control, but you don't know what events that control already has. However, .Net provides a way to handle this.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;We can:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;See if the variable html control already has an onclick event. &lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;If it does, then dynamically register a new script that calls both the original onclick script as well as the new script.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Replace the variable control's onclick value with that new script.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;The following code snippets this. This first block shows a simple JavaScript (with a parameter) being called by a button's onclick event.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:628px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-top: 2px; padding-left: 2px; padding-bottom: 2px; padding-right: 2px; border-top:  none; border-left:  outset #111111 0.75pt; border-bottom:  none; border-right:  none' vAlign='middle'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;function DoStuff1(var1) {&lt;br/&gt;    alert('1: ' + var1);&lt;br/&gt;}&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;									&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;...&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;									&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&amp;lt;INPUT id="Button1" onclick="DoStuff1('Hello1')" type="button" value="Button" name="Button1" runat="server"&amp;gt;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;									&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;...&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;This snippet shows the server code to check if an onclick event already exists, and add a new wrapper if needed. Note that it persists the onclick values in viewstate to ensure that the wrapper function doesn't wrap itself upon postback. For example, if the first onclick event called DoStuff1(), and we wanted to dynamically add a new onclick function DoStuff2(), we could create a wrapper function Wrapper1() that called both functions, and was called from the onclick. Wrapper1() becomes the new value of the button's onclick.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table border='0' style='border-collapse:collapse'&gt;&lt;colgroup&gt;&lt;col style='width:628px'/&gt;&lt;/colgroup&gt;&lt;tbody valign='top'&gt;&lt;tr&gt;&lt;td style='padding-top: 2px; padding-left: 2px; padding-bottom: 2px; padding-right: 2px; border-top:  none; border-left:  outset #111111 0.75pt; border-bottom:  none; border-right:  none' vAlign='middle'&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;private void Page_Load(object sender, System.EventArgs e)&lt;br/&gt;{&lt;br/&gt;    string s = this.Button1.Attributes["onclick"]; &lt;br/&gt;    if (!Page.IsPostBack)&lt;br/&gt;        OriginalJSFunction = s;&lt;br/&gt;    if (s == null)&lt;br/&gt;        this.Button1.Attributes.Add("onclick","DoStuff2()");&lt;br/&gt;    else&lt;br/&gt;    {&lt;br/&gt;        if (!Page.IsClientScriptBlockRegistered("JS1"))&lt;br/&gt;            Page.RegisterClientScriptBlock("JS1",GetJS(OriginalJSFunction));&lt;br/&gt;        this.Button1.Attributes.Add("onclick","Wrapper1()");&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;private string OriginalJSFunction &lt;br/&gt;{&lt;br/&gt;    get &lt;br/&gt;    {&lt;br/&gt;        object o = ViewState["OriginalJSFunction"];&lt;br/&gt;        if (o == null)&lt;br/&gt;            return "";&lt;br/&gt;        else&lt;br/&gt;            return o.ToString();&lt;br/&gt;    }&lt;br/&gt;    set &lt;br/&gt;    {&lt;br/&gt;        ViewState["OriginalJSFunction"] = value;&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;private string GetJS(string strOriginalFn) //will handle initial JS with params&lt;br/&gt;{&lt;br/&gt;    System.Text.StringBuilder sb = new System.Text.StringBuilder();&lt;br/&gt;    sb.Append(@"&lt;br/&gt;        &amp;lt;script language='javascript'&amp;gt;&lt;br/&gt;        function Wrapper1() {&lt;br/&gt;        " + strOriginalFn + @";&lt;br/&gt;        DoStuff2();&lt;br/&gt;        }&lt;br/&gt;        &amp;lt;/script&amp;gt;&lt;br/&gt;    ");&lt;br/&gt;&lt;br/&gt;    return sb.ToString();&lt;br/&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt; While this approach is tedious, it lets you dynamically add an event to a control without overwriting that control's existing event. This is useful when making your own custom controls that integrate with existing Html controls already on the page.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href='http://timstall.dotnetdevelopersjournal.com/multiple_onclick_javascript_events_on_a_single_control.htm'&gt;http://timstall.dotnetdevelopersjournal.com/multiple_onclick_javascript_events_on_a_single_control.htm&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-2984297625365697347?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/Y19wiPEss_8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/Y19wiPEss_8/multiple-onclick-javascript-events-on.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2010/03/multiple-onclick-javascript-events-on.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-1199336669685928614</guid><pubDate>Tue, 02 Mar 2010 21:47:00 +0000</pubDate><atom:updated>2010-03-02T13:47:25.192-08:00</atom:updated><title>Multiple select values in Cognos Report with store procedure</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Import the stored procedure in Framework Manager and set the parameters to:&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;1&lt;sup&gt;st&lt;/sup&gt; parameter = #prompt('param1')#&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;2nd parameter = #prompt('param2')#&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Create a report in Report Studio with a report page calling the SP and a prompt page containing the multiple select value prompt&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;					&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Add a text box prompt object to the prompt page&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;					&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Set the following ID's for the objects on the prompt page:&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Multiple select value prompt ID = Preprocessing_ID1&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Textbox prompt ID = Postprocessing_ID1&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Add an HTML item with the following javascript to the report:&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;					&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;// IBM Cognos 8.3 specific&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt; &lt;br /&gt; &lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;function assignParamValue()&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;{&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;// get the reference to the Cognos form&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;var fW = (typeof getFormWarpRequest == "function" ? getFormWarpRequest() :&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;document.forms["formWarpRequest"]);&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt; &lt;br /&gt; &lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;var i, tmp;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;tmp = "";&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt; &lt;br /&gt; &lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;// get the handle for the 1st checkbox prompt - add div around them to distinguish&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt; &lt;br /&gt; &lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;var prompt1 = document.getElementById('checkboxPrompt1');&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt; &lt;br /&gt; &lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;// find all the children of the div of type checkboxes.&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;for (i=0; i &amp;lt; prompt1.childNodes.length; i++)&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;{&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;var node_list = prompt1.getElementsByTagName('input');&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;for (var i = 0; i &amp;lt; node_list.length; i++)&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;{&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;var node = node_list[i];&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;if (node.getAttribute('type') == 'checkbox')&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;{&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;if (node.checked)&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;{&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;if( tmp == "" )&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;{&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;tmp = node.value;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;}&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;else&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;{&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;tmp = tmp + "," + node.value;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;}&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;}&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;}&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;}&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;}&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;fW._textEditBoxPostprocessing_ID.value = tmp;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt; &lt;br /&gt; &lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;canSubmitPrompt();&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;promptButtonFinish();&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;}&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 24pt'&gt;&lt;span style='font-family:Arial; font-size:9pt'&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Add an HTML item before the checkbox with the contents of&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;&amp;lt;div id="checkboxPrompt1"&amp;gt;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;and add an HTML item right after the checkbox prompt with the contents of&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;						&lt;/span&gt;&lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;Add a virtual "finish" button to call the javascript function before proceeding to the report itself by adding another HTML item and inserting the following code:&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;					&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p style='margin-left: 36pt'&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;&amp;lt;input type="BUTTON" class="clsPromptButton" onClick="assignParamValue()"&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left: 36pt'&gt;&lt;span style='font-family:Arial; font-size:10pt'&gt;value="Finish"&amp;gt;&lt;/span&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-1199336669685928614?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/-bXVnVq5hxE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/-bXVnVq5hxE/multiple-select-values-in-cognos-report.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2010/03/multiple-select-values-in-cognos-report.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-3448418472164070934</guid><pubDate>Tue, 02 Mar 2010 21:45:00 +0000</pubDate><atom:updated>2010-03-02T13:45:44.512-08:00</atom:updated><title>Code Signing for Developers - An Authenticode How-To</title><description>&lt;span xmlns=''&gt;&lt;p&gt;If you are a software developer then you probably already know that Microsoft Windows and web browsers such as Internet Explorer and Mozilla Firefox use a technology called Authenticode to verify the publisher of downloads and check that they have not been infected by a virus since they were created. If your software is not signed with a digital certificate, users will receive a warning that &lt;a href='http://www.tech-pro.net/authenticode.html'&gt;the publisher could not be verified&lt;/a&gt; and asked whether they want to continue running it. Many users will decide to play safe and click "Don't run", costing you lost sales.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href='http://www.tech-pro.net/code-signing-for-developers.html'&gt;http://www.tech-pro.net/code-signing-for-developers.html&lt;/a&gt;&lt;br /&gt;			&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-3448418472164070934?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/45ZHvk_nSD8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/45ZHvk_nSD8/code-signing-for-developers.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2010/03/code-signing-for-developers.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-6126398743191659606</guid><pubDate>Tue, 02 Mar 2010 21:40:00 +0000</pubDate><atom:updated>2010-03-02T13:42:08.033-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">asp.net  and ajax</category><title>How to Create Versioned Assemblies in the Visual Studio 2005 and Visual Studio 2008 Website</title><description>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cschen%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CDOCUME%7E1%5Cschen%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CDOCUME%7E1%5Cschen%5CLOCALS%7E1%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;    &lt;w:usefelayout/&gt;   &lt;/w:Compatibility&gt;   &lt;w:donotoptimizeforbrowser/&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-priority:1; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	mso-bidi-font-size:10.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} a:link, span.MsoHyperlink 	{mso-style-priority:99; 	color:blue; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-bidi-font-size:10.0pt; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;}  /* List Definitions */  @list l0 	{mso-list-id:102967822; 	mso-list-template-ids:1116103262;} @list l1 	{mso-list-id:1733894198; 	mso-list-template-ids:59377860;} @list l2 	{mso-list-id:1964385319; 	mso-list-template-ids:785701092;} ol 	{margin-bottom:0in;} ul 	{margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0in 5.4pt 0in 5.4pt; 	mso-para-margin-top:0in; 	mso-para-margin-right:0in; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0in; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	mso-bidi-font-size:10.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 13.5pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;To create an assembly-information file for your website&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ol start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Using      a text editor, create a new assembly-information file. For Visual Basic      applications, the suggested file name is AssemblyInfo.vb. For C#      applications, the suggested file name is AssemblyInfo.cs.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt; &lt;/span&gt;[assembly:System.Reflection.AssemblyVersionAttribute(&lt;span style="color: maroon;"&gt;"versionNumber"&lt;/span&gt;)]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="margin-left: 0.5in;" border="0" cellpadding="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style="margin-bottom: 0.0001pt; text-align: center;" align="center"&gt;&lt;b&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Do not place the assembly-information file in the App_Code   directory. If you place the assembly-information file in the App_Code   directory, it will be compiled automatically by the ASP.NET runtime and might   cause compilation errors later in the compilation process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 13.5pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;To specify the assembly-information file in your .aspx page&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ol start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Open      your .aspx file in a text editor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Add      the following attribute to the @ Page directive in the .aspx page.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;CompilerOptions=&lt;span style="color: maroon;"&gt;"path\AssemblyInfo.cs"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Replace the path parameter with the physical path to the assembly-information file on disk.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;If the path to your assembly-information file contains spaces, you must enclose the path and file name in single quotation marks (').&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;CompilerOptions='&lt;span style="color: maroon;"&gt;"path with spaces\AssemblyInfo.cs"&lt;/span&gt;'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Replace the path with spaces parameter with the physical path to the assembly-information file on disk.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol start="3" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Publish      the website.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 13.5pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;To specify the assembly-information file in your Web.config file&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;ol start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Open      your Web.config file in a text editor.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Add      the following code to your Web.config file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;system.codedom&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;compilers&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;compiler language="&lt;span" style="color: maroon;"&gt;"c#;cs;csharp"&lt;/span&gt; extension=&lt;span style="color: maroon;"&gt;".cs"&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;type="Microsoft.CSharp.CSharpCodeProvider, System,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;Version=2.0.3600.0, Culture=neutral, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;PublicKeyToken=b77a5c561934e089&lt;span style="color: maroon;"&gt;" warningLevel="&lt;/span&gt;1" &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;      &lt;/span&gt;compilerOptions=&lt;span style="color: maroon;"&gt;"path\AssemblyInfo.cs"&lt;/span&gt; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;/compilers&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin: 0in 0in 0.0001pt 0.5in; background: rgb(221, 221, 221) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="font-size: 10pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;/system.codedom&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol start="3" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;&lt;span style="font-size: 12pt; font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Publish      the website&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Ref: &lt;a href="http://msdn.microsoft.com/en-us/library/ms228042.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms228042.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-6126398743191659606?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/euamsH0T_jQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/euamsH0T_jQ/how-to-create-versioned-assemblies-in.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2010/03/how-to-create-versioned-assemblies-in.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-6009101675414341235</guid><pubDate>Tue, 20 Oct 2009 20:46:00 +0000</pubDate><atom:updated>2009-10-20T13:46:10.725-07:00</atom:updated><title /><description>&lt;span xmlns=''&gt;&lt;p&gt;Sort  Cognos  report in the JavaScript&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function expandA(array,x,y) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    // Expand X&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    for (var i=0; i&amp;lt;=x; i++ )&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (array.length &amp;lt;= i)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            array[i]=[];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // Expand y&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    for (var i=0; i&amp;lt;=y; i++ )&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (array[x].length &amp;lt;= i)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            array[x][i]= '';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function setVal(array, x, y, val) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    expandA(array,x,y);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    array[x][y]=val;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function getVal(array, x, y) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (array.length &amp;gt;= x+1 &amp;amp;&amp;amp; array[x].length &amp;gt;=y+1)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        return array[x][y];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    } else {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        return null;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;p&gt;var stIsIE = /*@cc_on!@*/false;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;var colOffset = 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;sorttable = {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  init: function() {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // quit if this function has already been called&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (arguments.callee.done) return;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // flag this function so we don't do the same thing twice&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    arguments.callee.done = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // kill the timer&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (_timer) clearInterval(_timer);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;    if (!document.createElement || !document.getElementsByTagName) return;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;    sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;    forEach(document.getElementsByTagName('table'), function(table) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      if (table.className.search(/\bxt\b/) != -1) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        sorttable.makeSortable(table);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    });&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  },&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  makeSortable: function(table) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (table.getElementsByTagName('thead').length == 0) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      // table doesn't have a tHead. Since it should have, create one and&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      // put the first table row in it.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      the = document.createElement('thead');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;      var headerRows = 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      // Now we need to determine how many rows are the header&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        forEach(table.children[0].childNodes, function(row) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                if (row.nodeType == 1) { &lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    //alert(row.innerHTML);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    if (row.innerHTML.search(/\bcl\b/) != -1 &amp;amp;&amp;amp; headerRows&amp;gt;=0) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        // found&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        headerRows = -(++headerRows);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    } else {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        if (headerRows &amp;gt;= 0)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            headerRows++;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        });&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      for (var i=0;i&amp;lt;-(headerRows) ;i++ )&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        the.appendChild(table.rows[0]);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      }      &lt;br /&gt;&lt;/p&gt;&lt;p&gt;      &lt;br /&gt;&lt;/p&gt;&lt;p&gt;      table.insertBefore(the,table.firstChild);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // Safari doesn't support table.tHead, sigh&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;   // if (table.tHead.rows.length != 1) return; // can't cope with two header rows&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;    // Figure out how many columns we need to offset&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    // Build cell map&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    var cellMap=new Array();&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    rowNum = 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    rowIndex = 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    colIndex = 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    forEach(table.tHead.childNodes, function(row) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            if (row.nodeType == 1) { &lt;br /&gt;&lt;/p&gt;&lt;p&gt;                forEach(row.childNodes, function(cell) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;                    if (cell.nodeType == 1) { // an element&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        while (getVal(cellMap,rowIndex,colIndex) &amp;gt; 0) colIndex++;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        // populate array&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        for (var i=0;i&amp;lt; cell.colSpan; i++ )&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            for (var j=0;j&amp;lt; cell.rowSpan; j++ )&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                                setVal(cellMap,rowIndex+j,colIndex+i,rowNum);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            &lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        colIndex+=i;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                });&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                rowNum++;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                colIndex=0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                rowIndex = rowNum- 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          });&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    // Count number of columns to skip&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    rowNum--;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    for (colIndex=0; colIndex&amp;lt;cellMap[rowIndex-1].length &amp;amp;&amp;amp; cellMap[rowIndex-1][colIndex] != rowNum ; colIndex++ ) {}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (cellMap[rowIndex-1][colIndex] == rowNum) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        colOffset = colIndex;        &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;    // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // "total" rows, for example). This is B&amp;amp;R, since what you're supposed&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // to do is put them in a tfoot. So, if there are sortbottom rows,&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // for backwards compatibility, move them to tfoot (creating it if needed).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    sortbottomrows = [];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    for (var i=0; i&amp;lt;table.rows.length; i++) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      if (table.rows[i].className.search(/\bsortbottom\b/) != -1) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        sortbottomrows[sortbottomrows.length] = table.rows[i];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (sortbottomrows) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      if (table.tFoot == null) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // table doesn't have a tfoot. Create one.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        tfo = document.createElement('tfoot');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        table.appendChild(tfo);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      for (var i=0; i&amp;lt;sortbottomrows.length; i++) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        tfo.appendChild(sortbottomrows[i]);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      delete sortbottomrows;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;    // work through each column and calculate its type&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    headrow = table.tHead.lastChild.cells;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    for (var i=0; i&amp;lt;headrow.length; i++) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      if(headrow[i].getAttribute('sort') == null) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            headrow[i].setAttribute('sort','');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      // manually override the type with a sorttable_type attribute&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      if (!headrow[i].getAttribute('sort').match(/\bsorttable_nosort\b/)) { // skip this col&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        mtch = headrow[i].getAttribute('sort').match(/\bsorttable_([a-z0-9_]+)\b/);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (mtch) { override = mtch[1]; }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          if (mtch &amp;amp;&amp;amp; typeof sorttable["sort_"+override] == 'function') {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            headrow[i].sorttable_sortfunction = sorttable["sort_"+override];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          } else {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            headrow[i].sorttable_sortfunction = sorttable.guessType(table,i+colOffset);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            //            alert(headrow[i].sorttable_sortfunction);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          // make it clickable to sort&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          headrow[i].sorttable_columnindex = i+colOffset;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          headrow[i].sorttable_tbody = table.tBodies[0];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          dean_addEvent(headrow[i],"click", function(e) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;          if (this.getAttribute('sort').search(/\bsorttable_sorted\b/) != -1) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // if we're already sorted by this column, just &lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // reverse the table, which is quicker&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sorttable.reverse(this.sorttable_tbody);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            this.setAttribute('sort',this.getAttribute('sort').replace('sorttable_sorted',&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                                                    'sorttable_sorted_reverse'));&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            this.removeChild(document.getElementById('sorttable_sortfwdind'));&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sortrevind = document.createElement('span');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sortrevind.id = "sorttable_sortrevind";&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sortrevind.innerHTML = stIsIE ? '&amp;amp;nbsp&amp;lt;font face="webdings"&amp;gt;5&amp;lt;/font&amp;gt;' : '&amp;amp;nbsp;&amp;amp;#x25B4;';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            this.appendChild(sortrevind);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            return;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          if (this.getAttribute('sort').search(/\bsorttable_sorted_reverse\b/) != -1) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // if we're already sorted by this column in reverse, just &lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // re-reverse the table, which is quicker&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sorttable.reverse(this.sorttable_tbody);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            this.setAttribute('sort',this.getAttribute('sort').replace('sorttable_sorted_reverse',&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                                                    'sorttable_sorted'));&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            this.removeChild(document.getElementById('sorttable_sortrevind'));&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sortfwdind = document.createElement('span');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sortfwdind.id = "sorttable_sortfwdind";&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sortfwdind.innerHTML = stIsIE ? '&amp;amp;nbsp&amp;lt;font face="webdings"&amp;gt;6&amp;lt;/font&amp;gt;' : '&amp;amp;nbsp;&amp;amp;#x25BE;';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            this.appendChild(sortfwdind);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            return;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          &lt;br /&gt; &lt;/p&gt;&lt;p&gt;          // remove sorttable_sorted classes&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          theadrow = this.parentNode;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          forEach(theadrow.childNodes, function(cell) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            if (cell.nodeType == 1) { // an element&lt;br /&gt;&lt;/p&gt;&lt;p&gt;              cell.setAttribute('sort',cell.getAttribute('sort').replace('sorttable_sorted_reverse',''));&lt;br /&gt;&lt;/p&gt;&lt;p&gt;              cell.setAttribute('sort',cell.getAttribute('sort').replace('sorttable_sorted',''));&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          });&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          sortfwdind = document.getElementById('sorttable_sortfwdind');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          sortrevind = document.getElementById('sorttable_sortrevind');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          &lt;br /&gt; &lt;/p&gt;&lt;p&gt;          this.setAttribute('sort',this.getAttribute('sort') + ' sorttable_sorted');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          sortfwdind = document.createElement('span');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          sortfwdind.id = "sorttable_sortfwdind";&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          sortfwdind.innerHTML = stIsIE ? '&amp;amp;nbsp&amp;lt;font face="webdings"&amp;gt;6&amp;lt;/font&amp;gt;' : '&amp;amp;nbsp;&amp;amp;#x25BE;';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          this.appendChild(sortfwdind);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;            // build an array to sort. This is a Schwartzian transform thing,&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // i.e., we "decorate" each row with the actual sort key,&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // sort based on the sort keys, and then put the rows back in order&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // which is a lot faster because you only do getInnerText once per row&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            row_array = [];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            col = this.sorttable_columnindex;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            rows = this.sorttable_tbody.rows;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            for (var j=0; j&amp;lt;rows.length; j++) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;              row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            /* If you want a stable sort, uncomment the following line */&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            //sorttable.shaker_sort(row_array, this.sorttable_sortfunction);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            /* and comment out this one */&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            row_array.sort(this.sorttable_sortfunction);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            &lt;br /&gt; &lt;/p&gt;&lt;p&gt;            tb = this.sorttable_tbody;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            for (var j=0; j&amp;lt;row_array.length; j++) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;              tb.appendChild(row_array[j][1]);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            &lt;br /&gt; &lt;/p&gt;&lt;p&gt;            delete row_array;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          });&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  },&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  guessType: function(table, column) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // guess the type of a column based on its first non-blank row&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    sortfn = sorttable.sort_alpha;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    for (var i=0; i&amp;lt;table.tBodies[0].rows.length; i++) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      //alert(text);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      if (text != '') {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        //alert(text);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (text.match(/^[(-]?[£$¤]?[\d,.]+[%)]?$/)) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          return sorttable.sort_numeric;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // check for a date: dd/mm/yyyy or dd/mm/yy &lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // can have / or . or - as separator&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // can be mm/dd as well&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        possdate = text.match(sorttable.DATE_RE)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (possdate) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          // looks like a date&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          first = parseInt(possdate[1]);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          second = parseInt(possdate[2]);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          if (first &amp;gt; 12) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // definitely dd/mm&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            return sorttable.sort_ddmm;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          } else if (second &amp;gt; 12) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            return sorttable.sort_mmdd;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          } else {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // looks like a date, but we can't tell which, so assume&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // that it's dd/mm (English imperialism!) and keep looking&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sortfn = sorttable.sort_ddmm;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    return sortfn;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  },&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  getInnerText: function(node) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // gets the text we want to use for sorting for a cell.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // strips leading and trailing whitespace.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // this is *not* a generic getInnerText function; it's special to sorttable.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // for example, you can override the cell text with a customkey attribute.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // it also gets .value for &amp;lt;input&amp;gt; fields.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;    hasInputs = (typeof node.getElementsByTagName == 'function') &amp;amp;&amp;amp;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                 node.getElementsByTagName('input').length;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;    if (node.getAttribute("sorttable_customkey") != null) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      return node.getAttribute("sorttable_customkey");&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    else if (typeof node.textContent != 'undefined' &amp;amp;&amp;amp; !hasInputs) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      return node.textContent.replace(/\s\)/g,'').replace(/^\s+|\s+$/g, '');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    else if (typeof node.innerText != 'undefined' &amp;amp;&amp;amp; !hasInputs) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      &lt;br /&gt; &lt;/p&gt;&lt;p&gt;      return node.innerText.replace(/^\s+|\s+$/g, '');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    else if (typeof node.text != 'undefined' &amp;amp;&amp;amp; !hasInputs) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      return node.text.replace(/^\s+|\s+$/g, '');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    else {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      switch (node.nodeType) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        case 3:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          if (node.nodeName.toLowerCase() == 'input') {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            return node.value.replace(/^\s+|\s+$/g, '');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        case 4:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          return node.nodeValue.replace(/^\s+|\s+$/g, '');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          break;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        case 1:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        case 11:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          var innerText = '';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          for (var i = 0; i &amp;lt; node.childNodes.length; i++) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            innerText += sorttable.getInnerText(node.childNodes[i]);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          return innerText.replace(/^\s+|\s+$/g, '');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          break;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        default:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;          return '';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  },&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  reverse: function(tbody) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // reverse the rows in a tbody&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    newrows = [];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    for (var i=0; i&amp;lt;tbody.rows.length; i++) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;      newrows[newrows.length] = tbody.rows[i];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    for (var i=newrows.length-1; i&amp;gt;=0; i--) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;       tbody.appendChild(newrows[i]);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    delete newrows;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  },&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  /* sort functions&lt;br /&gt;&lt;/p&gt;&lt;p&gt;     each sort function takes two parameters, a and b&lt;br /&gt;&lt;/p&gt;&lt;p&gt;     you are comparing a[0] and b[0] */&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  sort_numeric: function(a,b) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    bb = parseFloat(b[0].replace(/[^0-9.-]/g,'')); &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    return aa-bb;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  },&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  sort_alpha: function(a,b) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (a[0]==b[0]) return 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (a[0]&amp;lt;b[0]) return -1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    return 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  },&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  sort_ddmm: function(a,b) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    mtch = a[0].match(sorttable.DATE_RE);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    y = mtch[3]; m = mtch[2]; d = mtch[1];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (m.length == 1) m = '0'+m;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (d.length == 1) d = '0'+d;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    dt1 = y+m+d;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    mtch = b[0].match(sorttable.DATE_RE);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    y = mtch[3]; m = mtch[2]; d = mtch[1];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (m.length == 1) m = '0'+m;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (d.length == 1) d = '0'+d;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    dt2 = y+m+d;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (dt1==dt2) return 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (dt1&amp;lt;dt2) return -1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    return 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  },&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  sort_mmdd: function(a,b) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    mtch = a[0].match(sorttable.DATE_RE);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    y = mtch[3]; d = mtch[2]; m = mtch[1];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (m.length == 1) m = '0'+m;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (d.length == 1) d = '0'+d;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    dt1 = y+m+d;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    mtch = b[0].match(sorttable.DATE_RE);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    y = mtch[3]; d = mtch[2]; m = mtch[1];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (m.length == 1) m = '0'+m;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (d.length == 1) d = '0'+d;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    dt2 = y+m+d;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (dt1==dt2) return 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (dt1&amp;lt;dt2) return -1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    return 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  },&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  &lt;br /&gt; &lt;/p&gt;&lt;p&gt;  shaker_sort: function(list, comp_func) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // A stable sort function to allow multi-level sorting of data&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // see: http://en.wikipedia.org/wiki/Cocktail_sort&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // thanks to Joseph Nahmias&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    var b = 0;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    var t = list.length - 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    var swap = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    while(swap) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        swap = false;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        for(var i = b; i &amp;lt; t; ++i) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            if ( comp_func(list[i], list[i+1]) &amp;gt; 0 ) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                var q = list[i]; list[i] = list[i+1]; list[i+1] = q;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                swap = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        } // for&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        t--;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;        if (!swap) break;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;        for(var i = t; i &amp;gt; b; --i) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            if ( comp_func(list[i], list[i-1]) &amp;lt; 0 ) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                var q = list[i]; list[i] = list[i-1]; list[i-1] = q;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                swap = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        } // for&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        b++;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    } // while(swap)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  }  &lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;/* ******************************************************************&lt;br /&gt;&lt;/p&gt;&lt;p&gt;   Supporting functions: bundled here to avoid depending on a library&lt;br /&gt;&lt;/p&gt;&lt;p&gt;   ****************************************************************** */&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;// Dean Edwards/Matthias Miller/John Resig&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;/* for Mozilla/Opera9 */&lt;br /&gt;&lt;/p&gt;&lt;p&gt;if (document.addEventListener) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    document.addEventListener("DOMContentLoaded", sorttable.init, false);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;/* for Internet Explorer */&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/*@cc_on @*/&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/*@if (@_win32)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    document.write("&amp;lt;script id=__ie_onload defer src=javascript:void(0)&amp;gt;&amp;lt;\/script&amp;gt;");&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    var script = document.getElementById("__ie_onload");&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    script.onreadystatechange = function() {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (this.readyState == "complete") {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sorttable.init(); // call the onload handler&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    };&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/*@end @*/&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;/* for Safari */&lt;br /&gt;&lt;/p&gt;&lt;p&gt;if (/WebKit/i.test(navigator.userAgent)) { // sniff&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    var _timer = setInterval(function() {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (/loaded|complete/.test(document.readyState)) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            sorttable.init(); // call the onload handler&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }, 10);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;/* for other browsers */&lt;br /&gt;&lt;/p&gt;&lt;p&gt;window.onload = sorttable.init;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;// written by Dean Edwards, 2005&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// with input from Tino Zijdel, Matthias Miller, Diego Perini&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;// http://dean.edwards.name/weblog/2005/10/add-event/&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function dean_addEvent(element, type, handler) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (element.addEventListener) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        element.addEventListener(type, handler, false);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    } else {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // assign each event handler a unique ID&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // create a hash table of event types for the element&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (!element.events) element.events = {};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // create a hash table of event handlers for each element/event pair&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        var handlers = element.events[type];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (!handlers) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            handlers = element.events[type] = {};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // store the existing event handler (if there is one)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            if (element["on" + type]) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                handlers[0] = element["on" + type];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // store the event handler in the hash table&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        handlers[handler.$$guid] = handler;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // assign a global event handler to do all the work&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        element["on" + type] = handleEvent;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;// a counter used to create unique IDs&lt;br /&gt;&lt;/p&gt;&lt;p&gt;dean_addEvent.guid = 1;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function removeEvent(element, type, handler) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (element.removeEventListener) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        element.removeEventListener(type, handler, false);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    } else {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        // delete the event handler from the hash table&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (element.events &amp;amp;&amp;amp; element.events[type]) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            delete element.events[type][handler.$$guid];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function handleEvent(event) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    var returnValue = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // grab the event object (IE uses a global event object)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // get a reference to the hash table of event handlers&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    var handlers = this.events[event.type];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // execute each event handler&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    for (var i in handlers) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        this.$$handleEvent = handlers[i];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (this.$$handleEvent(event) === false) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            returnValue = false;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    return returnValue;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function fixEvent(event) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    // add W3C standard event methods&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    event.preventDefault = fixEvent.preventDefault;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    event.stopPropagation = fixEvent.stopPropagation;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    return event;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;fixEvent.preventDefault = function() {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    this.returnValue = false;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;fixEvent.stopPropagation = function() {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;  this.cancelBubble = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;// Dean's forEach: http://dean.edwards.name/base/forEach.js&lt;br /&gt;&lt;/p&gt;&lt;p&gt;/*&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    forEach, version 1.0&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    Copyright 2006, Dean Edwards&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    License: http://www.opensource.org/licenses/mit-license.php&lt;br /&gt;&lt;/p&gt;&lt;p&gt;*/&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;// array-like enumeration&lt;br /&gt;&lt;/p&gt;&lt;p&gt;if (!Array.forEach) { // mozilla already supports this&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    Array.forEach = function(array, block, context) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        for (var i = 0; i &amp;lt; array.length; i++) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            block.call(context, array[i], i, array);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    };&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;// generic enumeration&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Function.prototype.forEach = function(object, block, context) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    for (var key in object) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (typeof this.prototype[key] == "undefined") {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            block.call(context, object[key], key, object);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;// character enumeration&lt;br /&gt;&lt;/p&gt;&lt;p&gt;String.forEach = function(string, block, context) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    Array.forEach(string.split(""), function(chr, index) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        block.call(context, chr, index, string);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    });&lt;br /&gt;&lt;/p&gt;&lt;p&gt;};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;// globally resolve forEach enumeration&lt;br /&gt;&lt;/p&gt;&lt;p&gt;var forEach = function(object, block, context) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (object) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        var resolve = Object; // default&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (object instanceof Function) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // functions have a "length" property&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            resolve = Function;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        } else if (object.forEach instanceof Function) {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // the object implements a custom forEach method so use that&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            object.forEach(block, context);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            return;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        } else if (typeof object == "string") {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // the object is a string&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            resolve = String;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        } else if (typeof object.length == "number") {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            // the object is array-like&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            resolve = Array;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        resolve.forEach(object, block, context);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;};&lt;br /&gt;&lt;/p&gt;&lt;p&gt;//--&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-6009101675414341235?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/_zlTTcftPhY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/_zlTTcftPhY/sort-cognos-report-in-javascript.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/10/sort-cognos-report-in-javascript.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-2752278678377146985</guid><pubDate>Thu, 08 Oct 2009 15:37:00 +0000</pubDate><atom:updated>2009-10-08T08:37:30.437-07:00</atom:updated><title>HTML Strict Mode Vertical Height with CSS</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='color:black'&gt;The table tag for the table containing this text looks like this:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:black'&gt;&amp;lt;table width="450" height="100%" align="center" bgcolor="#ccccff"&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:black'&gt;Note that it expands vertically even though it is rendered in standards compliance mode because it has the following CSS applied to it:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:black'&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;html, body{height:100%&lt;/span&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-2752278678377146985?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/_lcHl-WS82M" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/_lcHl-WS82M/html-strict-mode-vertical-height-with.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/10/html-strict-mode-vertical-height-with.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-4488720672691605142</guid><pubDate>Tue, 06 Oct 2009 04:08:00 +0000</pubDate><atom:updated>2009-10-05T21:08:15.754-07:00</atom:updated><title>Get Tables has records</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;DECLARE&lt;/span&gt; @TableName &lt;span style='color:blue'&gt;VARCHAR&lt;/span&gt;&lt;span style='color:gray'&gt;(&lt;/span&gt;500&lt;span style='color:gray'&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;DECLARE&lt;/span&gt; table_cursor  &lt;span style='color:blue'&gt;CURSOR&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;FOR&lt;/span&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;SELECT&lt;/span&gt; [Name] &lt;span style='color:blue'&gt;FROM&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:green'&gt;sys.tables&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;order&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;by&lt;/span&gt; [Name]&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;TRUNCATE&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;TABLE&lt;/span&gt; __ImportTables&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;OPEN&lt;/span&gt; table_cursor&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;FETCH&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;NEXT&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;FROM&lt;/span&gt; table_cursor &lt;span style='color:blue'&gt;INTO&lt;/span&gt;  @TableName&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;WHILE&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:fuchsia'&gt;@@FETCH_STATUS&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:gray'&gt;=&lt;/span&gt; 0&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;BEGIN&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &lt;span style='color:blue'&gt;DECLARE&lt;/span&gt; @SQLString &lt;span style='color:blue'&gt;NVARCHAR&lt;/span&gt;&lt;span style='color:gray'&gt;(&lt;/span&gt;2000&lt;span style='color:gray'&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &lt;span style='color:blue'&gt;DECLARE&lt;/span&gt; @ParmDefinition &lt;span style='color:blue'&gt;nvarchar&lt;/span&gt;&lt;span style='color:gray'&gt;(&lt;/span&gt;500&lt;span style='color:gray'&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &lt;span style='color:blue'&gt;DECLARE&lt;/span&gt; @Count &lt;span style='color:blue'&gt;int&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &lt;span style='color:blue'&gt;SET&lt;/span&gt; @SQLString &lt;span style='color:gray'&gt;=&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:red'&gt;'SELECT @Count_Out = COUNT(*) FROM '&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:gray'&gt;+&lt;/span&gt; @TableName&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &lt;span style='color:blue'&gt;SET&lt;/span&gt; @ParmDefinition &lt;span style='color:gray'&gt;=&lt;/span&gt; N&lt;span style='color:red'&gt;'@Count_Out int OUTPUT'&lt;/span&gt;&lt;span style='color:gray'&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &lt;span style='color:blue'&gt;EXECUTE&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:maroon'&gt;sp_executesql&lt;/span&gt; @SQLString&lt;span style='color:gray'&gt;,&lt;/span&gt; @ParmDefinition&lt;span style='color:gray'&gt;,&lt;/span&gt; @Count_Out&lt;span style='color:gray'&gt;=&lt;/span&gt;@Count &lt;span style='color:blue'&gt;OUTPUT&lt;/span&gt;&lt;span style='color:gray'&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &lt;span style='color:blue'&gt;IF&lt;/span&gt; @Count &lt;span style='color:gray'&gt;&amp;gt;&lt;/span&gt; 0 &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        &lt;span style='color:blue'&gt;INSERT&lt;/span&gt; __ImportTables&lt;span style='color:gray'&gt;(&lt;/span&gt;TableName&lt;span style='color:gray'&gt;)&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;Values&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:gray'&gt;(&lt;/span&gt;@TableName&lt;span style='color:gray'&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    &lt;span style='color:blue'&gt;FETCH&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;NEXT&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;FROM&lt;/span&gt; table_cursor &lt;span style='color:blue'&gt;INTO&lt;/span&gt;  @TableName&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:blue; font-family:Courier New; font-size:10pt'&gt;END&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;CLOSE&lt;/span&gt; table_cursor&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;DEALLOCATE&lt;/span&gt; table_cursor&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;				&lt;/span&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-4488720672691605142?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/qg6TDX8KX8s" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/qg6TDX8KX8s/get-tables-has-records.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/10/get-tables-has-records.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-8131797885352226747</guid><pubDate>Fri, 02 Oct 2009 19:32:00 +0000</pubDate><atom:updated>2009-10-02T12:32:49.711-07:00</atom:updated><title>Show loading status page in Cognos Report</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&amp;lt;div id="hidepage" style="position: relative; left:0px; top:0px; background-color: #FFFFFF; layer-background-color: #FFFFFF; height: 100%; width: 100%; visibility:hidden"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &amp;lt;table width="100%" height="100%"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &amp;lt;tr&amp;gt;&amp;lt;td align="center" valign="middle"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        &amp;lt;table width="50%" align="center" style="border: 1 #666666 solid"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            &amp;lt;tr&amp;gt;&amp;lt;td align="center" class="row1"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                &amp;lt;br /&amp;gt;&amp;lt;img src='http://train1.dstrat.com/cognos8/samples/images/progress.gif'&amp;gt;&amp;lt;b&amp;gt;The request is  in processing. Please wait......&amp;lt;/b&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        &amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;lt;script language="javascript"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;setTimeout("SetDefaultSelectedItems();",100);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function SetDefaultSelectedItems()&lt;br /&gt;&lt;/p&gt;&lt;p&gt;{&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    HideLoadingStatus(true);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    try&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    {    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;        var selElements = document.getElementsByTagName('select');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if(selElements != null)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            var hasSelected = false;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            for(var i=0;i&amp;lt;selElements.length;i++)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            {            &lt;br /&gt;&lt;/p&gt;&lt;p&gt;                var selElement = selElements[i];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;                if(selElement.options.length == 1)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    selElement.options[0].selected = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    hasSelected = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            if(hasSelected)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                &lt;br /&gt;&lt;/p&gt;&lt;p&gt;                if(selElements[5].selectedIndex &amp;gt; 1 &amp;amp;&amp;amp; selElements[6].selectedIndex &amp;gt; 1)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    var buttons = document.getElementsByTagName('button');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    for(var k = 0;k&amp;lt;buttons.length;k++)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    {                    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        var button = buttons[k];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        if(button != null &amp;amp;&amp;amp; button.innerText == "Finish")&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            if(button.disabled == true)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                                HideLoadingStatus(false);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                                  self.setTimeout("promptAction( 'reprompt' );", 200); // set, it is a hidden button&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            break;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        }                        &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;                    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt; &lt;/p&gt;&lt;p&gt;                }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }catch(e){}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function HideLoadingStatus(hidden)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;{&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    if(hidden)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        HideLoadingPage();&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    else&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        ShowLoadingPage();&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        &lt;br /&gt;&lt;/p&gt;&lt;p&gt;    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function HideLoadingPage() {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (document.getElementById) { // DOM3 = IE5, NS6&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        document.getElementById('hidepage').style.visibility = 'hidden';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    else {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (document.layers) { // Netscape 4&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            document.hidepage.visibility = 'hidden';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        else { // IE 4&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        document.all.hidepage.style.visibility = 'hidden';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function ShowLoadingPage() {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if (document.getElementById) { // DOM3 = IE5, NS6&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        document.getElementById('hidepage').style.visibility = 'visible';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    else {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if (document.layers) { // Netscape 4&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            document.hidepage.visibility = 'show';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        else { // IE 4&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            document.all.hidepage.style.visibility = 'visible';&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-8131797885352226747?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/v1XUEFms_wQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/v1XUEFms_wQ/show-loading-status-page-in-cognos.html</link><author>noreply@blogger.com (stanley)</author><thr:total>1</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/10/show-loading-status-page-in-cognos.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-4156099144848526365</guid><pubDate>Fri, 25 Sep 2009 22:21:00 +0000</pubDate><atom:updated>2009-09-25T15:21:45.649-07:00</atom:updated><title>Use JavaScript to Custom Congos Prompt Page</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&amp;lt;script language="javascript"&amp;gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;setTimeout("SetDefaultSelectedItems();",200);&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;function SetDefaultSelectedItems()&lt;br /&gt;&lt;/p&gt;&lt;p&gt;{&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;    var selElements = document.getElementsByTagName('select');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    if(selElements != null)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        var hasSelected = false;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        for(var i=0;i&amp;lt;selElements.length;i++)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {            &lt;br /&gt;&lt;/p&gt;&lt;p&gt;            var selElement = selElements[i];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;            if(selElement.options.length == 1)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                selElement.options[0].selected = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                hasSelected = true;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        if(hasSelected)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            &lt;br /&gt;&lt;/p&gt;&lt;p&gt;            if(selElements[5].selectedIndex &amp;gt; 1 &amp;amp;&amp;amp; selElements[6].selectedIndex &amp;gt; 1)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;            {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                var buttons = document.getElementsByTagName('button');&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                for(var k = 0;k&amp;lt;buttons.length;k++)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                {                    &lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    var button = buttons[k];&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    if(button != null &amp;amp;&amp;amp; button.innerText == "Finish")&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    {&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                        if(button.disabled == true)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                              self.setTimeout("promptAction( 'reprompt' );", 200); // set, it is a hidden button&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;                            &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;                }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;            }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;        }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;    }&lt;br /&gt;&lt;/p&gt;&lt;p&gt;}&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/script&amp;gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-4156099144848526365?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/rjhaeVuy5ZQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/rjhaeVuy5ZQ/use-javascript-to-custom-congos-prompt.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/09/use-javascript-to-custom-congos-prompt.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-8369383579149458821</guid><pubDate>Wed, 09 Sep 2009 21:51:00 +0000</pubDate><atom:updated>2009-09-09T14:51:25.381-07:00</atom:updated><title>Cognos SDK installation</title><description>&lt;span xmlns=''&gt;&lt;p&gt;Cognos SDK Installation&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;1. c8bimodel_win32_8.4.27.78_ml&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;2. c8sdk_mp_win32_8.4.27.78_ml&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-8369383579149458821?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/88oSu6J94CQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/88oSu6J94CQ/cognos-sdk-installation.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/09/cognos-sdk-installation.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-2188058917888051426</guid><pubDate>Wed, 09 Sep 2009 15:23:00 +0000</pubDate><atom:updated>2009-09-09T08:23:29.363-07:00</atom:updated><title>Object reference not set to an instance of an object when creating Silverlight-Enabled WCF Service</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Object reference not set to an instance of an object when creating &lt;/span&gt;&lt;strong&gt;Silverlight-Enabled WCF Service&lt;/strong&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;Resolution 1:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Go to visual studio and under tools, click on options, click on Source Control, and on the drop down menu click on None&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Resolution 2:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Create a new WCF service project and then change the binding mode from "wsHttpBinding" to "basicHttpBinding". &lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-2188058917888051426?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/Ffs450AmAzY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/Ffs450AmAzY/object-reference-not-set-to-instance-of.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/09/object-reference-not-set-to-instance-of.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-4479889203196241343</guid><pubDate>Wed, 09 Sep 2009 14:28:00 +0000</pubDate><atom:updated>2009-09-09T07:28:54.134-07:00</atom:updated><title>Call parents JavaScript function from Child popup windows</title><description>&lt;span xmlns=''&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;&amp;lt;&lt;/span&gt;&lt;span style='color:maroon'&gt;script&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:red'&gt;language&lt;/span&gt;&lt;span style='color:blue'&gt;="Javascript"&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:red'&gt;type&lt;/span&gt;&lt;span style='color:blue'&gt;="text/javascript"&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;function&lt;/span&gt; CallAlert()&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        alert(&lt;span style='color:maroon'&gt;"This is parent window's alert function."&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;&amp;lt;/&lt;/span&gt;&lt;span style='color:maroon'&gt;script&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Times New Roman; font-size:12pt'&gt;Fig – (2) Javascript on parent window.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;&amp;lt;&lt;/span&gt;&lt;span style='color:maroon'&gt;script&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:red'&gt;language&lt;/span&gt;&lt;span style='color:blue'&gt;="Javascript"&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:red'&gt;type&lt;/span&gt;&lt;span style='color:blue'&gt;="text/javascript"&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;function&lt;/span&gt; SetParentWindowsHiddenFieldValue()&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        window.opener.document.getElementById(&lt;span style='color:maroon'&gt;"HiddenField1"&lt;/span&gt;).value =&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                            document.getElementById(&lt;span style='color:maroon'&gt;"TextBox1"&lt;/span&gt;).value;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;return&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    } &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;function&lt;/span&gt; CallParentWindowFunction()&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        window.opener.CallAlert();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;return&lt;/span&gt;&lt;br /&gt;					&lt;span style='color:blue'&gt;false&lt;/span&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;&amp;lt;/&lt;/span&gt;&lt;span style='color:maroon'&gt;script&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;				&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-4479889203196241343?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/u4NHn_ADwJY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/u4NHn_ADwJY/call-parents-javascript-function-from.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/09/call-parents-javascript-function-from.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-3065191315366553593</guid><pubDate>Thu, 06 Aug 2009 21:13:00 +0000</pubDate><atom:updated>2009-08-06T14:13:32.426-07:00</atom:updated><title>Invalid length for a Base-64 char array</title><description>&lt;span xmlns=''&gt;&lt;p&gt;Error "Invalid length for a Base-64 char array" when using Convert.&lt;span style='font-family:Courier New; font-size:10pt'&gt; FromBase64String(InputString)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;Resolution:&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;When Crypted, replace "+" to space.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;string&lt;/span&gt; encryptString = &lt;span style='color:#2b91af'&gt;Convert&lt;/span&gt;.ToBase64String(ms.ToArray());&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt; encryptString = encryptString.Replace(&lt;span style='color:#a31515'&gt;"+"&lt;/span&gt;, &lt;span style='color:#a31515'&gt;" "&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;When decrypted, replace space back to "+"&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;encryptString = encryptString.Replace(&lt;span style='color:#a31515'&gt;" "&lt;/span&gt;, &lt;span style='color:#a31515'&gt;"+"&lt;/span&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-3065191315366553593?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/fKnOw8CWgeg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/fKnOw8CWgeg/invalid-length-for-base-64-char-array.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/08/invalid-length-for-base-64-char-array.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-3096446183869320572</guid><pubDate>Tue, 04 Aug 2009 20:53:00 +0000</pubDate><atom:updated>2009-08-04T14:07:48.196-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Asp.net and ajax</category><title>Customize Web Dialog Header</title><description>&lt;div class="Section1"&gt;&lt;br /&gt;&lt;p&gt;Sample of Customizing Header of Web Dialog window, the style of the header&lt;br /&gt;need to override&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:10;color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10;color:#a31515;"&gt;style&lt;/span&gt;&lt;span style="font-size:10;"&gt; &lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;="text/&lt;span class="SpellE"&gt;css&lt;/span&gt;"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;.&lt;span class="SpellE"&gt;edgeTop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;height&lt;/span&gt;:&lt;span style="color:blue;"&gt;4px&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;background&lt;/span&gt;:&lt;span style="color:blue;"&gt;#F0F0F0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;border-top&lt;/span&gt;:&lt;span style="color:blue;"&gt;1px&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;solid&lt;/span&gt; &lt;span style="color:blue;"&gt;#707070&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;font-size&lt;/span&gt;:&lt;span style="color:blue;"&gt;1px&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#a31515;"&gt;.&lt;span class="SpellE"&gt;cornerLeft&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;height&lt;/span&gt;:&lt;span style="color:blue;"&gt;4px&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;background&lt;/span&gt;:&lt;span style="color:blue;"&gt;#F0F0F0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;border-top&lt;/span&gt;:&lt;span style="color:blue;"&gt;1px&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;solid&lt;/span&gt; &lt;span style="color:blue;"&gt;#707070&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;border-left&lt;/span&gt;:&lt;span style="color:blue;"&gt;1px&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;solid&lt;/span&gt; &lt;span style="color:blue;"&gt;#707070&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;font-size&lt;/span&gt;:&lt;span style="color:blue;"&gt;1px&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#a31515;"&gt;.&lt;span class="SpellE"&gt;cornerRight&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;height&lt;/span&gt;:&lt;span style="color:blue;"&gt;4px&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;background&lt;/span&gt;:&lt;span style="color:blue;"&gt;#F0F0F0&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;border-top&lt;/span&gt;:&lt;span style="color:blue;"&gt;1px&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;solid&lt;/span&gt; &lt;span style="color:blue;"&gt;#707070&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;border-right&lt;/span&gt;:&lt;span style="color:blue;"&gt;1px&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;solid&lt;/span&gt; &lt;span style="color:blue;"&gt;#707070&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;font-size&lt;/span&gt;:&lt;span style="color:blue;"&gt;1px&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;}&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;.&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="font-size:10;"&gt;igdw_HeaderContent&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:10;"&gt;{&lt;span style="mso-tab-count: 1"&gt; &lt;/span&gt;&lt;span class="GramE"&gt;background-&lt;span class="SpellE"&gt;images:&lt;/span&gt;&lt;/span&gt;&lt;span class="SpellE"&gt;url&lt;/span&gt;(‘igdw_HeaderContent_blue.gif’)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span class="GramE"&gt;&lt;span style="font-size:10;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;style&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:10;color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="font-size:10;color:#a31515;"&gt;ig&lt;/span&gt;&lt;span class="GramE"&gt;&lt;span style="font-size:10;color:blue;"&gt;:&lt;/span&gt;&lt;span style="font-size:10;color:#a31515;"&gt;WebDialogWindow&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;span style="color:blue;"&gt;="WebDialogWindow1"&lt;/span&gt;&lt;br /&gt;&lt;span class="SpellE"&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;="server"&lt;/span&gt; &lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;span style="color:blue;"&gt;="200px"&lt;/span&gt; &lt;span style="color:red;"&gt;Width&lt;/span&gt;&lt;span style="color:blue;"&gt;="400px"&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="color:#a31515;"&gt;RoundedCorners&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="SpellE"&gt;&lt;span style="color:red;"&gt;BodyCornerTopLeftCssClass&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;="&lt;span class="SpellE"&gt;cornerLeft&lt;/span&gt;"&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="color:red;"&gt;BodyCornerTopRightCssClass&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;="&lt;span class="SpellE"&gt;cornerRight&lt;/span&gt;"&lt;/span&gt; &lt;span class="SpellE"&gt;&lt;span style="color:red;"&gt;BodyEdgeTopCssClass&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;="&lt;span class="SpellE"&gt;edgeTop&lt;/span&gt;"&lt;/span&gt; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Header&lt;/span&gt; &lt;span style="color:red;"&gt;Visible&lt;/span&gt;&lt;span style="color:blue;"&gt;="False"&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Header&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span class="SpellE"&gt;&lt;span style="color:#a31515;"&gt;ig&lt;/span&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;span style="color:#a31515;"&gt;WebDialogWindow&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-3096446183869320572?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/YGbbgrlmrTE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/YGbbgrlmrTE/customize-web-dialog-header.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/08/customize-web-dialog-header.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-1670476670259050376</guid><pubDate>Tue, 04 Aug 2009 20:43:00 +0000</pubDate><atom:updated>2009-08-05T07:24:34.248-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET</category><category domain="http://www.blogger.com/atom/ns#">Javascript and AJAX</category><title>Resizing the infragistics web grid and column automatically</title><description>&lt;p&gt;Set Body&lt;/p&gt;&lt;p&gt;body onload ="OnPageLoad();" onresize="SetGridSize();"&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;JavaScript function:&lt;/p&gt;&lt;p&gt;&lt;br /&gt;function OnPageLoad() {&lt;br /&gt;SetGridSize();&lt;br /&gt;}&lt;br /&gt;function SetGridSize() {&lt;br /&gt;//debugger;&lt;br /&gt;//g_grdMediaAttachments_ClientID defined in the codeBehind&lt;br /&gt;var webGrid = igtbl_getGridById(g_grdMediaAttachments_ClientID);&lt;br /&gt;var band = webGrid.Bands[0];&lt;br /&gt;var column = band.getColumnFromKey("Comments");&lt;br /&gt;column.setWidth(GetResizedColumnWidth());&lt;/p&gt;&lt;p&gt;        //Not sure why the total of the column width are not equal to frame width&lt;br /&gt;        var totalColumnWidth = GetResizedColumnWidth()) + GetFixedColumnWidth() - 34;&lt;br /&gt;        webGrid.MainGrid.style.width = totalColumnWidth + "px";&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;}&lt;br /&gt;function GetResizedColumnWidth() {&lt;br /&gt;var resizedColumnWidth = document.body.clientWidth - GetFixedColumnWidth();&lt;br /&gt;if (resizedColumnWidth &lt; resizedcolumnwidth =" 150;" fixedcolumnwidth =" 0;" fixedcolumnwidth =" fixedColumnWidth" fixedcolumnwidth =" fixedColumnWidth" fixedcolumnwidth =" fixedColumnWidth" fixedcolumnwidth =" fixedColumnWidth" fixedcolumnwidth =" fixedColumnWidth" fixedcolumnwidth =" fixedColumnWidth" width =" 0;" webgrid =" igtbl_getGridById(g_grdMediaAttachments_ClientID);" band =" webGrid.Bands[0];" column =" band.getColumnFromKey(columnName);" width =" column.getWidth();"&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-1670476670259050376?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/aoiMOuPkVQY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/aoiMOuPkVQY/resizing-infragistics-web-grid-and.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/08/resizing-infragistics-web-grid-and.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-746087884711044303</guid><pubDate>Tue, 23 Jun 2009 15:33:00 +0000</pubDate><atom:updated>2009-06-23T08:34:10.438-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NET and SQL SERVER</category><title>Create stored procedure if doesn't exists in sysobjects</title><description>&lt;p align="left"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;not&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;exists(&lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;Select&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;*&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;from&lt;/span&gt;&lt;span style="font-size:85%;"&gt; sysobjects &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;where&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;name&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;=&lt;/span&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;'ON_TIME_DELIVERY_TELCON2006'&lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;p align="left"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;begin&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;EXEC&lt;/span&gt;&lt;span style="font-size:85%;"&gt; dbo&lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;.&lt;/span&gt;&lt;span style="font-size:85%;color:#800000;"&gt;sp_executesql&lt;/span&gt;&lt;span style="font-size:85%;"&gt; @statement &lt;/span&gt;&lt;span style="font-size:85%;color:#808080;"&gt;=&lt;/span&gt;&lt;span style="font-size:85%;"&gt; N&lt;/span&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;CREATE PROCEDURE ON_TIME_DELIVERY_TELCON2006 AS&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;SELECT * FROM ACCOUNTS'&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt; &lt;p align="left"&gt;end&lt;/p&gt;&lt;/span&gt; &lt;/span&gt;&lt;p align="left"&gt;&lt;span style="font-size:85%;color:#0000ff;"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-746087884711044303?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/rsYVT6hf2JQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/rsYVT6hf2JQ/create-stored-procedure-if-doesnt.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/06/create-stored-procedure-if-doesnt.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-3201400004134201196</guid><pubDate>Fri, 19 Jun 2009 15:27:00 +0000</pubDate><atom:updated>2009-06-19T08:28:11.272-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">sql server</category><title>Convert Multiple Rows into single Row</title><description>&lt;span style="font-weight: bold;"&gt;Method 1:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;DECLARE @str varchar(4000)&lt;br /&gt;SET @str = (SELECT CONTACT_EMAIL + ';' FROM table FOR XML PATH(''))&lt;br /&gt;SET @str = SUBSTRING(@str,1,LEN(@str)-1)&lt;br /&gt;SELECT @str&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Method 2:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;DECLARE @str varchar(4000)&lt;br /&gt;SELECT @str = COALESCE(@str + ';', '') + CONTACT_EMAIL FROM table&lt;br /&gt;SELECT @str&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Method 3:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;DECLARE @str varchar(4000)&lt;br /&gt;SELECT DISTINCT STUFF( (SELECT CONTACT_EMAIL + ';'   from table  FOR XML PATH('')),1,1,'')&lt;br /&gt;SELECT @str&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-3201400004134201196?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/bP9ASqPJ5BI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/bP9ASqPJ5BI/convert-multiple-rows-into-single-row.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/06/convert-multiple-rows-into-single-row.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-369953181159047597</guid><pubDate>Mon, 15 Jun 2009 18:53:00 +0000</pubDate><atom:updated>2009-06-15T11:54:24.383-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">sql server</category><title>Automatically Create Install Scripts with Sql Server</title><description>Problem: How can I QUICKLY create an install script automatically in sql server every time I change my database? Creating an install script in sql server is pretty easy thanks to the "Script Database As..." command. However, this is generally a long winded process that doesn't give you too much control.&lt;br /&gt;&lt;br /&gt;In this post, I propose a solution to create build scripts with the following requirements&lt;br /&gt;&lt;br /&gt;  1. Don't need to write any code&lt;br /&gt;  2. Easily maintainable&lt;br /&gt;  3. Can script schema AND data&lt;br /&gt;  4. Can specify which objects to script&lt;br /&gt;  5. Can run automatically before an MSI setup/deployment project is built&lt;br /&gt;  6. It has to be FREE&lt;br /&gt;&lt;br /&gt;The first thing you need to do is download Microsoft's Database Publishing Wizard (http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&amp;amp;displaylang=en)&lt;br /&gt;&lt;br /&gt;Next, in your development sql server, add two new accounts named: ScriptSchema and ScriptData. Make sure they are created as a sql login. At this point, don't give them any other access than public access to the database you want to script.&lt;br /&gt;&lt;br /&gt;Open the database you want to script. For each table/view/stored proc etc that you want to include in the install, grant view definition access to the ScriptSchema user as follows:&lt;br /&gt;&lt;br /&gt;grant view definition on &lt;schema&gt;.&lt;object name=""&gt; to scriptschema&lt;br /&gt;&lt;br /&gt;Next, for each table that you want to script the data for, grant select permission on that table to the ScriptData user, ie:&lt;br /&gt;&lt;br /&gt;grant select on &lt;schema&gt;.&lt;table name=""&gt; to scriptdata&lt;br /&gt;&lt;br /&gt;You can double up, so for instance if you want to script the creation and population of data of a certain table called [dbo].[customers] you'd run the two commands:&lt;br /&gt;&lt;br /&gt;grant view definition on [dbo].[customers] to scriptschema&lt;br /&gt;&lt;br /&gt;grant select on [dbo].[customers] to scriptdata&lt;br /&gt;&lt;br /&gt;Once you've set up the permissions, you can check out what will be scripted by connecting to the database as the scriptschema and scriptdata users. As you've now defined what will be scripted, it's time to do the scripting itself.&lt;br /&gt;&lt;br /&gt;Jump out into a cmd.exe, and run the two commands;&lt;br /&gt;&lt;br /&gt;sqlpubwiz script -C "data source=[server]; initial catalog=[database]; uid=scriptschema; pwd=password;" schema.sql -schemaonly -f&lt;br /&gt;&lt;br /&gt;sqlpubwiz script -C "data source=[server]; initial catalog=[database]; uid=scriptdata; pwd=password;" data.sql -dataonly -f&lt;br /&gt;&lt;br /&gt;The first command connects to the database using the scriptschema account, and generates the definition of all the objects it can see, ie: those which you gave grant view definition access to.&lt;br /&gt;&lt;br /&gt;Likewise the second command connects to teh database using the scriptdata account and generates the scripts to insert the data, based on all the tables it can select from.&lt;br /&gt;&lt;br /&gt;You now have two scripts: schema.sql, data.sql. You can add these to your msi/setup projects in visual studio (outside the scope of this post). Furthermore you can then add the two commands mentioned to the pre-build events of your setup's resource project to build the install scripts prior to the MSI etc being built.&lt;br /&gt;&lt;br /&gt;I really like this solution to automatically generate sql install scripts. I feel it's elegant, there's no code to be maintained, and no manual updating of sql scripts every time you change the database. &lt;/table&gt;&lt;/schema&gt;&lt;/object&gt;&lt;/schema&gt;&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-369953181159047597?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/pCkkLguWrcs" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/pCkkLguWrcs/automatically-create-install-scripts.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/06/automatically-create-install-scripts.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-5922070686110829397</guid><pubDate>Thu, 11 Jun 2009 13:05:00 +0000</pubDate><atom:updated>2009-06-11T06:06:09.501-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Asp.net and ajax</category><title>Team Deployment</title><description>http://www.tfsbuild.com/Default.aspx?Page=TeamDeploy&amp;AspxAutoDetectCookieSupport=1&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-5922070686110829397?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/A_gP4wVZFZk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/A_gP4wVZFZk/team-deployment.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/06/team-deployment.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3744483557142165086.post-5553350582508429648</guid><pubDate>Thu, 04 Jun 2009 19:53:00 +0000</pubDate><atom:updated>2009-06-04T14:09:17.450-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ASP.NT AND IIS</category><title>Memory leak configuration</title><description>http://blogs.msdn.com/tess/archive/2009/05/12/debug-diag-script-for-troubleshooting-net-2-0-memory-leaks.aspx&lt;br /&gt;&lt;br /&gt;http://msdn.microsoft.com/en-us/library/ms954593.aspx#dbgch04_scenariounexpected&lt;br /&gt;&lt;br /&gt;http://msdn.microsoft.com/en-us/library/ms954591.aspx&lt;br /&gt;&lt;br /&gt;http://www.red-gate.com/products/ants_memory_profiler/index.htm&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://support.microsoft.com/?id=911816&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://social.msdn.microsoft.com/Forums/en-US/netfxsetup/thread/ed3d8886-459f-4f13-8a8e-ec86b7f6f4a6&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/9fc91efe-5a5c-42da-a0b3-101752ce92f6/&lt;br /&gt;&lt;br /&gt;http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/297cc644-00ec-412f-a417-9e8ad1f070f7/&lt;div class="blogger-post-footer"&gt;ASP.NET,C#,VB.NET,SQL SERVER AND SSIS Tips &amp; Tricks&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3744483557142165086-5553350582508429648?l=www.dotnet-tips.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/eLLW/~4/0dpzzh9fqdg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/blogspot/eLLW/~3/0dpzzh9fqdg/memory-leak-configuration.html</link><author>noreply@blogger.com (stanley)</author><thr:total>0</thr:total><feedburner:origLink>http://www.dotnet-tips.com/2009/06/memory-leak-configuration.html</feedburner:origLink></item></channel></rss>
