<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://gregbeech.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Greg Beech&amp;#39;s Tech Blog - All Comments</title><link>http://gregbeech.com/blogs/tech/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2008 (Build: 30417.1769)</generator><item><title>re: Disposing and finalizing partially constructed objects</title><link>http://gregbeech.com/blogs/tech/archive/2008/08/27/disposing-and-finalizing-partially-constructed-objects.aspx#321</link><pubDate>Wed, 27 Aug 2008 23:08:56 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:321</guid><dc:creator>Dale</dc:creator><description>&lt;p&gt;You can call dispose from the constructor&amp;#39;s catch block for a convenient way to clean up a partially constructed object. Just make sure that the dispose method makes no assumptions about the state of the object. ie. Check each field for null before trying to do cleanup on it, for example.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=321" width="1" height="1"&gt;</description></item><item><title>re: Why doesn't System.Linq.Enumerable have a ForEach extension method?</title><link>http://gregbeech.com/blogs/tech/archive/2008/06/30/why-doesn-t-system-linq-enumerable-have-a-foreach-extension-method.aspx#319</link><pubDate>Tue, 26 Aug 2008 14:25:54 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:319</guid><dc:creator>wekempf</dc:creator><description>&lt;p&gt;I guess I&amp;#39;m looking at this from the perspective of functional programming. &amp;nbsp;The ForEach concept isn&amp;#39;t chainable. &amp;nbsp;In functional languages we&amp;#39;re generally interested in only two chainable operations, Map and Filter, both of which exist in LINQ in the forms of Select and Where. &amp;nbsp;Then we&amp;#39;re interested in Reduce, which maps to Aggregate in LINQ. &amp;nbsp;All other operations (include ForEach/Each/Loop) can be implemented on those operations alone. &amp;nbsp;For instance, to print out the values you could do this:&lt;/p&gt;
&lt;p&gt;list.Select(x =&amp;gt; { Console.WriteLine(x); return x; });&lt;/p&gt;
&lt;p&gt;However, since we&amp;#39;re not altering the list, it&amp;#39;s preferable to use a function that codifies this, so we have various loop/for/while functions. &amp;nbsp;Since these loops don&amp;#39;t modify the list, they don&amp;#39;t return anything, and thus are not chainable. &amp;nbsp;ForEach in LINQ should return void, and by necessity should not be deferred. &amp;nbsp;No developer that&amp;#39;s worked with a functional language will find this surprising... though they might take issue with the names chosen for LINQ. ;)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I certainly agree with your assessment that the ForEach loop concept isn&amp;#39;t chainable, and should be immediately executed and return void. This is how &lt;i&gt;List.iter&lt;/i&gt; works in F#, how &lt;i&gt;each&lt;/i&gt; works in Ruby, and indeed is what I implemented in our core library. I&amp;#39;d be happy enough if this is what was implemented in the base class library (or the one that takes a param array as in one of the above comments).&lt;/p&gt;
&lt;p&gt;But it&amp;#39;s also a valid concept in an impure language to want to add some lazy processing for each item in a pipeline (e.g. to log the item details) and in this case the ForEach method name would also seem appropriate. All I was trying to get at is that ForEach could mean different things to different people, and it isn&amp;#39;t immediately obvious from the method name what that meaning should be.&lt;/p&gt;
&lt;p&gt;Maybe the best solution of all is to call the immediately executed non chainable version something like Iterate instead of ForEach, which makes it absolutely obvious what it does.&lt;/p&gt;
&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=319" width="1" height="1"&gt;</description></item><item><title>re: Why doesn't System.Linq.Enumerable have a ForEach extension method?</title><link>http://gregbeech.com/blogs/tech/archive/2008/06/30/why-doesn-t-system-linq-enumerable-have-a-foreach-extension-method.aspx#318</link><pubDate>Mon, 25 Aug 2008 20:07:11 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:318</guid><dc:creator>wekempf</dc:creator><description>&lt;p&gt;I commented on Glenn Block&amp;#39;s site, but I&amp;#39;ll say it here as well. &amp;nbsp;Not all LINQ operations are chainable or deferred. &amp;nbsp;Average and Sum are neither. &amp;nbsp;I would not expect to be able to chain ForEach, nor would I expect it to be deferred. &amp;nbsp;I doubt any of this is the reason ForEach is missing in action.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Not all LINQ operations are chainable or deferred, however (as I actually said in the post) all operations that are chainable are &lt;i&gt;also &lt;/i&gt;deferred. It might appear that this does not hold true for operations which explicitly convert the sequence to another enumerable type (e.g. ToArray, ToList), though here you aren&amp;#39;t really chaining to the original query, you&amp;#39;re beginning a new chain from a new object, so it actually does still hold.&lt;/p&gt;
&lt;p&gt;Arguably, then, if you make ForEach chainable you should also make it deferred, and if it is not chainable then it should execute immediately (as you can see from the end of the post, the latter is the choice we went with for our core library). The problem is that this is less useful than the one that executes immediately but that can be chained. As I said, none of the methods are ideal, and you might want different semantics in different situations.&lt;/p&gt;
&lt;p&gt;I&amp;#39;d be interested to know what you think the reasons are for ForEach being omitted? It certainly isn&amp;#39;t laziness, or that they simply forgot to implement it, because this type of method is ubiquitous in functional libraries (including F#, Ruby, etc.) which means that they did leave it out on purpose.&lt;/p&gt;
&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=318" width="1" height="1"&gt;</description></item><item><title>Emitting primitive type conversions with Reflection.Emit</title><link>http://gregbeech.com/blogs/tech/archive/2008/07/20/emitting-arbitrary-constants-with-reflection-emit.aspx#315</link><pubDate>Wed, 20 Aug 2008 21:34:45 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:315</guid><dc:creator>Greg Beech's Tech Blog</dc:creator><description>&lt;p&gt;Conversion between primitive types is trivial in high-level languages like C# as you can use the cast&lt;/p&gt;
&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=315" width="1" height="1"&gt;</description></item><item><title>re: Code without comments is code that doesn't work</title><link>http://gregbeech.com/blogs/tech/archive/2008/08/04/code-without-comments-is-code-that-doesn-t-work.aspx#299</link><pubDate>Tue, 05 Aug 2008 10:29:32 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:299</guid><dc:creator>Neil Mosafi</dc:creator><description>&lt;p&gt;Hey mate, just stumbled across your blog... it&amp;#39;s made a good read - nice one!&lt;/p&gt;
&lt;p&gt;It&amp;#39;s funny, I used to really want to comment all my code. &amp;nbsp;Now I am working in a place and there are hardly any comments anywhere, and it&amp;#39;s really annoying! &amp;nbsp;I have kind of got used to it now, but I do at least like to see comments explaining why a certain statement is there in the first place, especially when that piece of code was added to satisfy an edge case. &amp;nbsp;e.g. I have seen code where a class receives an object, does some stuff with it, and then returns it. &amp;nbsp;However deep down in the code you actually find out that the object has been persisted to the database AND THEN LOADED AGAIN before being returned. &amp;nbsp;I could find no explanation for why it was loaded again after being saved, but I was too scared to remove as I thought it must have been done for a reason.&lt;/p&gt;
&lt;p&gt;Anyway, regarding the specific issue metioned, to be honest I would probably tackle this architecturally rather than using comments. &amp;nbsp;By using an interface, e.g. ISquareRootCalculator I can then inject an implementation (which used Newton-Raphson) using IOC. &amp;nbsp;This way, if I did want to change the algorithm I would only be adding code rather than changing code, and I wouldn&amp;#39;t have to update the comments aswell as the code. &amp;nbsp;I don&amp;#39;t think my class should really be concerned with the reasons a certain algorithm is chosen over another.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=299" width="1" height="1"&gt;</description></item><item><title>re: My new laptop: ASUS Lamborghini VX2s</title><link>http://gregbeech.com/blogs/tech/archive/2007/09/15/my-new-laptop-asus-lamborghini-vx2s.aspx#298</link><pubDate>Mon, 04 Aug 2008 21:37:59 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:298</guid><dc:creator>Greg Beech</dc:creator><description>&lt;p&gt;Hi Joe&lt;/p&gt;
&lt;p&gt;Yeah, I&amp;#39;m still finding it to be a great piece of kit, and it does everything I need from it on a daily basis. One slight niggle I have now is that since I installed SP1 on Vista I can&amp;#39;t get the bluetooth mouse that came with the laptop to pair with it - but that seems to be more the fault of Vista than the hardware itself. The other thing is that it really chews through batteries; in high performance mode it will drain the battery flat in under an hour, and even in normal mode it&amp;#39;s less than 90 minutes, so if you&amp;#39;re planning to work on the move then this might be an issue.&lt;/p&gt;
&lt;p&gt;One thing to watch out for with the SE version you mention is that (in the UK at least) the hard disk has gone up to 250GB but the spindle speed has gone down to 5400rpm which could impact the performance quite a bit compared to the 7200rpm drive in some other versions such as the one I have (it seems the specs change for the VX2s just about every month so it might be worth waiting until there&amp;#39;s a 7200rpm one).&lt;/p&gt;
&lt;p&gt;The blu-ray drive and HDMI output are great for movies, and it&amp;#39;s more than capable of running photo/video editing software.&lt;/p&gt;
&lt;p&gt;- Greg&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=298" width="1" height="1"&gt;</description></item><item><title>re: My new laptop: ASUS Lamborghini VX2s</title><link>http://gregbeech.com/blogs/tech/archive/2007/09/15/my-new-laptop-asus-lamborghini-vx2s.aspx#297</link><pubDate>Mon, 04 Aug 2008 21:12:29 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:297</guid><dc:creator>Joe Drapela</dc:creator><description>&lt;p&gt;Greg,&lt;/p&gt;
&lt;p&gt;Am ready to buy the Asus lamborghini &amp;nbsp;VX2Se-Ak001G for its abilities and of course its snob appeal.&lt;/p&gt;
&lt;p&gt;Am curious as to your opinion since you are by now out of the honeymoon phase.&lt;/p&gt;
&lt;p&gt;Are you still overall happy with this guy and is it worth &amp;nbsp;the extra expense for the lambo logo?&lt;/p&gt;
&lt;p&gt;My needs are for running Qbooks, and an auto &amp;nbsp;business software.&lt;/p&gt;
&lt;p&gt;My new hobby is fun &amp;nbsp;editing &amp;nbsp;photos and creating High Def. Blu-Ray videos.&lt;/p&gt;
&lt;p&gt;Your opinion is greatly appreciated&lt;/p&gt;
&lt;p&gt;.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=297" width="1" height="1"&gt;</description></item><item><title>re: Tips &amp; Tricks: Use DebuggerDisplayAttribute for easier debugging</title><link>http://gregbeech.com/blogs/tech/archive/2008/07/28/tips-amp-tricks-use-debuggerdisplayattribute-for-easier-debugging.aspx#290</link><pubDate>Tue, 29 Jul 2008 19:01:46 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:290</guid><dc:creator>Greg Beech</dc:creator><description>&lt;p&gt;Hey Sean&lt;/p&gt;
&lt;p&gt;The reason I don&amp;#39;t like ToString for this type of thing is because it means you should also be overriding Equals and GetHashCode as stated in the framework design guidelines. This causes problems with most objects because if you override GetHashCode then your object should be immutable, which most aren&amp;#39;t (see &lt;a rel="nofollow" target="_new" href="http://gregbeech.com/blogs/tech/archive/2006/07/04/implementing-object-equality-in-net.aspx"&gt;gregbeech.com/.../implementing-object-equality-in-net.aspx&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Of course like all rules this one is made to be broken, for example with classes like StringBuilder whose sole purpose is to build a string it makes sense to override ToString without overriding the others.&lt;/p&gt;
&lt;p&gt;Using DebuggerDisplayAttribute for debugging is much cleaner, and if you do need a string representation of the object then it is fairly easy to construct the output string yourself with a bit of reflection as long as you keep to the convention of just using property names rather than complex expressions (this is what we do in our tracing framework, in fact).&lt;/p&gt;
&lt;p&gt;- Greg&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=290" width="1" height="1"&gt;</description></item><item><title>re: Tips &amp; Tricks: Use DebuggerDisplayAttribute for easier debugging</title><link>http://gregbeech.com/blogs/tech/archive/2008/07/28/tips-amp-tricks-use-debuggerdisplayattribute-for-easier-debugging.aspx#289</link><pubDate>Tue, 29 Jul 2008 16:47:56 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:289</guid><dc:creator>Sean Kearon</dc:creator><description>&lt;p&gt;Sweet, very simple, very useful! &amp;nbsp;I&amp;#39;d always used overridden ToString() to acheive this, ignoring the part of me that questioned whether ToString() was not far more important than to be dedicated to the debugger! &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks!&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=289" width="1" height="1"&gt;</description></item><item><title>Database Management  &amp;raquo; Blog Archive   &amp;raquo; Dynamic sorting and paging in SQL Server with the CASE expression</title><link>http://gregbeech.com/blogs/tech/archive/2008/07/21/dynamic-sorting-and-paging-in-sql-server-with-the-case-expression.aspx#286</link><pubDate>Mon, 21 Jul 2008 22:17:14 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:286</guid><dc:creator>Database Management  » Blog Archive   » Dynamic sorting and paging in SQL Server with the CASE expression</dc:creator><description>&lt;p&gt;Pingback from &amp;nbsp;Database Management &amp;nbsp;&amp;raquo; Blog Archive &amp;nbsp; &amp;raquo; Dynamic sorting and paging in SQL Server with the CASE expression&lt;/p&gt;
&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=286" width="1" height="1"&gt;</description></item><item><title>Dynamic sorting and paging in SQL Server with the CASE expression</title><link>http://gregbeech.com/blogs/tech/archive/2008/07/21/dynamic-sorting-and-paging-in-sql-server-with-the-case-expression.aspx#285</link><pubDate>Mon, 21 Jul 2008 22:12:26 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:285</guid><dc:creator>DotNetKicks.com</dc:creator><description>&lt;p&gt;You&amp;#39;ve been kicked (a good thing) - Trackback from DotNetKicks.com&lt;/p&gt;
&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=285" width="1" height="1"&gt;</description></item><item><title>Emitting arbitrary constants with Reflection.Emit</title><link>http://gregbeech.com/blogs/tech/archive/2008/07/07/emitting-decimal-pseudo-constants-with-reflection-emit.aspx#283</link><pubDate>Sun, 20 Jul 2008 22:52:07 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:283</guid><dc:creator>Greg Beech's Tech Blog</dc:creator><description>&lt;p&gt;I&amp;#39;ve been writing a fair bit of Reflection.Emit code recently, and along the way have developed quite&lt;/p&gt;
&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=283" width="1" height="1"&gt;</description></item><item><title>re: Object-Relational Mapping frameworks won't improve your timescales</title><link>http://gregbeech.com/blogs/tech/archive/2008/07/10/object-relational-mapping-frameworks-won-t-improve-your-timescales.aspx#281</link><pubDate>Sun, 20 Jul 2008 16:49:15 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:281</guid><dc:creator>Sean Kearon</dc:creator><description>&lt;p&gt;An interesting point, Greg, and one that should be carefully considered before adopting an ORM. &amp;nbsp;However, I&amp;#39;d agree with Dave Brasington above - using an ORM to reduce project timescales is missing the point. &amp;nbsp;The primary benefits for me are flexibility and accuracy.&lt;/p&gt;
&lt;p&gt;Data access is handled by a seperately versioned library - the ORM. &amp;nbsp;My app&amp;#39;s data access is as stable as my ORM is, minus the relatively thin layer I add to configure the ORM. &amp;nbsp;The cost of change is drastically reduced from my perspective as a developer as I don&amp;#39;t have to deal with any schema design or data access code maintenance = less dull boilerplate work.&lt;/p&gt;
&lt;p&gt;However, I have used an ORM approach since 2002 (and have forgotten more SQL than I can remember now as a result), so I guess I&amp;#39;m a bit biased. &amp;nbsp;Maybe I should see if I can still write SQL again sometime ;)&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=281" width="1" height="1"&gt;</description></item><item><title>re: Making SiteMapPath work with QueryStrings</title><link>http://gregbeech.com/blogs/tech/archive/2005/12/26/making-sitemappath-work-with-querystrings.aspx#279</link><pubDate>Fri, 18 Jul 2008 05:15:10 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:279</guid><dc:creator>Dilip Nikam</dc:creator><description>&lt;p&gt;We can do this way also. In this example I am showing how to add functionality of show-hide SubMenu, Enable-Disable User Click and AddQueryString.&lt;/p&gt;
&lt;p&gt;&amp;lt;siteMapNode url=&amp;quot;State/State.aspx#&amp;quot; IsClickAble=&amp;quot;False&amp;quot; title=&amp;quot;States&amp;quot; description=&amp;quot;States&amp;quot; &amp;gt; &amp;nbsp; &amp;nbsp; &lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;siteMapNode url=&amp;quot;State/State.aspx&amp;quot; AddQueryString=&amp;quot;ID={0}&amp;quot; title=&amp;quot;Create New State&amp;quot; &amp;nbsp;Visible=&amp;quot;True&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;siteMapNode url=&amp;quot;State/AllState.aspx&amp;quot; &amp;nbsp;title=&amp;quot;All States&amp;quot; &amp;nbsp;Visible=&amp;quot;True&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;siteMapNode url=&amp;quot;State/StateMapping.aspx&amp;quot; title=&amp;quot;State Field Mapping&amp;quot; &amp;nbsp;Visible=&amp;quot;True&amp;quot; /&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;siteMapNode url=&amp;quot;State/DeactivetedState.aspx&amp;quot; title=&amp;quot;Deactiveted State&amp;quot; &amp;nbsp;Visible=&amp;quot;False&amp;quot;/&amp;gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/siteMapNode&amp;gt;&lt;/p&gt;
&lt;p&gt;protected void TopNavigationMenu_OnMenuItemDataBound(object sender, MenuEventArgs e)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SiteMapNode node = e.Item.DataItem as SiteMapNode;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// check for the visible attribute and if false&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// remove the node from the parent&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// this allows nodes to appear in the SiteMapPath but not show on the menu&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!string.IsNullOrEmpty(node[&amp;quot;Visible&amp;quot;]))&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bool isVisible;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (bool.TryParse(node[&amp;quot;Visible&amp;quot;], out isVisible))&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!isVisible)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.Item.Parent.ChildItems.Remove(e.Item);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Block User Click.&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!string.IsNullOrEmpty(node[&amp;quot;IsClickAble&amp;quot;]))&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.Item.Selectable = false;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Adding QueryString value In RunTime.&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (!string.IsNullOrEmpty(node[&amp;quot;AddQueryString&amp;quot;]))&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e.Item.NavigateUrl = e.Item.NavigateUrl + &amp;quot;?&amp;quot; + node[&amp;quot;AddQueryString&amp;quot;].ToString();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string s = e.Item.NavigateUrl.ToString();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;thanks Greg.....&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=279" width="1" height="1"&gt;</description></item><item><title>Database Management  &amp;raquo; Blog Archive   &amp;raquo; Service-orientation is inevitable for performant database applications</title><link>http://gregbeech.com/blogs/tech/archive/2008/07/16/service-orientation-is-inevitable-for-performant-database-applications.aspx#277</link><pubDate>Wed, 16 Jul 2008 22:26:54 GMT</pubDate><guid isPermaLink="false">64b9f9d3-1b55-4372-890f-9a35fe961b72:277</guid><dc:creator>Database Management  » Blog Archive   » Service-orientation is inevitable for performant database applications</dc:creator><description>&lt;p&gt;Pingback from &amp;nbsp;Database Management &amp;nbsp;&amp;raquo; Blog Archive &amp;nbsp; &amp;raquo; Service-orientation is inevitable for performant database applications&lt;/p&gt;
&lt;img src="http://gregbeech.com/aggbug.aspx?PostID=277" width="1" height="1"&gt;</description></item></channel></rss>