<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>IBlog</title>
	<atom:link href="http://blog.objectpattern.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.objectpattern.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 31 Oct 2011 15:03:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Word documents and merging two branches</title>
		<link>http://blog.objectpattern.com/uncategorized/word-documents-and-merging-two-branches/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=word-documents-and-merging-two-branches</link>
		<comments>http://blog.objectpattern.com/uncategorized/word-documents-and-merging-two-branches/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 18:16:43 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/uncategorized/word-documents-and-merging-two-branches/</guid>
		<description><![CDATA[Do you create word documents? Do you send them for review to your boss? I think, answers of both of these questions will be “yes” for most people, and I’m not exception! MS Word have a good feature – Track Changes. As it’s name suggests, it  tracks the changes while document is being edited, and [...]]]></description>
			<content:encoded><![CDATA[<p>Do you create word documents? Do you send them for review to your boss? I think, answers of both of these questions will be “yes” for most people, and I’m not exception! MS Word have a good feature – Track Changes. As it’s name suggests, it  tracks the changes while document is being edited, and can show final (edited version) of the document or can show final document with highlighting changes . While changes are highlighted, they are easy to notice and can also navigation across changes easily.</p>
<p>But, if your boss forgot to start the change tracking, then? Well, not to worry, word can do merging of two different branches like a version control. Steps:</p>
<ol>
<li><strong>Very important!</strong> Make sure you are having extra copy (backup) of both the documents (your copy and boss’s copy). Just in case we create mess in the process, you don’t loose your valuable information in these documents.</li>
<li>After making sure both documents (e.g. “My Copy” and “Boss’s Copy”) are closed, open “Boss’s Copy” document in MS Word.</li>
<li>Invoke “Save as“ operation and try and save it over “My Copy” of the document. (Notice already open document name and Save as name in the image)</li>
<li>Word should prompt you for different available option, having one of them to be “Merge changes into existing files” (for example, as  depicted in image), select it and continue with “Save as” operation.</li>
</ol>
<p>In the result of above, “My Copy” document will be updated as if Boss have changed the document while having “Change Track” on.</p>
<p><a href="http://blog.objectpattern.com/wp-content/uploads/2011/07/SaveAs-And-Overwrite-Me.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SaveAs-And-Overwrite-Me" src="http://blog.objectpattern.com/wp-content/uploads/2011/07/SaveAs-And-Overwrite-Me_thumb.jpg" border="0" alt="SaveAs-And-Overwrite-Me" width="641" height="525" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/uncategorized/word-documents-and-merging-two-branches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WaitHandles&#8217; Switch</title>
		<link>http://blog.objectpattern.com/dot-net/waithandles-switch/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=waithandles-switch</link>
		<comments>http://blog.objectpattern.com/dot-net/waithandles-switch/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 10:27:13 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/dot-net/waithandles-switch/</guid>
		<description><![CDATA[I will say it again: “I like extension methods”. They provide great way of increase readability of the code in languages like C#.
Anyway this post is not about extension method. Have you ever needed to write code that will wait on different wait handles (WaitHandle) and execute different piece of code depending up on which [...]]]></description>
			<content:encoded><![CDATA[<p>I will say it again: “I like extension methods”. They provide great way of increase readability of the code in languages like C#.</p>
<p>Anyway this post is not about extension method. Have you ever needed to write code that will wait on different wait handles (<a href="http://msdn.microsoft.com/en-us/library/system.threading.waithandle.aspx">WaitHandle</a>) and execute different piece of code depending up on which handle is signaled. Here is one way to implement that:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> WaitSwitch(<span class="kwrd">this</span> WaitHandle[] waitHandles, <span class="kwrd">params</span> Action[] actions)</pre>
<pre><span class="lnum">   2:  </span>{</pre>
<pre class="alt"><span class="lnum">   3:  </span>    waitHandles.DoEmptyOrNullArgCheck(<span class="str">&quot;waitHandles&quot;</span>);</pre>
<pre><span class="lnum">   4:  </span>    actions.DoEmptyOrNullArgCheck(<span class="str">&quot;waitHandles&quot;</span>);</pre>
<pre class="alt"><span class="lnum">   5:  </span>&#160;</pre>
<pre><span class="lnum">   6:  </span>    <span class="kwrd">if</span> (waitHandles.Length != actions.Length)</pre>
<pre class="alt"><span class="lnum">   7:  </span>        <span class="kwrd">throw</span> <span class="kwrd">new</span> ArgumentException(<span class="str">&quot;length of wait handles and actions has to be same&quot;</span>);</pre>
<pre><span class="lnum">   8:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">   9:  </span>    var triggerIndex = WaitHandle.WaitAny(waitHandles);</pre>
<pre><span class="lnum">  10:  </span>    actions[triggerIndex]();</pre>
<pre class="alt"><span class="lnum">  11:  </span>}</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>And then client code will become as:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>(<span class="kwrd">new</span>[] { shutdownTriggeredEvent, updateAvailableEvent }).WaitSwitch(</pre>
<pre><span class="lnum">   2:  </span>    () =&gt; isShutdownRequested = <span class="kwrd">true</span>, </pre>
<pre class="alt"><span class="lnum">   3:  </span>    DownloadNextUpdate</pre>
<pre><span class="lnum">   4:  </span>);</pre>
</div>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/dot-net/waithandles-switch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP 404 while asp.net web forms and spring.net project</title>
		<link>http://blog.objectpattern.com/asp-net/http-404-while-asp-net-web-forms-and-spring-net-project/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=http-404-while-asp-net-web-forms-and-spring-net-project</link>
		<comments>http://blog.objectpattern.com/asp-net/http-404-while-asp-net-web-forms-and-spring-net-project/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 10:02:22 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Spring.NET]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/asp-net/http-404-while-asp-net-web-forms-and-spring-net-project/</guid>
		<description><![CDATA[While doing some refactoring with the project, I suddenly start getting HTTP 404, and that to for all pages that exists and was working few minutes back. I was amused to get the error, with the fact that pages existed, I could see them and feel them! After a while, I noticed that I have [...]]]></description>
			<content:encoded><![CDATA[<p>While doing some refactoring with the project, I suddenly start getting HTTP 404, and that to for all pages that exists and was working few minutes back. I was amused to get the error, with the fact that pages existed, I could see them and feel them! After a while, I noticed that I have deleted a existing .aspx file from project which I forgot to remove from spring.net configuration file.</p>
<p>If you add any .aspx in Spring.Net config that do not exists, Spring.NET brings you to yellow screen with appropriate message. But not when you delete one from project and forget to remove from config file! At least not all the time.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/asp-net/http-404-while-asp-net-web-forms-and-spring-net-project/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scoping the search result in Firefox</title>
		<link>http://blog.objectpattern.com/internet/scoping-the-search-result-in-firefox/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=scoping-the-search-result-in-firefox</link>
		<comments>http://blog.objectpattern.com/internet/scoping-the-search-result-in-firefox/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 10:01:11 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/?p=114</guid>
		<description><![CDATA[Do you know, in Firefox 5 it’s possible to scope the search results. For example if you suffix or prefix search text with *, results will be only from bookmarks! That’s helpful, isn’t it. And there are more such special characters that can be used to scope the search result.&#160; More over that, combination of [...]]]></description>
			<content:encoded><![CDATA[<p>Do you know, in Firefox 5 it’s possible to scope the search results. For example if you suffix or prefix search text with *, results will be only from bookmarks! That’s helpful, isn’t it. And there are more such special characters that can be used to scope the search result.&#160; More over that, combination of multiple such character is possible as well, that’s more helpful! See details <a href="http://support.mozilla.com/en-US/kb/Location%20bar%20autocomplete?s=awesome+bar&amp;as=s#w_changing-results-on-the-fly">here</a>. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/internet/scoping-the-search-result-in-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScript, and var</title>
		<link>http://blog.objectpattern.com/uncategorized/javascript-and-var/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=javascript-and-var</link>
		<comments>http://blog.objectpattern.com/uncategorized/javascript-and-var/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 08:46:23 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/uncategorized/javascript-and-var/</guid>
		<description><![CDATA[While working in my current project, I re-learned this hard way.&#160; And I don’t want to make same mistake again, hence noting it here. Many a times you remember something better when noted somewhere.
I had created a javascript that was similar as below:

   1:  function Type1(){
   2:    [...]]]></description>
			<content:encoded><![CDATA[<p>While working in my current project, I re-learned this hard way.&#160; And I don’t want to make same mistake again, hence noting it here. Many a times you remember something better when noted somewhere.</p>
<p>I had created a javascript that was similar as below:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">function</span> Type1(){</pre>
<pre><span class="lnum">   2:  </span>    _type = <span class="str">&quot;type1&quot;</span>;</pre>
<pre class="alt"><span class="lnum">   3:  </span>    <span class="kwrd">this</span>.show = <span class="kwrd">function</span>() { alert(_type); }</pre>
<pre><span class="lnum">   4:  </span>}</pre>
<pre class="alt"><span class="lnum">   5:  </span><span class="kwrd">function</span> Type2(){</pre>
<pre><span class="lnum">   6:  </span>    _type = <span class="str">&quot;type2&quot;</span>;</pre>
<pre class="alt"><span class="lnum">   7:  </span>    <span class="kwrd">this</span>.show = <span class="kwrd">function</span>() { alert(_type); }</pre>
<pre><span class="lnum">   8:  </span>}</pre>
<pre class="alt"><span class="lnum">   9:  </span>o1 = <span class="kwrd">new</span> Type1();</pre>
<pre><span class="lnum">  10:  </span>o2 = <span class="kwrd">new</span> Type2();</pre>
<pre class="alt"><span class="lnum">  11:  </span>o1.show();</pre>
<pre><span class="lnum">  12:  </span>o2.show();</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>And me being ignorant about what I have written, was expecting to see two alerts once with “type1” and another with “type2”. </p>
<p>Case that I had was more complex , hence I took more time to understand the problem, and then note that I haven’t have “var”! The code should be as:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">function</span> Type1(){</pre>
<pre><span class="lnum">   2:  </span>    <span class="kwrd">var</span> _type = <span class="str">&quot;type1&quot;</span>;</pre>
<pre class="alt"><span class="lnum">   3:  </span>    <span class="kwrd">this</span>.show = <span class="kwrd">function</span>() { alert(_type); }</pre>
<pre><span class="lnum">   4:  </span>}</pre>
<pre class="alt"><span class="lnum">   5:  </span><span class="kwrd">function</span> Type2(){</pre>
<pre><span class="lnum">   6:  </span>    <span class="kwrd">var</span> _type = <span class="str">&quot;type2&quot;</span>;</pre>
<pre class="alt"><span class="lnum">   7:  </span>    <span class="kwrd">this</span>.show = <span class="kwrd">function</span>() { alert(_type); }</pre>
<pre><span class="lnum">   8:  </span>}</pre>
<pre class="alt"><span class="lnum">   9:  </span>o1 = <span class="kwrd">new</span> Type1();</pre>
<pre><span class="lnum">  10:  </span>o2 = <span class="kwrd">new</span> Type2();</pre>
<pre class="alt"><span class="lnum">  11:  </span>o1.show();</pre>
<pre><span class="lnum">  12:  </span>o2.show();</pre>
</div>
<p>Note and Remember, “var” defines the scope of variable as local! </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/uncategorized/javascript-and-var/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Separate domain and Runas</title>
		<link>http://blog.objectpattern.com/networking/separate-domain-and-runas/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=separate-domain-and-runas</link>
		<comments>http://blog.objectpattern.com/networking/separate-domain-and-runas/#comments</comments>
		<pubDate>Thu, 02 Jun 2011 08:15:17 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[Networking]]></category>
		<category><![CDATA[Windows Plateform]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/?p=106</guid>
		<description><![CDATA[Have you ever wonder how can you run a specific application having awareness of different domain&#8217;s credentials? We have VPN setup between our different offices, and all offices are having complete separate windows domain tree. I&#8217;m in Pune office, that is having domain, which has not direct relation to our US office (e.g. it&#8217;s not [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wonder how can you run a specific application having awareness of different domain&#8217;s credentials? We have VPN setup between our different offices, and all offices are having complete separate windows domain tree. I&#8217;m in Pune office, that is having domain, which has not direct relation to our US office (e.g. it&#8217;s not welcomed in networking terms) &#8211; and believe me there is a good reason to be it that way.</p>
<p>While being in Pune, I needed to run an application on my machine (that is in Pune domain), with is aware that I also have valid credentials in our US office. And Runas worked well in that case as well. Runas.exe can be found in %WINDIR%\System32, checkout its short help by: %windir%\system32\runas.exe /? on command prompt.</p>
<p>I had used it as %WINDIR%\System32\runas.exe /netonly /user:&lt;my US domain name&gt;\&lt;my username in US domain name&gt; &#8220;&lt;path to the application that should run within that credentials&gt;&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/networking/separate-domain-and-runas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading XP by SP3 on Laptop</title>
		<link>http://blog.objectpattern.com/windows-plateform/upgrading-xp-by-sp3-on-laptop/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=upgrading-xp-by-sp3-on-laptop</link>
		<comments>http://blog.objectpattern.com/windows-plateform/upgrading-xp-by-sp3-on-laptop/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 14:04:11 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[Windows Plateform]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/windows-plateform/upgrading-xp-by-sp3-on-laptop/</guid>
		<description><![CDATA[I was trying to apply Windows XP SP3 through windows auto updates.&#160; Auto update repeatedly reported that it couldn’t apply SP3 update. After digging further, I found that update was failing because laptop was not on AC supply. 
Two points to note:

On laptop, shouldn’t apply windows update while battery powered 
Interesting to understand that either [...]]]></description>
			<content:encoded><![CDATA[<p>I was trying to apply Windows XP SP3 through windows auto updates.&#160; Auto update repeatedly reported that it couldn’t apply SP3 update. After digging further, I found that update was failing because laptop was not on AC supply. </p>
<p>Two points to note:</p>
<ol>
<li>On laptop, shouldn’t apply windows update while battery powered </li>
<li>Interesting to understand that either xp auto update do not have way to report correct problem and instead just say “Could not apply following updates”, or maybe SP3 installer is not rightly coded for auto update. </li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/windows-plateform/upgrading-xp-by-sp3-on-laptop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thought, Suggestion, Quote,</title>
		<link>http://blog.objectpattern.com/random-thoughts/thought-suggestion-quote/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=thought-suggestion-quote</link>
		<comments>http://blog.objectpattern.com/random-thoughts/thought-suggestion-quote/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 08:50:46 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[Random thoughts]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/uncategorized/thought-suggestion-quote/</guid>
		<description><![CDATA[Bad news is better than no communication
]]></description>
			<content:encoded><![CDATA[<p>Bad news is better than no communication</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/random-thoughts/thought-suggestion-quote/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aggregation by rolling week</title>
		<link>http://blog.objectpattern.com/tsql/aggregation-by-rolling-week/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=aggregation-by-rolling-week</link>
		<comments>http://blog.objectpattern.com/tsql/aggregation-by-rolling-week/#comments</comments>
		<pubDate>Sat, 08 Jan 2011 12:07:45 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[TSQL]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/uncategorized/aggregation-by-rolling-week/</guid>
		<description><![CDATA[In my current project, we had interesting problem, customer wants to see few data aggregation by rolling week and not year week. Rolling week mean say today is ‘Saturday’, data should aggregate by all week ending ‘Saturday’, but if it was ‘Tuesday’, data should aggregate by by all week ending &#8216;Tuesday’.  When I heard this [...]]]></description>
			<content:encoded><![CDATA[<p>In my current project, we had interesting problem, customer wants to see few data aggregation by rolling week and not year week. Rolling week mean say today is ‘Saturday’, data should aggregate by all week ending ‘Saturday’, but if it was ‘Tuesday’, data should aggregate by by all week ending &#8216;Tuesday’.  When I heard this for first time, I thought this going to end up real big and complex procedure. But to my surprise it’s not:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span><span class="kwrd">select</span> customerId, bSaleDate <span class="kwrd">as</span> SaleDate, <span class="kwrd">SUM</span>(Amount) <span class="kwrd">as</span> Amount</pre>
<pre><span class="lnum">   2:  </span><span class="kwrd">from</span></pre>
<pre class="alt"><span class="lnum">   3:  </span>(</pre>
<pre><span class="lnum">   4:  </span>    <span class="kwrd">select</span> <span class="kwrd">distinct</span></pre>
<pre class="alt"><span class="lnum">   5:  </span>        SaleByCustomerAndDate.customerId,</pre>
<pre><span class="lnum">   6:  </span>        SaleSevenDayRange.SaleDate <span class="kwrd">as</span> bSaleDate,</pre>
<pre class="alt"><span class="lnum">   7:  </span>        SaleByCustomerAndDate.SaleDate <span class="kwrd">as</span> aSaleDate,</pre>
<pre><span class="lnum">   8:  </span>        SaleByCustomerAndDate.Amount <span class="kwrd">as</span> Amount</pre>
<pre class="alt"><span class="lnum">   9:  </span>    <span class="kwrd">from</span></pre>
<pre><span class="lnum">  10:  </span>    (</pre>
<pre class="alt"><span class="lnum">  11:  </span>        <span class="kwrd">select</span></pre>
<pre><span class="lnum">  12:  </span>            customerId,</pre>
<pre class="alt"><span class="lnum">  13:  </span>            SaleDate,</pre>
<pre><span class="lnum">  14:  </span>            <span class="kwrd">SUM</span>(Amount) <span class="kwrd">as</span> Amount</pre>
<pre class="alt"><span class="lnum">  15:  </span>        <span class="kwrd">from</span></pre>
<pre><span class="lnum">  16:  </span>            Sale</pre>
<pre class="alt"><span class="lnum">  17:  </span>        <span class="kwrd">group</span> <span class="kwrd">by</span></pre>
<pre><span class="lnum">  18:  </span>            customerId,</pre>
<pre class="alt"><span class="lnum">  19:  </span>            SaleDate</pre>
<pre><span class="lnum">  20:  </span>    )</pre>
<pre class="alt"><span class="lnum">  21:  </span>    <span class="kwrd">as</span> SaleByCustomerAndDate <span class="kwrd">inner</span> <span class="kwrd">join</span></pre>
<pre><span class="lnum">  22:  </span>    (</pre>
<pre class="alt"><span class="lnum">  23:  </span>        <span class="kwrd">select</span></pre>
<pre><span class="lnum">  24:  </span>            customerId,</pre>
<pre class="alt"><span class="lnum">  25:  </span>            SaleDate,</pre>
<pre><span class="lnum">  26:  </span>            DATEADD(<span class="kwrd">DAY</span>,-6,SaleDate) <span class="kwrd">as</span> LastSevenDay</pre>
<pre class="alt"><span class="lnum">  27:  </span>        <span class="kwrd">from</span> Sale</pre>
<pre><span class="lnum">  28:  </span>    ) <span class="kwrd">as</span> SaleSevenDayRange <span class="kwrd">on</span> SaleByCustomerAndDate.SaleDate</pre>
<pre class="alt"><span class="lnum">  29:  </span>        <span class="kwrd">between</span></pre>
<pre><span class="lnum">  30:  </span>            SaleSevenDayRange.LastSevenDay</pre>
<pre class="alt"><span class="lnum">  31:  </span>            <span class="kwrd">and</span></pre>
<pre><span class="lnum">  32:  </span>            SaleSevenDayRange.SaleDate</pre>
<pre class="alt"><span class="lnum">  33:  </span>    <span class="kwrd">and</span> SaleByCustomerAndDate.customerId = SaleSevenDayRange.customerId</pre>
<pre><span class="lnum">  34:  </span>) <span class="kwrd">as</span> c</pre>
<pre class="alt"><span class="lnum">  35:  </span><span class="kwrd">group</span> <span class="kwrd">by</span></pre>
<pre><span class="lnum">  36:  </span>    customerId,</pre>
<pre class="alt"><span class="lnum">  37:  </span>    bSaleDate</pre>
<pre><span class="lnum">  38:  </span><span class="kwrd">order</span> <span class="kwrd">by</span> customerId, SaleDate</pre>
</div>
<p><!-- .csharpcode, .csharpcode pre { 	font-size: small; 	color: black; 	font-family: consolas, "Courier New", courier, monospace; 	background-color: #ffffff; 	/*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt  { 	background-color: #f4f4f4; 	width: 100%; 	margin: 0em; } .csharpcode .lnum { color: #606060; } --></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/tsql/aggregation-by-rolling-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET Postback on table row click</title>
		<link>http://blog.objectpattern.com/dot-net/asp-net-postback-on-table-row-click/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=asp-net-postback-on-table-row-click</link>
		<comments>http://blog.objectpattern.com/dot-net/asp-net-postback-on-table-row-click/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 03:04:37 +0000</pubDate>
		<dc:creator>Himanshu</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://blog.objectpattern.com/dot-net/asp-net-postback-on-table-row-click/</guid>
		<description><![CDATA[When you need to go back to the server for further processing on clicking of a html element, for example on html table row click, below code may help you provide such functioning in ASP.NET.
Well, actually to allow control to support bubbling of the events, and allow user of the control to specify CommandName and [...]]]></description>
			<content:encoded><![CDATA[<p>When you need to go back to the server for further processing on clicking of a html element, for example on html table row click, below code may help you provide such functioning in ASP.NET.</p>
<p>Well, actually to allow control to support bubbling of the events, and allow user of the control to specify CommandName and CommandArgument while being used in template controls,  there is some extract effort, essentially will need to implement IButtonControl. Let’s see the code below that I have implemented to provide function of  selecting row when clicked on it.</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>[ToolboxData(<span class="str">"&lt;{0}:ListViewRowClickCommand  CommandName=\"Select\" runat=\"server\"&gt;&lt;/{0}:ListViewRowClickCommand&gt;"</span>)]</pre>
<pre><span class="lnum">   2:  </span><span class="kwrd">public</span> <span class="kwrd">class</span> ListViewRowClickCommand : HtmlTableRow, IButtonControl, IPostBackEventHandler</pre>
<pre class="alt"><span class="lnum">   3:  </span>{</pre>
<pre><span class="lnum">   4:  </span>    <span class="kwrd">public</span> <span class="kwrd">bool</span> DisableCommand { get; set; }</pre>
<pre class="alt"><span class="lnum">   5:  </span>    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> Render(HtmlTextWriter writer)</pre>
<pre><span class="lnum">   6:  </span>    {</pre>
<pre class="alt"><span class="lnum">   7:  </span>        writer.WriteBeginTag(<span class="str">"tr"</span>);</pre>
<pre><span class="lnum">   8:  </span>        <span class="kwrd">if</span> (ID != <span class="kwrd">null</span>)</pre>
<pre class="alt"><span class="lnum">   9:  </span>            writer.WriteAttribute(<span class="str">"id"</span>, ClientID);</pre>
<pre><span class="lnum">  10:  </span>        <span class="kwrd">if</span> (!DesignMode)</pre>
<pre class="alt"><span class="lnum">  11:  </span>        {</pre>
<pre><span class="lnum">  12:  </span>            <span class="kwrd">if</span> (!DisableCommand)</pre>
<pre class="alt"><span class="lnum">  13:  </span>                writer.WriteAttribute(<span class="str">"onclick"</span>, <span class="str">"javascript:"</span> +</pre>
<pre><span class="lnum">  14:  </span>                    Page.ClientScript.GetPostBackEventReference(<span class="kwrd">this</span>, CommandArgument));</pre>
<pre class="alt"><span class="lnum">  15:  </span>        }</pre>
<pre><span class="lnum">  16:  </span>        Attributes.Render(writer);</pre>
<pre class="alt"><span class="lnum">  17:  </span>        writer.Write(HtmlTextWriter.TagRightChar);</pre>
<pre><span class="lnum">  18:  </span></pre>
<pre class="alt"><span class="lnum">  19:  </span>        RenderChildren(writer);</pre>
<pre><span class="lnum">  20:  </span>        writer.WriteEndTag(<span class="str">"tr"</span>);</pre>
<pre class="alt"><span class="lnum">  21:  </span>    }</pre>
<pre><span class="lnum">  22:  </span></pre>
<pre class="alt"><span class="lnum">  23:  </span>    <span class="kwrd">public</span> <span class="kwrd">bool</span> CausesValidation</pre>
<pre><span class="lnum">  24:  </span>    {</pre>
<pre class="alt"><span class="lnum">  25:  </span>        get { <span class="kwrd">return</span> (<span class="kwrd">bool</span>)(ViewState[<span class="str">"CausesValidation"</span>] ?? <span class="kwrd">true</span>); }</pre>
<pre><span class="lnum">  26:  </span>        set { ViewState[<span class="str">"CausesValidation"</span>] = <span class="kwrd">value</span>; }</pre>
<pre class="alt"><span class="lnum">  27:  </span>    }</pre>
<pre><span class="lnum">  28:  </span></pre>
<pre class="alt"><span class="lnum">  29:  </span>    <span class="kwrd">public</span> <span class="kwrd">string</span> CommandArgument</pre>
<pre><span class="lnum">  30:  </span>    {</pre>
<pre class="alt"><span class="lnum">  31:  </span>        get { <span class="kwrd">return</span> (<span class="kwrd">string</span>)ViewState[<span class="str">"CommandArgument"</span>]; }</pre>
<pre><span class="lnum">  32:  </span>        set { ViewState[<span class="str">"CommandArgument"</span>] = <span class="kwrd">value</span>; }</pre>
<pre class="alt"><span class="lnum">  33:  </span>    }</pre>
<pre><span class="lnum">  34:  </span></pre>
<pre class="alt"><span class="lnum">  35:  </span>    <span class="kwrd">public</span> <span class="kwrd">string</span> CommandName</pre>
<pre><span class="lnum">  36:  </span>    {</pre>
<pre class="alt"><span class="lnum">  37:  </span>        get { <span class="kwrd">return</span> (<span class="kwrd">string</span>)ViewState[<span class="str">"CommandName"</span>]; }</pre>
<pre><span class="lnum">  38:  </span>        set { ViewState[<span class="str">"CommandName"</span>] = <span class="kwrd">value</span>; }</pre>
<pre class="alt"><span class="lnum">  39:  </span>    }</pre>
<pre><span class="lnum">  40:  </span></pre>
<pre class="alt"><span class="lnum">  41:  </span>    <span class="kwrd">public</span> <span class="kwrd">string</span> PostBackUrl</pre>
<pre><span class="lnum">  42:  </span>    {</pre>
<pre class="alt"><span class="lnum">  43:  </span>        get { <span class="kwrd">return</span> (<span class="kwrd">string</span>)ViewState[<span class="str">"PostBackUrl"</span>]; }</pre>
<pre><span class="lnum">  44:  </span>        set { ViewState[<span class="str">"PostBackUrl"</span>] = <span class="kwrd">value</span>; }</pre>
<pre class="alt"><span class="lnum">  45:  </span>    }</pre>
<pre><span class="lnum">  46:  </span></pre>
<pre class="alt"><span class="lnum">  47:  </span>    <span class="kwrd">public</span> <span class="kwrd">string</span> ValidationGroup</pre>
<pre><span class="lnum">  48:  </span>    {</pre>
<pre class="alt"><span class="lnum">  49:  </span>        get { <span class="kwrd">return</span> (<span class="kwrd">string</span>)ViewState[<span class="str">"ValidationGroup"</span>]; }</pre>
<pre><span class="lnum">  50:  </span>        set { ViewState[<span class="str">"ValidationGroup"</span>] = <span class="kwrd">value</span>; }</pre>
<pre class="alt"><span class="lnum">  51:  </span>    }</pre>
<pre><span class="lnum">  52:  </span></pre>
<pre class="alt"><span class="lnum">  53:  </span>    <span class="kwrd">public</span> <span class="kwrd">event</span> EventHandler Click;</pre>
<pre><span class="lnum">  54:  </span>    <span class="kwrd">public</span> <span class="kwrd">event</span> CommandEventHandler Command;</pre>
<pre class="alt"><span class="lnum">  55:  </span></pre>
<pre><span class="lnum">  56:  </span>    <span class="kwrd">public</span> <span class="kwrd">void</span> RaisePostBackEvent(<span class="kwrd">string</span> eventArgument)</pre>
<pre class="alt"><span class="lnum">  57:  </span>    {</pre>
<pre><span class="lnum">  58:  </span>        <span class="kwrd">if</span> (CausesValidation)</pre>
<pre class="alt"><span class="lnum">  59:  </span>        {</pre>
<pre><span class="lnum">  60:  </span>            <span class="kwrd">if</span> (Page.IsPostBack)</pre>
<pre class="alt"><span class="lnum">  61:  </span>                Page.Validate();</pre>
<pre><span class="lnum">  62:  </span>            <span class="kwrd">if</span> (!Page.IsValid)</pre>
<pre class="alt"><span class="lnum">  63:  </span>                <span class="kwrd">return</span>;</pre>
<pre><span class="lnum">  64:  </span>        }</pre>
<pre class="alt"><span class="lnum">  65:  </span></pre>
<pre><span class="lnum">  66:  </span>        OnClick(EventArgs.Empty);</pre>
<pre class="alt"><span class="lnum">  67:  </span>        OnCommand(<span class="kwrd">new</span> CommandEventArgs(CommandName, CommandArgument));</pre>
<pre><span class="lnum">  68:  </span>    }</pre>
<pre class="alt"><span class="lnum">  69:  </span></pre>
<pre><span class="lnum">  70:  </span>    <span class="kwrd">protected</span> <span class="kwrd">virtual</span> <span class="kwrd">void</span> OnCommand(CommandEventArgs eventArgs)</pre>
<pre class="alt"><span class="lnum">  71:  </span>    {</pre>
<pre><span class="lnum">  72:  </span>        <span class="kwrd">if</span> (Command != <span class="kwrd">null</span>)</pre>
<pre class="alt"><span class="lnum">  73:  </span>            Command(<span class="kwrd">this</span>, eventArgs);</pre>
<pre><span class="lnum">  74:  </span></pre>
<pre class="alt"><span class="lnum">  75:  </span>        RaiseBubbleEvent(<span class="kwrd">this</span>, eventArgs);</pre>
<pre><span class="lnum">  76:  </span>    }</pre>
<pre class="alt"><span class="lnum">  77:  </span></pre>
<pre><span class="lnum">  78:  </span>    <span class="kwrd">protected</span> <span class="kwrd">virtual</span> <span class="kwrd">void</span> OnClick(EventArgs eventArgs)</pre>
<pre class="alt"><span class="lnum">  79:  </span>    {</pre>
<pre><span class="lnum">  80:  </span>        <span class="kwrd">if</span> (Click != <span class="kwrd">null</span>)</pre>
<pre class="alt"><span class="lnum">  81:  </span>            Click(<span class="kwrd">this</span>, eventArgs);</pre>
<pre><span class="lnum">  82:  </span>    }</pre>
<pre class="alt"><span class="lnum">  83:  </span>}</pre>
</div>
<p><!--</p>
<p>.csharpcode, .csharpcode pre<br />
{<br />
font-size: small;<br />
color: black;<br />
font-family: consolas, "Courier New", courier, monospace;<br />
background-color: #ffffff;<br />
/*white-space: pre;*/<br />
}<br />
.csharpcode pre { margin: 0em; }<br />
.csharpcode .rem { color: #008000; }<br />
.csharpcode .kwrd { color: #0000ff; }<br />
.csharpcode .str { color: #006080; }<br />
.csharpcode .op { color: #0000c0; }<br />
.csharpcode .preproc { color: #cc6633; }<br />
.csharpcode .asp { background-color: #ffff00; }<br />
.csharpcode .html { color: #800000; }<br />
.csharpcode .attr { color: #ff0000; }<br />
.csharpcode .alt<br />
{<br />
background-color: #f4f4f4;<br />
width: 100%;<br />
margin: 0em;<br />
}<br />
.csharpcode .lnum { color: #606060; } --><!--</p>
<p>.csharpcode, .csharpcode pre<br />
{<br />
font-size: small;<br />
color: black;<br />
font-family: consolas, "Courier New", courier, monospace;<br />
background-color: #ffffff;<br />
/*white-space: pre;*/<br />
}<br />
.csharpcode pre { margin: 0em; }<br />
.csharpcode .rem { color: #008000; }<br />
.csharpcode .kwrd { color: #0000ff; }<br />
.csharpcode .str { color: #006080; }<br />
.csharpcode .op { color: #0000c0; }<br />
.csharpcode .preproc { color: #cc6633; }<br />
.csharpcode .asp { background-color: #ffff00; }<br />
.csharpcode .html { color: #800000; }<br />
.csharpcode .attr { color: #ff0000; }<br />
.csharpcode .alt<br />
{<br />
background-color: #f4f4f4;<br />
width: 100%;<br />
margin: 0em;<br />
}<br />
.csharpcode .lnum { color: #606060; } --></p>
<p>Above control can be used as below:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span>...</pre>
<pre><span class="lnum">   2:  </span></pre>
<pre class="alt"><span class="lnum">   3:  </span>&lt;asp:ListView ID=<span class="str">"listViewOfSomething"</span> runat=<span class="str">"server"</span> OnSelectedIndexChanging=<span class="str">"OnSelectedIndexChanging"</span>&gt;</pre>
<pre><span class="lnum">   4:  </span>    &lt;LayoutTemplate&gt;</pre>
<pre class="alt"><span class="lnum">   5:  </span>        &lt;table <span class="kwrd">id</span>=<span class="str">"htmlTableOfSomething"</span> &gt;</pre>
<pre><span class="lnum">   6:  </span>            &lt;tbody&gt;</pre>
<pre class="alt"><span class="lnum">   7:  </span>                &lt;asp:PlaceHolder ID=<span class="str">"itemPlaceholder"</span> runat=<span class="str">"server"</span> /&gt;</pre>
<pre><span class="lnum">   8:  </span>            &lt;/tbody&gt;</pre>
<pre class="alt"><span class="lnum">   9:  </span>        &lt;/table&gt;</pre>
<pre><span class="lnum">  10:  </span>    &lt;/LayoutTemplate&gt;</pre>
<pre class="alt"><span class="lnum">  11:  </span>    &lt;ItemTemplate&gt;</pre>
<pre><span class="lnum">  12:  </span>        &lt;vdd:ListViewRowClickCommand ID=<span class="str">"ListViewRowClickCommand"</span> runat=<span class="str">"server"</span></pre>
<pre class="alt"><span class="lnum">  13:  </span>            CommandName=<span class="str">"Select"</span> Class=<span class="str">"SomeCssClassForRow"</span> &gt;</pre>
<pre><span class="lnum">  14:  </span>            &lt;td <span class="kwrd">class</span>=<span class="str">"CssClassForColumn"</span>&gt;</pre>
<pre class="alt"><span class="lnum">  15:  </span></pre>
<pre><span class="lnum">  16:  </span>...</pre>
</div>
<p>Feel free to put comments in case if things are not clear.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.objectpattern.com/dot-net/asp-net-postback-on-table-row-click/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

