<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-472688689555981198</id><updated>2011-04-21T11:48:48.043-07:00</updated><category term='Microsoft Corp.'/><category term='seo'/><category term='seo tips'/><category term='Oxite...'/><category term='charts'/><category term='Datasource'/><category term='ComboBox'/><category term='viewportwidth'/><category term='Controls'/><category term='Microsoft ASP.NET'/><category term='Positioning'/><category term='Deep Zoom'/><category term='seach engine'/><category term='viewportorigin'/><category term='Silverlight'/><category term='Web'/><title type='text'>KAUSHIK RABADIYA</title><subtitle type='html'>Software Developer,Web Developer</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-8402802841509457359</id><published>2008-12-11T09:51:00.000-08:00</published><updated>2008-12-11T09:54:41.439-08:00</updated><title type='text'>Getting Started with ASP.NET</title><content type='html'>I just had the privilege (trauma?) of setting up my new machine and had to install everything from the scratch.  I will save the rest of my experiences, for another post, but for now I thought of sharing, what I had to install to work with the latest stuff for Web Development in ASP.NET.  These are pretty quick to install and helps you build cutting edge websites.&lt;br /&gt;&lt;br /&gt;1. Install Visual Studio 2008 (you can get a trial version from &lt;span style="font-weight:bold;"&gt;http://msdn.microsoft.com/hi-in/vstudio/products/aa700831.aspx&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;or the free Visual Web Developer Expression Edition from &lt;span style="font-weight:bold;"&gt;http://www.microsoft.com/express/vwd &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;2. Install &lt;span style="font-weight:bold;"&gt;.NET 3.5 SP1&lt;/span&gt; and Visual Studio 2008 SP1 from http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en&lt;br /&gt;&lt;br /&gt;3. If you installed Visual Studio 2008 and would like to work with ASP.NET 2.0 Applications and use &lt;span style="font-weight:bold;"&gt;ASP.NET AJAX 1.0&lt;/span&gt; version (multi-targeting in Visual Studio 2008), install the &lt;span style="font-weight:bold;"&gt;ASP.NET 2.0 AJAX&lt;/span&gt; Templates for Visual Studio 2008 http://www.microsoft.com/downloads/details.aspx?FamilyID=5c7df430-1c34-40d2-b6ec-81353b5fcf2e&amp;amp;displaylang=en&lt;br /&gt;&lt;br /&gt;4. Install &lt;span style="font-weight:bold;"&gt;ASP.NET MVC&lt;/span&gt; Beta from http://www.microsoft.com/downloads/details.aspx?FamilyId=A24D1E00-CD35-4F66-BAA0-2362BDDE0766&amp;amp;displaylang=en&lt;br /&gt;&lt;br /&gt;5. Install Charting controls for Visual Studio from here and here&lt;br /&gt;&lt;br /&gt;6. Install the Windows Live Tools for &lt;span style="font-weight:bold;"&gt;Visual Studio 2008&lt;/span&gt; http://dev.live.com/tools &lt;br /&gt;&lt;br /&gt;7. Install the &lt;span style="font-weight:bold;"&gt;Silverlight&lt;/span&gt; essentials from http://silverlight.net/GetStarted &lt;br /&gt;&lt;br /&gt;8. Install the &lt;span style="font-weight:bold;"&gt;Ajax Control Toolkit&lt;/span&gt; from http://www.codeplex.com/AjaxControlToolkit/Release/ProjectReleases.aspx?ReleaseId=16488&lt;br /&gt;&lt;br /&gt;9. Last but not the least, visit &lt;span style="font-weight:bold;"&gt;http://www.asp.net/learn&lt;/span&gt; for learning resources&lt;br /&gt;&lt;br /&gt;Note that steps 3-7 are optional though recommended.  The &lt;span style="font-weight:bold;"&gt;Silverlight&lt;/span&gt; installation contains steps to install Silverlight runtime, &lt;span style="font-weight:bold;"&gt;Silverlight&lt;/span&gt; Tools for Visual Studio (the MediaPlayer control for playing videos)&lt;br /&gt;&lt;br /&gt;Hope this saves you from running to different locations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-8402802841509457359?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/8402802841509457359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=8402802841509457359' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/8402802841509457359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/8402802841509457359'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/12/getting-started-with-aspnet.html' title='Getting Started with ASP.NET'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-3792654878174318696</id><published>2008-12-11T09:48:00.000-08:00</published><updated>2008-12-11T09:51:11.290-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='charts'/><category scheme='http://www.blogger.com/atom/ns#' term='Datasource'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Controls'/><title type='text'>Charting in ASP.NET, ASP.NET Chart Controls for .NET 3.5 SP1</title><content type='html'>Here is a HelloWorld sample on the new &lt;span style="font-weight:bold;"&gt;ASP.NET Charting control.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;To begin with, install the free Microsoft Chart Controls and the "Tools for &lt;span style="font-weight:bold;"&gt;VS 2008&lt;/span&gt; for Chart Controls" from here and here&lt;br /&gt;&lt;br /&gt;Note that if you don’t install the Tools for VS 2008 for Chart controls, the Chart Server Control doesnt show up in the Toolbox&lt;br /&gt;&lt;br /&gt;Once you are done with the installation, restart Visual Studio if you are already running the same (of course, save your work)&lt;br /&gt;&lt;br /&gt;1. Start &lt;span style="font-weight:bold;"&gt;Visual Studio 2008&lt;/span&gt; and create a File – New – ASP.NET Website or a Web Application&lt;br /&gt;&lt;br /&gt;2. From the ToolBox, under Data tab, pick up the &lt;span style="font-weight:bold;"&gt;“Chart”&lt;/span&gt; control (the icon would be a series of colored bar graphs) and drag and drop it into the page.&lt;br /&gt;&lt;br /&gt;3. Click on the smart tag for configuring the Chart control and Choose &lt;span style="font-weight:bold;"&gt;DataSource&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. Select “Database” and provide the connection string to your database server (in my case I chose Northwind)&lt;br /&gt;&lt;br /&gt;5. Choose to save the connection string etc., and select the Database table (in my case I chose “Category Sales for 1997”)&lt;br /&gt;&lt;br /&gt;6. Click “Finish” to complete the process.&lt;br /&gt;&lt;br /&gt;7. Now if you run the page you will NOT get the Chart Control.&lt;br /&gt;&lt;br /&gt;8. You need to select the Properties of the Chart Control from design view.&lt;br /&gt;&lt;br /&gt;9. Make sure under “Data” DataSource is set to &lt;span style="font-weight:bold;"&gt;“SqlDataSource1”&lt;/span&gt; unless you gave a different name and DataMember is set to “DefaultView”&lt;br /&gt;&lt;br /&gt;10. Under “Series” in Properties, click on the tab to open up the “Series Collection Editor”.&lt;br /&gt;&lt;br /&gt;11. Scroll down the Series1 Properties to DataSource section.&lt;br /&gt;&lt;br /&gt;12. Specify “CategoryName” as the XValueMember and “CategorySales” for YValueMembers and click Ok.&lt;br /&gt;&lt;br /&gt;13. Build the page and hit F5 to run the page.&lt;br /&gt;&lt;br /&gt;14. You will be able to see the Chart in your webpage.&lt;br /&gt;&lt;br /&gt;15. Right Click on the chart and you would be able to see that it is an image generated dynamically that can be saved as a “.png” file.&lt;br /&gt;&lt;br /&gt;You can download a comprehensive list of samples from here and verify the different implementations and source code for the same.   For more details, visit the forums here&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-3792654878174318696?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/3792654878174318696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=3792654878174318696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/3792654878174318696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/3792654878174318696'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/12/charting-in-aspnet-aspnet-chart.html' title='Charting in ASP.NET, ASP.NET Chart Controls for .NET 3.5 SP1'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-7110224471510909521</id><published>2008-12-08T21:33:00.000-08:00</published><updated>2008-12-08T21:38:33.255-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Oxite...'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Corp.'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Positioning'/><title type='text'>Microsoft develops open-source content-management system</title><content type='html'>Microsoft has developed and released via its CodePlex site an alpha version of a new open-source content-management system, codenamed “Oxite.”&lt;br /&gt;&lt;br /&gt;Microsoft made the Oxite source code available for download on December 5. Oxite is available under the Microsoft Public License (MS-Pl), one of its OSI-certified open-source licenses.&lt;br /&gt;&lt;br /&gt;From &lt;span style="font-weight:bold;"&gt;Microsoft&lt;/span&gt;’s description of Oxite:&lt;br /&gt;&lt;br /&gt;“Oxite provides you with a strong foundation you can build upon - pingbacks, trackbacks, anonymous or authenticated commenting (with optional moderation), gravatar support, RSS feeds at any page level, support for MetaWebLog &lt;span style="font-weight:bold;"&gt;API&lt;/span&gt; (think Windows Live Writer integration made easy), web admin panel, support for Open Search format allowing users to search your site using their browser’s search box, and more - so, you can spend time on designing a great experience.”&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Microsoft&lt;/span&gt; is positioning Oxite as more than just a blogging engine, claiming it can support even large Web sites. The company also is positioning the platform as customizable, allowing users to swap out Microsoft technologies, like database and search providers — specifically, &lt;span style="font-weight:bold;"&gt;SQL Server&lt;/span&gt; and &lt;span style="font-weight:bold;"&gt;Live Search&lt;/span&gt; — for non-Microsoft ones.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Oxite content-management&lt;/span&gt; platform is “built to take full advantage of &lt;span style="font-weight:bold;"&gt;ASP.NET MVC&lt;/span&gt; but broken into assemblies so that even &lt;span style="font-weight:bold;"&gt;ASP.NET&lt;/span&gt; WebForm developers can use the data backend and utility code, supports use of &lt;span style="font-weight:bold;"&gt;Visual Studio&lt;/span&gt; Team Suite (DB Pro, Test, etc.), and Background Services &lt;span style="font-weight:bold;"&gt;Architecture&lt;/span&gt; (sending trackbacks, emails, etc. all done as a background process to prevent delays on the web site itself),” according to the Softies.&lt;br /&gt;&lt;br /&gt;In searching for information on Oxite, I noticed a few folks wondering aloud why Microsoft felt a need to develop another &lt;span style="font-weight:bold;"&gt;content-management system&lt;/span&gt;, given that &lt;span style="font-weight:bold;"&gt;SharePoint Server&lt;/span&gt; provides content-management functionality.  One obvious difference is the open-/closed-source aspect of the projects.&lt;br /&gt;&lt;br /&gt;Any interest out there in an open-source CMS from Microsoft?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-7110224471510909521?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/7110224471510909521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=7110224471510909521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/7110224471510909521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/7110224471510909521'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/12/microsoft-develops-open-source-content.html' title='Microsoft develops open-source content-management system'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-3611821847921860504</id><published>2008-12-06T11:59:00.001-08:00</published><updated>2008-12-06T12:00:21.394-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='seo'/><category scheme='http://www.blogger.com/atom/ns#' term='seach engine'/><category scheme='http://www.blogger.com/atom/ns#' term='seo tips'/><title type='text'>8 simple SEO tips for blogs</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(68, 68, 68); font-family: 'Lucida Grande'; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 21px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;Follow these simple rules for&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="#" class="kLink" target="undefined" id="KonaLink0" style="border: 0px none transparent ! important; margin: 0px; padding: 0px ! important; position: static; color: rgb(34, 119, 221) ! important; text-decoration: underline; cursor: pointer; font-family: verdana; background-image: none ! important; background-color: transparent ! important; text-transform: none ! important; display: inline ! important; font-variant: normal; top: 0px; right: 0px; bottom: 0px; left: 0px;"&gt;&lt;span style="margin: 0px; padding: 0px; color: rgb(34, 119, 221) ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static;color:#000000;" &gt;&lt;span class="kLink" style="margin: 0px; padding: 0px 0px 1px ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static; border-top-width: 0px ! important; border-top-style: none ! important; border-left-width: 0px ! important; border-left-style: none ! important; border-right-width: 0px ! important; border-right-style: none ! important; border-bottom-width: 1px; border-bottom-style: solid; color: rgb(34, 119, 221); background-image: none; background-color: transparent; width: auto ! important; float: none ! important; display: inline ! important;"&gt;search&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="kLink" style="margin: 0px; padding: 0px 0px 1px ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static; border-top-width: 0px ! important; border-top-style: none ! important; border-left-width: 0px ! important; border-left-style: none ! important; border-right-width: 0px ! important; border-right-style: none ! important; border-bottom-width: 1px; border-bottom-style: solid; color: rgb(34, 119, 221); background-image: none; background-color: transparent; width: auto ! important; float: none ! important; display: inline ! important;"&gt;engine&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="kLink" style="margin: 0px; padding: 0px 0px 1px ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static; border-top-width: 0px ! important; border-top-style: none ! important; border-left-width: 0px ! important; border-left-style: none ! important; border-right-width: 0px ! important; border-right-style: none ! important; border-bottom-width: 1px; border-bottom-style: solid; color: rgb(34, 119, 221); background-image: none; background-color: transparent; width: auto ! important; float: none ! important; display: inline ! important;"&gt;optimization&lt;/span&gt;&lt;/span&gt;&lt;span id="preLoadWrap0" style="margin: 0px; padding: 0px; position: relative;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;and your blog will rank much higher in Search Engines.&lt;/p&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;&lt;span id="more-195" style="margin: 0px; padding: 0px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol style="margin: 13px 0px; padding: 0px 0px 0px 35px;"&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Use your primary keyword in your blog domain&lt;/strong&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;The first thing to do is to ensure that your blogs URL contains the primary keyword you want to optimize for. Using the targeted keyword in subdomains also helps.&lt;/p&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;For example, if you want to start a HTML tutorial site then the primary keyword you want your URL to contain is html. So choose a URL like www.htmlhelp.com.&lt;/p&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;You can also use the keyword in subdomains like www.web-design.com/htmlhelp&lt;/p&gt;&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Use your primary keyphrase in the title of your posts&lt;/strong&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;If your primary key phrase is html help make sure that the word html and help appear in your blog headers such as H1 and H2 tags as well as the title of each of your posts.&lt;/p&gt;&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Use your secondary keywords in the body of your post&lt;/strong&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;If you want to get listed for secondary keywords use them infrequently in the body of your post. The theory is that the more times a keyword appears within a Webpage, the more relevant the page is likely to be for someone searching those keywords.&lt;/p&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;But do not overdo this by repeating the same keywords over and over again.&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="#" class="kLink" target="undefined" id="KonaLink1" style="border: 0px none transparent ! important; margin: 0px; padding: 0px ! important; position: static; color: rgb(34, 119, 221) ! important; text-decoration: underline; cursor: pointer; font-family: verdana; background-image: none ! important; background-color: transparent ! important; text-transform: none ! important; display: inline ! important; font-variant: normal; top: 0px; right: 0px; bottom: 0px; left: 0px;"&gt;&lt;span style="margin: 0px; padding: 0px; color: rgb(34, 119, 221) ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static;color:#000000;" &gt;&lt;span class="kLink" style="margin: 0px; padding: 0px 0px 1px ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static; border-top-width: 0px ! important; border-top-style: none ! important; border-left-width: 0px ! important; border-left-style: none ! important; border-right-width: 0px ! important; border-right-style: none ! important; border-bottom-width: 1px; border-bottom-style: solid; color: rgb(34, 119, 221); background-image: none; background-color: transparent; width: auto ! important; float: none ! important; display: inline ! important;"&gt;Google&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;bots can find out if a keyword is too frequent on a page and might just remove your site from their index.&lt;/p&gt;&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Use your keywords in the anchor text of links&lt;/strong&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;Use your primary and secondary keywords in the anchor text of links when linking to other blog posts or to other pages of your blog. Keyword in links have more importance than simple text.&lt;/p&gt;&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Make sure search engines can spider your blog easily&lt;/strong&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;Make sure your navigation bar is present on all pages of your blog. Your previous posts or atleast the popular ones should be linked to all pages so they get spidered easily.&lt;/p&gt;&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Get backlinks from other blogs&lt;/strong&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;You need as many links as possible to link back to your posts or blog because it will help you build pagerank and get your blog to rank higher in&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="#" class="kLink" target="undefined" id="KonaLink2" style="border: 0px none transparent ! important; margin: 0px; padding: 0px ! important; position: static; color: rgb(34, 119, 221) ! important; text-decoration: underline; cursor: pointer; font-family: verdana; background-image: none ! important; background-color: transparent ! important; text-transform: none ! important; display: inline ! important; font-variant: normal; top: 0px; right: 0px; bottom: 0px; left: 0px;"&gt;&lt;span style="margin: 0px; padding: 0px; color: rgb(34, 119, 221) ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static;color:#000000;" &gt;&lt;span class="kLink" style="margin: 0px; padding: 0px 0px 1px ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static; border-top-width: 0px ! important; border-top-style: none ! important; border-left-width: 0px ! important; border-left-style: none ! important; border-right-width: 0px ! important; border-right-style: none ! important; border-bottom-width: 1px; border-bottom-style: solid; color: rgb(34, 119, 221); background-image: none; background-color: transparent; width: auto ! important; float: none ! important; display: inline ! important;"&gt;search&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="kLink" style="margin: 0px; padding: 0px 0px 1px ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static; border-top-width: 0px ! important; border-top-style: none ! important; border-left-width: 0px ! important; border-left-style: none ! important; border-right-width: 0px ! important; border-right-style: none ! important; border-bottom-width: 1px; border-bottom-style: solid; color: rgb(34, 119, 221); background-image: none; background-color: transparent; width: auto ! important; float: none ! important; display: inline ! important;"&gt;engines&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. The more links you have the higher your blog is ranked in&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://www.technorati.com/" style="margin: 0px; padding: 0px; color: rgb(34, 119, 221); text-decoration: none;"&gt;Technorati&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;helping your blog to be found easily.&lt;/p&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;So how do you get backlinks?&lt;/p&gt;&lt;ul style="margin: 13px 0px; padding: 0px 0px 0px 35px; list-style-image: url(http://www.johntp.com/wp-content/themes/johntpv3/images/arrow.png);"&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;The first thing to do to get high-quality links is to submit your blog and RSS feed to blog search engines and directories.&lt;p style="margin: 13px 0px; padding: 0px;"&gt;Start by submitting your blog to all the directories listed on this page:&lt;br /&gt;&lt;a href="http://www.masternewmedia.org/rss/top55/" title="Best Blog Directory And RSS Submission Sites" style="margin: 0px; padding: 0px; color: rgb(34, 119, 221); text-decoration: none;"&gt;http://www.masternewmedia.org/rss/top55/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;Link exchanging with other similarly-themed blogs will help you to form richly interlinked networks or communities.&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;If you find an interesting article on another blog, link to it generously. The trackback will become a link back to your blog.&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;Lastly posting legitimate comments in response to posts on other blogs will help you get backlinks. Regularly post legitimate comments in similarly-themed blogs with high traffic to get many backlinks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Update your blog frequently&lt;/strong&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;Update your blog frequently using all the rules mentioned above and your blog will surely get top rankings in a short time.&lt;/p&gt;&lt;/li&gt;&lt;li style="margin: 0px 0px 3px; padding: 0px; list-style-type: decimal; list-style-position: outside;"&gt;&lt;strong style="margin: 0px; padding: 0px;"&gt;Stick with your blog&lt;/strong&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;Once you start posting on your blog, stick with the same&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="#" class="kLink" target="undefined" id="KonaLink3" style="border: 0px none transparent ! important; margin: 0px; padding: 0px ! important; position: static; color: rgb(34, 119, 221) ! important; text-decoration: underline; cursor: pointer; font-family: verdana; background-image: none ! important; background-color: transparent ! important; text-transform: none ! important; display: inline ! important; font-variant: normal; top: 0px; right: 0px; bottom: 0px; left: 0px;"&gt;&lt;span style="margin: 0px; padding: 0px; color: rgb(34, 119, 221) ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static;color:#000000;" &gt;&lt;span class="kLink" style="margin: 0px; padding: 0px 0px 1px ! important; font-family: 'Lucida Grande'; font-weight: normal; font-size: 12px; position: static; border-top-width: 0px ! important; border-top-style: none ! important; border-left-width: 0px ! important; border-left-style: none ! important; border-right-width: 0px ! important; border-right-style: none ! important; border-bottom-width: 1px; border-bottom-style: solid; color: rgb(34, 119, 221); background-image: none; background-color: transparent; width: auto ! important; float: none ! important; display: inline ! important;"&gt;domain&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;or you could end up losing a lot of your traffic and regular readers.&lt;/p&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;Also stick with the topic you selected for your blog. If it’s about pets don’t suddenly switch to another topic such as Gadget’s because you will loose traffic.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="margin: 13px 0px; padding: 0px;"&gt;For tips on building traffic to your blog, read the series-&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://www.johntp.com/2006/03/24/how-to-increase-your-blogs-traffic-part1/" title="A series on how to increase your blog's traffic" style="margin: 0px; padding: 0px; color: rgb(34, 119, 221); text-decoration: none;"&gt;How to increase your blogs traffic&lt;/a&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-3611821847921860504?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/3611821847921860504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=3611821847921860504' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/3611821847921860504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/3611821847921860504'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/12/8-simple-seo-tips-for-blogs.html' title='8 simple SEO tips for blogs'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-6424056298451085646</id><published>2008-12-06T11:46:00.001-08:00</published><updated>2008-12-06T11:46:54.613-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Deep Zoom'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='viewportorigin'/><category scheme='http://www.blogger.com/atom/ns#' term='viewportwidth'/><title type='text'>Silverlight : Using ViewportOrigin and ViewportWidth in Deep Zoom</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Tahoma; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Helvetica;"&gt;&lt;span style="font-size:100%;"&gt;I’m posting this because the documentation on ViewportOrigin is wrong and it might be a while before it can be updated on the live site. In the meantime, this post discusses how to use ViewportOrigin and ViewportWidth to control the viewport. Controlling the viewport allows you to specify the magnification level and location on a MultiScaleImage to zoom in on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Helvetica;"&gt;&lt;o:p&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Helvetica;"&gt;&lt;span style="font-size:100%;"&gt;Let’s start with ViewportWidth. This value sets how wide the viewport window is relative to the entire image.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style="margin-top: 0in;" type="disc"&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="font-family: Helvetica;"&gt;ViewportWidth = 1&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Helvetica;"&gt;: Displays the entire image (default).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="font-family: Helvetica;"&gt;ViewportWidth &lt;&gt;&lt;/b&gt;&lt;span style="font-family: Helvetica;"&gt;: Zooms in on the image. You zoom in deeper into the image the closer you get to zero where zero is “completely zoomed in” and the user cannot see the image at all. The fraction of the width of the image that is visible is the ViewportWidth.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="font-family: Helvetica;"&gt;ViewportWidth &gt; 1&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Helvetica;"&gt;: Zooms out from the image. The number of times the viewport is larger than the image is the ViewportWidth.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Helvetica;"&gt;&lt;o:p&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="font-family: Helvetica;"&gt;Note:&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: Helvetica;"&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;See diagram below for examples.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Helvetica;"&gt;&lt;o:p&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 12pt; font-family: Helvetica;"&gt;Ok, so the width of the Viewport specifies how much in or out to zoom on the image but it does not specify where on the image the Viewport is viewing. To specify this, use the ViewportOrigin. The top left corner of the viewed image (not the MultiScaleImage, the container panel or canvas in which this image renders) is always (0,0).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 12pt; font-family: Helvetica;"&gt;&lt;img title="viewportorigin with viewportwidth diagrams" alt="viewportorigin with viewportwidth diagrams" src="http://samples.msdn.microsoft.com/Silverlight/silverlight_next/pubwizart/viewportdiagrams_top.jpg" mce_src="http://samples.msdn.microsoft.com/Silverlight/silverlight_next/pubwizart/viewportdiagrams_top.jpg" style="width: 569px; height: 991px;" width="569" height="991" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 12pt; font-family: Helvetica;"&gt;&lt;img title="bottom half of viewportorigin and vieportwidth diagrams" alt="bottom half of viewportorigin and vieportwidth diagrams" src="http://samples.msdn.microsoft.com/Silverlight/silverlight_next/pubwizart/viewportdiagrams_bottom.jpg" mce_src="http://samples.msdn.microsoft.com/Silverlight/silverlight_next/pubwizart/viewportdiagrams_bottom.jpg" style="width: 537px; height: 636px;" width="537" height="636" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size: 12pt; font-family: Helvetica;"&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Helvetica;"&gt;For ViewportOrigin, the value specifies where the corner of the viewport should be relative to the corner of the image. This means if you want some blank space between the edge of the image and the viewport, you need to move the viewport to a negative location off the image. If you want the viewport to show just a portion of the image, then it will get moved to a positive location within the full image.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Helvetica;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin: 0in 0in 0pt;"&gt;&lt;span style="font-family: Helvetica;"&gt;Note that in the diagrams above, I’m using coordinate numbers that conveniently place the image or area of the image within a neat square of the conceptual grid. This is only for demonstration purposes since you can specify any numbers (see diagram below); however, numbers outside the appropriate range (too high or too low) for either ViewportOrigin or ViewportWidth will render nothing of the image.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img title="diagram showing that viewportorigin does not need to use even numbers." alt="diagram showing that viewportorigin does not need to use even numbers." src="http://samples.msdn.microsoft.com/Silverlight/silverlight_next/pubwizart/viewportdiagrams_2.jpg" mce_src="http://samples.msdn.microsoft.com/Silverlight/silverlight_next/pubwizart/viewportdiagrams_2.jpg" style="width: 239px; height: 307px;" width="239" height="307" /&gt;&lt;/p&gt;&lt;p&gt;Note: Special thanks to Dan Cory and&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a class="" href="http://blogs.msdn.com/lutzg/" mce_href="http://blogs.msdn.com/lutzg/" style="color: rgb(0, 107, 130); text-decoration: none;"&gt;Lutz Gerhard&lt;/a&gt;&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;(Microsoft Program Managers) for their review and feedback regarding this info.&lt;/p&gt;&lt;p&gt;Thanks,&lt;/p&gt;&lt;p&gt;Kaushik&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-6424056298451085646?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/6424056298451085646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=6424056298451085646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/6424056298451085646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/6424056298451085646'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/12/silverlight-using-viewportorigin-and.html' title='Silverlight : Using ViewportOrigin and ViewportWidth in Deep Zoom'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-1466917322343397611</id><published>2008-12-06T11:43:00.000-08:00</published><updated>2008-12-06T11:45:46.163-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ComboBox'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='Controls'/><title type='text'>Silverlight : Where did my ComboBox selected item go?</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Tahoma; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;p&gt;You might have noticed that sometimes the item in the selection box of a combo box disappears when you reopen the drop-down of the combo.&lt;/p&gt;&lt;p&gt;For example, in the following image, "Arial" is selected,&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/selectionBox_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/selectionBox_2.jpg" style="color: rgb(0, 107, 130); text-decoration: none;"&gt;&lt;img alt="selectionBox" src="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/selectionBox_thumb.jpg" mce_src="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/selectionBox_thumb.jpg" style="border-width: 0px;" width="160" border="0" height="28" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;but doesn't show up in the selection box when the drop-down is reopened.&lt;/p&gt;&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/itemdisappeared_4.jpg" mce_href="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/itemdisappeared_4.jpg" style="color: rgb(0, 107, 130); text-decoration: none;"&gt;&lt;img alt="itemdisappeared" src="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/itemdisappeared_thumb_1.jpg" mce_src="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/itemdisappeared_thumb_1.jpg" style="border-width: 0px;" width="160" border="0" height="97" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In contrast, in the following&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox%28VS.95%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox(VS.95).aspx" style="color: rgb(0, 107, 130); text-decoration: none;"&gt;ComboBox&lt;/a&gt;, the selected item, "Courier New", is visible in the selection box when the drop-down is reopened.&lt;/p&gt;&lt;h1&gt;&lt;a href="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/itemStillThere_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/itemStillThere_2.jpg" style="color: rgb(0, 107, 130); text-decoration: none;"&gt;&lt;img alt="itemStillThere" src="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/itemStillThere_thumb.jpg" mce_src="http://blogs.msdn.com/blogfiles/silverlight_sdk/WindowsLiveWriter/WheredidmyComboBoxselecteditemgo_B8C0/itemStillThere_thumb.jpg" style="border-width: 0px;" width="159" border="0" height="98" /&gt;&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Here's the code for the first combo box:&lt;/p&gt;&lt;span style="font-family:Courier New;color:#000080;"&gt;&lt;combobox name="myCombo" width="150" margin="10"&gt;&lt;br /&gt;    &lt;comboboxitem content="Arial"&gt;&lt;br /&gt;    &lt;comboboxitem content="Courier New"&gt;&lt;br /&gt;    &lt;comboboxitem content ="Times New Roman"&gt;&lt;br /&gt;&lt;/combobox&gt;&lt;/span&gt;&lt;p&gt;The reason the selected item disappears is because a UIElement cannot be in the visual tree more than once. In the first case, I've explicitly created ComboBoxItems and set their content to font names. ComboBoxItem is a UIElement and when it is in the drop-down, it can't be shown in the selection box. When the drop down is closed the UIElement is temporarily moved in the visual tree to be shown as the selected item. This occurs for all UIElements in a Silverlight combo box.&lt;/p&gt;&lt;p&gt;CLR objects that are not derived from UIElement do not have this limitation. In the second case the items are added to the combo box through a binding. The combo box is bound to a collection of strings:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;color:#000080;"&gt;&lt;combobox name="FontsCombo" height="20" width="150" class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;    ItemsSource="{Binding}" /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;color:#000080;"&gt;ObservableCollection&lt;string&gt; fonts =&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;    new ObservableCollection&lt;string&gt;();&lt;br /&gt;fonts.Add("Arial");&lt;br /&gt;fonts.Add("Courier New");&lt;br /&gt;fonts.Add("Times New Roman");&lt;br /&gt;FontsCombo.DataContext = fonts;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;When CLR objects are used to populate a combo box, UIElements are automatically generated for them using the data template (in this case the default data template is a TextBlock). Two different UIElements are created so CLR objects can be shown in both the selection box and drop-down at the same time.&lt;/p&gt;&lt;p&gt;Hopefully this clears up any confusion. Also this info is now in the online docs.&lt;/p&gt;&lt;p&gt;Kaushik&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-1466917322343397611?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/1466917322343397611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=1466917322343397611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/1466917322343397611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/1466917322343397611'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/12/silverlight-where-did-my-combobox.html' title='Silverlight : Where did my ComboBox selected item go?'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-406387324294977155</id><published>2008-12-05T00:33:00.000-08:00</published><updated>2008-12-05T00:36:56.166-08:00</updated><title type='text'>Tips for using the RadGrid</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-family: 'Lucida Grande'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;h3 style="margin: 10px 0px 0px; padding: 0px; font-size: 1.2em; color: rgb(119, 119, 119);"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; color: rgb(51, 51, 51); font-family: 'Lucida Grande'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Brian Mains continues his overview of the Telerik’s RadGrid Component.&lt;/span&gt;&lt;/h3&gt;&lt;h3 style="margin: 10px 0px 0px; padding: 0px; font-size: 1.2em; color: rgb(119, 119, 119);"&gt;Introduction&lt;/h3&gt;&lt;p&gt;Previously, I wrote about using the RadGrid control and how to setup the UI for a simple GridView-like look. In this article, I’m going to talk about some of the tips and tricks that you can give the RadGrid to become more responsive.&lt;/p&gt;&lt;a name="row-clicking" style="text-decoration: none; color: rgb(0, 173, 239);"&gt;&lt;/a&gt;&lt;h3 style="margin: 10px 0px 0px; padding: 0px; font-size: 1.2em; color: rgb(119, 119, 119);"&gt;Row Clicking&lt;/h3&gt;&lt;p&gt;When supporting the ability to select a record in the GridView, the grid needs to have a button that triggers the selection of the row. This causes a postback and sets the selected index of the row, raises an event, and performs some other features. The RadGrid provides this capability using a button as well, but goes a step further. By specifying that the grid can post back on a row click, the row can be selected simply by selecting the row.&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Listing 1: Enabling postback on a row click&lt;/h4&gt;&lt;div class="dp-highlighter nogutter" style="margin: 18px 0px; overflow: auto; font-family: Consolas,'Courier New',Courier,monospace; width: 99%; font-size: 0.9em; color: black; background-color: rgb(251, 237, 187);"&gt;&lt;ol start="1" class="dp-xml" style="margin: 0px 0px 1px; padding: 0px; color: rgb(43, 145, 175); list-style-type: none;"&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;tel:RadGrid&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"rgCourses"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"server"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;Skin&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"Web20"&lt;/span&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    &lt;span class="attribute" style="color: red;"&gt;AllowFilteringByColumn&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"true"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;onneeddatasource&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"rgCourses_NeedDataSource"&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    &lt;span class="attribute" style="color: red;"&gt;AllowSorting&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"true"&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    &lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;ClientSettings&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;EnablePostBackOnRowClick&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"true"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;/&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;tel:RadGrid&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;The&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;ClientSettings&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;property defines a host of client-side features that can be added to the Grid. One of these is the ability to postback upon clicking a row. If setting up that the RadGrid posts back asynchronously (using the RadAjaxManager as previously discussed), the RadGrid’s postback won’t be apparent to the user.&lt;/p&gt;&lt;p&gt;But a postback does occur when the row is clicked, and this fires the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;RowCommand&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;event called&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;RowClick&lt;/code&gt;. For instance, I could use the following code to show an alert, as shown in Listing 2.&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Listing 2: Handling a row click&lt;/h4&gt;&lt;div class="dp-highlighter nogutter" style="margin: 18px 0px; overflow: auto; font-family: Consolas,'Courier New',Courier,monospace; width: 99%; font-size: 0.9em; color: black; background-color: rgb(251, 237, 187);"&gt;&lt;ol start="1" class="dp-c" style="margin: 0px 0px 1px; padding: 0px; color: rgb(43, 145, 175); list-style-type: none;"&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="keyword" style="color: blue;"&gt;protected&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="keyword" style="color: blue;"&gt;void&lt;/span&gt;&lt;span style="color: black;"&gt; rgCourses_ItemCommand(&lt;/span&gt;&lt;span class="keyword" style="color: blue;"&gt;object&lt;/span&gt;&lt;span style="color: black;"&gt; source, GridCommandEventArgs e)  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;{  &lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    &lt;span class="keyword" style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; (e.CommandName == &lt;/span&gt;&lt;span class="string" style="color: blue;"&gt;"RowClick"&lt;/span&gt;&lt;span style="color: black;"&gt;)  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    {  &lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;        RadAjaxManager manager = RadAjaxManager.GetCurrent(&lt;span class="keyword" style="color: blue;"&gt;this&lt;/span&gt;&lt;span style="color: black;"&gt;.Page);  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;        manager.Alert(&lt;span class="string" style="color: blue;"&gt;"Row was clicked!"&lt;/span&gt;&lt;span style="color: black;"&gt;);  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    }  &lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;}  &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;An alert appears to the user to let them know the row was clicked.&lt;/p&gt;&lt;a name="displaying-an-empty-message" style="text-decoration: none; color: rgb(0, 173, 239);"&gt;&lt;/a&gt;&lt;h3 style="margin: 10px 0px 0px; padding: 0px; font-size: 1.2em; color: rgb(119, 119, 119);"&gt;Displaying an Empty Message&lt;/h3&gt;&lt;p&gt;When displaying an empty message (when no records exist in the underlying data source), it’s nice to have a message appear and let the users know it. This is where the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;NoRecordsTemplate&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;comes into play:&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Listing 3: No Data Template&lt;/h4&gt;&lt;div class="dp-highlighter nogutter" style="margin: 18px 0px; overflow: auto; font-family: Consolas,'Courier New',Courier,monospace; width: 99%; font-size: 0.9em; color: black; background-color: rgb(251, 237, 187);"&gt;&lt;ol start="1" class="dp-xml" style="margin: 0px 0px 1px; padding: 0px; color: rgb(43, 145, 175); list-style-type: none;"&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;MasterTableView&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"false"&lt;/span&gt;&lt;span style="color: black;"&gt; ..&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;NoRecordsTemplate&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;There isn't any data.&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;/&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;NoRecordsTemplate&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;/&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;MasterTableView&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;But to get this template to appear, it requires a few settings. First, the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;EnableNoRecordsTemplate&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;sets whether the&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;NoRecordsTemplate&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;appears in the first place. If true, if a non-null collection with no records is returned, the template appears. Note what I said; passing null as the data source does not make the no-records template appear.&lt;/p&gt;&lt;p&gt;Sometimes it’s helpful to have the header of the control appear when the no record template appears in the grid. The GridView doesn’t do this at all; it renders a single cell with the empty message only. The RadGrid gives you some options.&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Listing 4: The final code for binding no data&lt;/h4&gt;&lt;div class="dp-highlighter nogutter" style="margin: 18px 0px; overflow: auto; font-family: Consolas,'Courier New',Courier,monospace; width: 99%; font-size: 0.9em; color: black; background-color: rgb(251, 237, 187);"&gt;&lt;ol start="1" class="dp-xml" style="margin: 0px 0px 1px; padding: 0px; color: rgb(43, 145, 175); list-style-type: none;"&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;tel:RadGrid&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;ID&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"rgCourses"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;runat&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"server"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;Skin&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"Web20"&lt;/span&gt;&lt;span style="color: black;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    &lt;span class="attribute" style="color: red;"&gt;AllowFilteringByColumn&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"true"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;onneeddatasource&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"rgCourses_NeedDataSource"&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    &lt;span class="attribute" style="color: red;"&gt;AllowSorting&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"true"&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    &lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;MasterTableView&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;AutoGenerateColumns&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"false"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;EnableNoRecordsTemplate&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"true"&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;        &lt;span class="attribute" style="color: red;"&gt;ShowHeadersWhenNoRecords&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"false"&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;        &lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;NoRecordsTemplate&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;There isn't any data.&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;/&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;NoRecordsTemplate&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;/&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;MasterTableView&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    &lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;ClientSettings&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;/&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;tel:RadGrid&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="attribute" style="color: red;"&gt;this.rgCourses.DataSource&lt;/span&gt;&lt;span style="color: black;"&gt; = &lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;new&lt;/span&gt;&lt;span style="color: black;"&gt; object[] {};  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;this.rgCourses.DataBind();  &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;This produces the following result when no data is entered.&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Figure 1: Empty Data Message&lt;/h4&gt;&lt;p&gt;&lt;img title="Empty Data Message" alt="Empty Data Message" src="/images/articleimages/telerik_radgridview2_1.jpg" /&gt;&lt;/p&gt;&lt;a name="editing-  data" style="text-decoration: none; color: rgb(0, 173, 239);"&gt;&lt;/a&gt;&lt;h3 style="margin: 10px 0px 0px; padding: 0px; font-size: 1.2em; color: rgb(119, 119, 119);"&gt;Editing Data&lt;/h3&gt;&lt;p&gt;Editing data works similarly to the GridView, with a noticeable difference. There are different ways to edit the data. For instance, instead of changing the row to edit in the current row, the Telerik RadGrid control edits data using a form beneath the row. This is due to the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;EditForms&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;setting for the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;EditMode&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;property of the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;MasterTableView&lt;/code&gt;property. Take a look at the example below:&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Figure 2: Editing in a separate form&lt;/h4&gt;&lt;p&gt;&lt;img title="Editing in a separate form" alt="Editing in a separate form" src="/images/articleimages/telerik_radgridview2_2.jpg" /&gt;&lt;/p&gt;&lt;p&gt;This can be changed however; editing can occur in place by changing the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;EditMode&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;property to&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;InPlace&lt;/code&gt;.&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Listing 5: Setting the EditMode&lt;/h4&gt;&lt;div class="dp-highlighter nogutter" style="margin: 18px 0px; overflow: auto; font-family: Consolas,'Courier New',Courier,monospace; width: 99%; font-size: 0.9em; color: black; background-color: rgb(251, 237, 187);"&gt;&lt;ol start="1" class="dp-xml" style="margin: 0px 0px 1px; padding: 0px; color: rgb(43, 145, 175); list-style-type: none;"&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;MasterTableView&lt;/span&gt;&lt;span style="color: black;"&gt; … &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;EditMode&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"InPlace"&lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;Changing to in-place editing uses a more familiar GridView-like result shown below.&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Figure 3: In-Place editing&lt;/h4&gt;&lt;p&gt;&lt;img title="In-Place editing" alt="In-Place editing" src="/images/articleimages/telerik_radgridview2_3.jpg" /&gt;&lt;/p&gt;&lt;p&gt;A third option is to use the&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;PopUp&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;option; this option pops up a new window that the user can use to edit the information outside of the context of the grid altogether.&lt;/p&gt;&lt;p&gt;To generate the edit button you see above (edit turns to update and cancel just like the GridView does whenever editing is invoked), there are two ways to do this. Turning on&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;AutoGenerateEditColumn&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;at the RadGrid level generates an edit column, as well as using the GridEditCommandColumn class. I opted for the latter approach, as shown in Figure 6.&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Listing 6: Generating an update column&lt;/h4&gt;&lt;div class="dp-highlighter nogutter" style="margin: 18px 0px; overflow: auto; font-family: Consolas,'Courier New',Courier,monospace; width: 99%; font-size: 0.9em; color: black; background-color: rgb(251, 237, 187);"&gt;&lt;ol start="1" class="dp-xml" style="margin: 0px 0px 1px; padding: 0px; color: rgb(43, 145, 175); list-style-type: none;"&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;&lt;&lt;/span&gt;&lt;span class="tag-name" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;tel:GridEditCommandColumn&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;EditText&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"Update"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="attribute" style="color: red;"&gt;UniqueName&lt;/span&gt;&lt;span style="color: black;"&gt;=&lt;/span&gt;&lt;span class="attribute-value" style="color: blue;"&gt;"Update"&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="tag" style="color: rgb(0, 102, 153); font-weight: bold;"&gt;/&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;a name="accessing-rows-and-cells" style="text-decoration: none; color: rgb(0, 173, 239);"&gt;&lt;/a&gt;&lt;h3 style="margin: 10px 0px 0px; padding: 0px; font-size: 1.2em; color: rgb(119, 119, 119);"&gt;Accessing Rows and Cells&lt;/h3&gt;&lt;p&gt;The RadGrid uses the same underlying table structure that the GridView uses, which is the logical choice considering the layout of the user interface. Each row is of the type GridItem; however, its actual underlying representation is GridDataItem or GridEditableItem. This is because the GridItem class is the base class for each of these classes; the GridDataItem represents a read-only data bound item view, whereas the GridEditableItem represents an item currently being edited.&lt;/p&gt;&lt;p&gt;When accessing data (like in ItemDataBound), the event argument’s&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;Item&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;property (represented by the GridItem class) can be cast to one of these two types. This allows accessing of the cell using the unique name, which isn’t defined in the base class (the base class does have a collection of cells though).&lt;/p&gt;&lt;p&gt;For instance, the style of the abstract column could be changed by using the unique name to get the target cell, then change the italicized setting to true as shown in listing 7.&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Listing 7: Setting the abstract column’s font to italic&lt;/h4&gt;&lt;div class="dp-highlighter nogutter" style="margin: 18px 0px; overflow: auto; font-family: Consolas,'Courier New',Courier,monospace; width: 99%; font-size: 0.9em; color: black; background-color: rgb(251, 237, 187);"&gt;&lt;ol start="1" class="dp-c" style="margin: 0px 0px 1px; padding: 0px; color: rgb(43, 145, 175); list-style-type: none;"&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="keyword" style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; (e.Item &lt;/span&gt;&lt;span class="keyword" style="color: blue;"&gt;is&lt;/span&gt;&lt;span style="color: black;"&gt; GridDataItem)  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;{  &lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    ((GridDataItem)e.Item)[&lt;span class="string" style="color: blue;"&gt;"Abstract"&lt;/span&gt;&lt;span style="color: black;"&gt;].Font.Italic = &lt;/span&gt;&lt;span class="keyword" style="color: blue;"&gt;true&lt;/span&gt;&lt;span style="color: black;"&gt;;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;}  &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;The GridDataItem changes the abstract to italic for each and every row like you would do in the RowDataBound for the GridView; it’s the same concept here. The nice thing about this approach is that the developer isn’t forced to hard-code a positional index to get the cell; they can reference by a unique name.&lt;/p&gt;&lt;p&gt;The row also has some other useful properties/methods. If wanting to figure out if the row is in edit mode (outside of the underlying row type), you can also check out the GridItem’s&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;IsInEditMode&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;property, which is true for a row currently in edit mode. The GridItem class also has an&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;ItemIndex&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;and&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;ItemType&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;properties for determining position and type of row. Interestingly enough, the GridItem also has a&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;RowIndex&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;that determines the index of the row (which could be different than&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;code style="font-size: 1.2em; color: rgb(153, 0, 0);"&gt;ItemIndex&lt;span class="Apple-converted-space"&gt; &lt;/span&gt;&lt;/code&gt;because of the Grid’s header row in the underlying table).&lt;/p&gt;&lt;a name="auto-generated-columns" style="text-decoration: none; color: rgb(0, 173, 239);"&gt;&lt;/a&gt;&lt;h3 style="margin: 10px 0px 0px; padding: 0px; font-size: 1.2em; color: rgb(119, 119, 119);"&gt;Auto Generated Columns&lt;/h3&gt;&lt;p&gt;Both the GridView and the RadGrid have the ability to auto-generate the columns of the grid using the structure from the underlying data source. The RadGrid control maintains a collection of columns for each of the auto-generated columns, using the AutoGeneratedColumns collection in the GridTableView object.&lt;/p&gt;&lt;p&gt;This collection can be important if you want to access column information in the code-behind. Remember above, using the GridDataItem class, I accessed a column called “Abstract”, which used the unique name. The unique name wouldn’t necessarily be known in an auto generation approach. An alternative approach using this collection could be:&lt;/p&gt;&lt;h4 style="margin: 10px 0px 0px; font-size: 1.1em; color: rgb(0, 0, 0);"&gt;Listing 8: Finding an auto-generated column&lt;/h4&gt;&lt;div class="dp-highlighter nogutter" style="margin: 18px 0px; overflow: auto; font-family: Consolas,'Courier New',Courier,monospace; width: 99%; font-size: 0.9em; color: black; background-color: rgb(251, 237, 187);"&gt;&lt;ol start="1" class="dp-c" style="margin: 0px 0px 1px; padding: 0px; color: rgb(43, 145, 175); list-style-type: none;"&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;&lt;span class="keyword" style="color: blue;"&gt;protected&lt;/span&gt;&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;span class="keyword" style="color: blue;"&gt;void&lt;/span&gt;&lt;span style="color: black;"&gt; rgCourses_ItemDataBound(&lt;/span&gt;&lt;span class="keyword" style="color: blue;"&gt;object&lt;/span&gt;&lt;span style="color: black;"&gt; sender, GridItemEventArgs e)  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;{  &lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    &lt;span class="keyword" style="color: blue;"&gt;if&lt;/span&gt;&lt;span style="color: black;"&gt; (e.Item &lt;/span&gt;&lt;span class="keyword" style="color: blue;"&gt;is&lt;/span&gt;&lt;span style="color: black;"&gt; GridDataItem)  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    {  &lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;        GridDataItem dataItem = (GridDataItem)e.Item;  &lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;        var column = &lt;span class="keyword" style="color: blue;"&gt;this&lt;/span&gt;&lt;span style="color: black;"&gt;.rgCourses.MasterTableView.AutoGeneratedColumns.First(i =&gt; i.HeaderText == &lt;/span&gt;&lt;span class="string" style="color: blue;"&gt;"Abstract"&lt;/span&gt;&lt;span style="color: black;"&gt;);  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;        dataItem[column].Font.Italic = &lt;span class="keyword" style="color: blue;"&gt;true&lt;/span&gt;&lt;span style="color: black;"&gt;;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;    }  &lt;/span&gt;&lt;/li&gt;&lt;li class="" style="border-width: 0px; padding-left: 10px; line-height: 14px;"&gt;&lt;span style="color: black;"&gt;}  &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;p&gt;Using LINQ, the master table view’s generated columns is queried for a column name with the header “Abstract”, the name of the column. In this case, the unique name probably matches the header text, but in case it doesn’t, the method finds a matching header and uses the column to set the italics for.&lt;/p&gt;&lt;a name="conclusion" style="text-decoration: none; color: rgb(0, 173, 239);"&gt;&lt;/a&gt;&lt;h3 style="margin: 10px 0px 0px; padding: 0px; font-size: 1.2em; color: rgb(119, 119, 119);"&gt;Conclusion&lt;/h3&gt;&lt;p&gt;In this article, we learned a few tricks for working with the RadGrid control, and how to adjust it to add functionality for certain tasks, and how to support working with its object model on the server-side.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-406387324294977155?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/406387324294977155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=406387324294977155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/406387324294977155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/406387324294977155'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/12/tips-for-using-radgrid.html' title='Tips for using the RadGrid'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-8702813991702482610</id><published>2008-11-22T09:26:00.000-08:00</published><updated>2008-11-22T09:28:08.311-08:00</updated><title type='text'>Google adds to search</title><content type='html'>Google has begun rolling out 3 new additions to its search engine on November 20th. The search engine giant added a Promote, Remove and Comment buttons beside each search to help users define their results better.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://img253.imageshack.us/img253/9279/googleneowinprorembuttorx8.jpg" alt="" class="linked-image" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;The Promote feature will allow you to move results up to the top of the list of your results, for future searches. This little addition to the search engine will help users by adding their favourite web sites to the top of each individual search result, that brings back that page. So for instance, if a user wished to promote www.neowin.net to the top of the page, and query a search for a keyword on the front page, it would place Neowin.net on the top of your search results. This is a benefit for people who promote their favourite sites like Neowin to return the first result.&lt;br /&gt;&lt;br /&gt;Beside the Promote button, comes the Remove button. This button will delete that result from your future searches, to prevent it from coming back up again. This could be helpful in blocking those web sites that provide no helpful information to you. This is a great way to stop going back to the same bad result time and time again.&lt;br /&gt;&lt;br /&gt;Finally, the Comment button, where users can leave a comment about any result, making it useful for coming back to later. Users can add helpful comments for other users, or for themselves when visiting the site next time.&lt;br /&gt;&lt;br /&gt;Google has become one step closer to being your next bookmark organizer. Now you can view, save and edit your favourite sites all within Google. The bad thing about these features is, the fact most people don't search the same thing all the time, making it hard to take advantage of some of these features.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-8702813991702482610?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/8702813991702482610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=8702813991702482610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/8702813991702482610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/8702813991702482610'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/11/google-adds-to-search.html' title='Google adds to search'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-5532427236751035395</id><published>2008-11-05T01:17:00.000-08:00</published><updated>2008-11-05T01:18:52.488-08:00</updated><title type='text'>More model-driven development in .NET Framework "4", Visual Studio "10"</title><content type='html'>Microsoft &lt;a style="COLOR: rgb(0,102,204); TEXT-DECORATION: underline" href="http://www.microsoft.com/presspass/press/2007/oct07/10-30OsloPR.mspx"&gt;gave hints&lt;/a&gt; about coming releases of the .NET Framework "4" (4.0?) and Visual Studio "10" (2010?) at the Microsoft SOA &amp;amp; Business Process Conference. They’ll be part of a multiyear effort called "Oslo" that aims to make composite applications more mainstream.&lt;br /&gt;The most interesting parts of the &lt;a style="COLOR: rgb(0,102,204); TEXT-DECORATION: underline" href="http://www.microsoft.com/presspass/press/2007/oct07/10-30OsloPR.mspx"&gt;press release&lt;/a&gt; were the first mentions (that I have seen) of the future versions of the .NET Framework and Visual Studio:&lt;br /&gt;&lt;br /&gt;Building on the technology available today, the “Oslo” advancements will be delivered through Microsoft server and tools products in five key areas:&lt;br /&gt;•&lt;strong&gt;Server. Microsoft BizTalk Server “6”&lt;/strong&gt; will continue to provide a core foundation for distributed and highly scalable SOA and BPM solutions, and deliver the capability to develop, manage and deploy composite applications.&lt;br /&gt;•&lt;strong&gt;Services. BizTalk Services “1”&lt;/strong&gt; will offer a commercially supported release of Web-based services enabling hosted composite applications that cross organizational boundaries. This release will include advanced messaging, identity and workflow capabilities.&lt;br /&gt;&lt;br /&gt;•Framework. The Microsoft .NET Framework “4” release will further enable model-driven development with Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF).&lt;br /&gt;&lt;br /&gt;•Tools. New technology planned for Visual Studio “10” will make significant strides in end-to-end application life-cycle management through new tools for model-driven design of distributed applications.&lt;br /&gt;&lt;br /&gt;•Repository. There will also be investments in aligning the metadata repositories across the Server and Tools product sets. Microsoft System Center “5,” Visual Studio “10” and BizTalk Server “6” will utilize a repository technology for managing, versioning and deploying models.&lt;br /&gt;Not every programmer is thrilled in model-driven development, but I think it has it’s place in certain types of projects where reusability is easier to achieve.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-5532427236751035395?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/5532427236751035395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=5532427236751035395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/5532427236751035395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/5532427236751035395'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/11/more-model-driven-development-in-net.html' title='More model-driven development in .NET Framework &quot;4&quot;, Visual Studio &quot;10&quot;'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-7049015938308168206</id><published>2008-11-05T01:16:00.000-08:00</published><updated>2008-11-05T01:17:01.982-08:00</updated><title type='text'>Microsoft Unveils Next Version of Visual Studio and .NET Framework</title><content type='html'>Microsoft Corp. today provided the first look at the next version of its developer tools and platform, which will be named Visual Studio 2010 and the .NET Framework 4.0. Microsoft described the next release through the following five focus areas: riding the next-generation platform wave, inspiring developer delight, powering breakthrough departmental applications, enabling emerging trends such as cloud computing, and democratizing application life-cycle management (ALM).&lt;br /&gt;&lt;br /&gt;Today’s announcement included an in-depth look at how Visual Studio Team System (VSTS) 2010 (code-named “Rosario”) will help democratize ALM with a unique solution that brings all the members of a development organization into the application development life cycle, and removes many of the existing barriers to integration. Additional details on the other focus areas will be disclosed over the product development cycle.&lt;br /&gt;&lt;br /&gt;“With Visual Studio 2010 and the .NET Framework 4.0, we are focused on the core pillars of developer experience, support for the latest platforms spanning client, server, services and devices, targeted experiences for specific application types, and core architecture improvements,” said S. “Soma” Somasegar, senior vice president of the Developer Division at Microsoft. “These pillars are designed specifically to meet the needs of developers, the teams that drive the application life cycle from idea to delivery, and the customers that demand the highest quality applications across multiple platforms. You can expect to hear a lot more about Visual Studio 2010 and the .NET Framework 4.0 in the coming months.”&lt;br /&gt;&lt;br /&gt;Democratizing Application Life-Cycle Management&lt;br /&gt;Today, much of application development remains siloed throughout the enterprise, leading to decreased productivity and lengthy product development cycles. With VSTS 2010, Microsoft is taking the next step forward in giving individuals and development organizations an advanced solution that enables them to integrate effectively and build and deliver high-quality applications.&lt;br /&gt;This includes new capabilities that make it easier for all contributors on the software team to participate throughout the life cycle — from the core developers and testers to the wider team of project managers, designers and business analysts. Highlights include the following:&lt;br /&gt;&lt;br /&gt;• &lt;strong&gt;Modeling tools.&lt;/strong&gt;&lt;br /&gt;With VSTS 2010 Architecture, Microsoft will enable both technical and nontechnical users to create and use models to collaborate and to define business and system functionality graphically. The new version supports both Unified Modeling Language and Domain Specific Language support, so development organizations will have the right tool for right job. The new modeling capabilities in VSTS 2010 are a core part of the larger Microsoft modeling platform, which will also include the “Oslo” repository, tools and language.&lt;br /&gt;&lt;br /&gt;• &lt;strong&gt;Improved efficiency throughout the test cycle.&lt;/strong&gt;&lt;br /&gt;With VSTS 2010, Microsoft has made a significant investment in testing features and dramatically simplifying the tools required to integrate testing across the life cycle. New features include the ability to eliminate nonreproducible bugs, fast setup and deployment of tests to ensure the highest degree of completeness of test, focused test planning and progress tracking, and ensuring that all code changes are properly tested.&lt;br /&gt;&lt;br /&gt;• &lt;strong&gt;Substantial improvements in collaboration capabilities.&lt;/strong&gt;&lt;br /&gt;Microsoft has made major investments in the capabilities and scalability of Team Foundation Server (TFS) including significant improvements that allow teams to configure and adopt any flavor of Agile development processes. Teams can track and trace work more easily with richer linking of work items enabling hierarchical work item relationships. In the source code management system, TFS now provides visualization tools for tracking changes across branches and into the production build. VSTS 2010 also introduces workflow-based builds that catch errors before they have a chance to affect the rest of the team or, worse, enter production. Finally, administrators will find dramatically simpler TFS deployment and management.&lt;br /&gt;&lt;br /&gt;“The application life cycle is an integral part of today’s business. Regardless of core competencies, all organizations are driven by software that is created and customized to deliver a competitive advantage,” said Theresa Lanowitz, founder of voke, inc. “Enterprises that invest in an ALM solution can decrease their total cost of ownership of applications in their IT portfolio, and bring about a global approach that is an integrated and expansive system consisting of people, processes and technology. This global approach to ALM facilitates collaboration and takes the risk out of software development to produce predictable and reliable results for an optimized business outcome. Solutions such as VSTS are poised to take advantage of market opportunity by offering an application life-cycle platform to help enterprises realize this ROI benefit.”&lt;br /&gt;In another move to increase integration across the life cycle, Microsoft also announced that VSTS 2010 will provide a unified VSTS Development and Database product. As a benefit to existing Software Assurance (SA) customers, those who currently own Visual Studio Team System 2008 Development Edition or Visual Studio Team System 2008 Database Edition will receive all the following products starting Oct. 1, 2008, for free:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;• Visual Studio Team System 2008 Development Edition&lt;br /&gt;• Visual Studio Team System 2008 Database Edition&lt;br /&gt;• Visual Studio 2005 Team System for Software Developers&lt;br /&gt;• Visual Studio 2005 Team System for Database Professionals &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The products will be available to SA customers through their normal Microsoft Developer Network channel. More information can be found at &lt;a href="http://www.microsoft.com/licensing/sa"&gt;http://www.microsoft.com/licensing/sa&lt;/a&gt;.&lt;br /&gt;More information about Visual Studio 2010 and the .NET Framework 4.0 is available at &lt;a href="http://www.microsoft.com/presspass/press/2008/sep08/09-29VS10PR.mspx"&gt;&lt;/a&gt;&lt;a href="http://go.microsoft.com/?linkid=9537302"&gt;http://go.microsoft.com/?linkid=9537302&lt;/a&gt;.&lt;br /&gt;Founded in 1975, Microsoft (Nasdaq “MSFT”) is the worldwide leader in software, services and solutions that help people and businesses realize their full potential.&lt;br /&gt;&lt;br /&gt;Note to editors:If you are interested in viewing additional information on Microsoft, please visit the Microsoft Web page at &lt;a href="http://www.microsoft.com/presspass"&gt;http://www.microsoft.com/presspass&lt;/a&gt; on Microsoft’s corporate information pages. Web links, telephone numbers and titles were correct at time of publication, but may since have changed. For additional assistance, journalists and analysts may contact Microsoft’s Rapid Response Team or other appropriate contacts listed at &lt;a href="http://www.microsoft.com/presspass/contactpr.mspx"&gt;http://www.microsoft.com/presspass/contactpr.mspx&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-7049015938308168206?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/7049015938308168206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=7049015938308168206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/7049015938308168206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/7049015938308168206'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/11/microsoft-unveils-next-version-of.html' title='Microsoft Unveils Next Version of Visual Studio and .NET Framework'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-4233318239072519553</id><published>2008-09-25T20:40:00.000-07:00</published><updated>2008-09-25T20:41:44.968-07:00</updated><title type='text'>ASP.NET tab in IIS, more dangerous than it first appears!</title><content type='html'>I stumbled across a very interesting find yesterday morning and Todd Carter confirmed it by sending a link to his blog entry.  (it's a good read)&lt;br /&gt;First let me cover briefly what an AppDomain is. ASP.NET (.NET Winforms too but I won't cover that here) starts and runs within a sandbox called an AppDomain. Each Application on a server will run its own AppDomain which allows separation between different parts of the site for better security isolation and availability. If a folder is marked as an application, it will live within a different AppDomain than the root of the site. This information is not easily seen in IIS6 and earlier versions of IIS, but AppDomains are there just the same.&lt;br /&gt;&lt;br /&gt;What this means though is that if the AppDomain is restarted, then there is a performance hit while the AppDomain is started up and pages are recompiled on their first hit. Furthermore, session state that is running In-Process is lost. In-Process, or "InProc" session state is the default setting.&lt;br /&gt;&lt;br /&gt;In ASP.NET v1.x, there is an AppDomain restart when global.asax, web.config or anything related to the /bin folder is 'touched'. By 'touched', I mean renaming, creating, or updating the file in any way. And of course an IIS6 application pool recycle or a restart of IIS would cause the old AppDomain to shut down and a new one to start. This all made sense because those were application files and any change to them would make significant changes to the running AppDomain.&lt;br /&gt;&lt;br /&gt;While troubleshooting an unrelated issue on a v2.0 site yesterday, I noticed that there was an AppDomain restart simply by creating a non-application folder. Through further testing I found that adding folders, deleting folders and renaming folders caused the AppDomain recycle. Furthermore, if many dozen files were added in short succession to each other, that would also case the same restart. Of course the app_{folders} will cause a restart, and that makes sense, but completely non-application related folders also cause this same behavior.&lt;br /&gt;&lt;br /&gt;It turns out that this was a purposeful change with v2.0 and was done so that stale content doesn't remain in place after a significant change. I guess there were enough situations where that happened that they changed the situations that caused an AppDomain recycle to be far more aggressive than v1.x of the framework.&lt;br /&gt;&lt;br /&gt;What does this mean? Unfortunately quite a bit. People that used to make quick updates to their websites thinking that it wouldn't affect performance of unrelated parts of the site now need to consider that any changes to folders will cause the entire AppDomain to be restarted. Also a large number of changes to files within the site will do the same. (I'm not sure at this time the threshold that triggers a restart based on file changes). This will immediately kill all InProc session state and cause a performance hit on the site.&lt;br /&gt;&lt;br /&gt;I'm normally not one to complain about .NET, there are so many great things to say about it. But in this situation, I think this is a step backward. At this time, there is no way to disable this aggressive response to file and folder changes. The linkd.exe solution that Todd gave in the blog entry is a solution, but it's not an easy one and isn't reasonable in many situations.&lt;br /&gt;&lt;br /&gt;I don't have a good solution for this, but at least I am now aware of the affects of various file and folders changes and can watch out for that when making site updates or troubleshooting sites.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-4233318239072519553?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/4233318239072519553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=4233318239072519553' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/4233318239072519553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/4233318239072519553'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/09/aspnet-tab-in-iis-more-dangerous-than.html' title='ASP.NET tab in IIS, more dangerous than it first appears!'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-7489941086123472845</id><published>2008-08-17T23:16:00.000-07:00</published><updated>2008-08-17T23:21:24.558-07:00</updated><title type='text'>ASP.NET MVC Framework Controller Action Security</title><content type='html'>&lt;span id="ctl00_cphCell1_datalistArticles_ctl01_lblArticleDescription"&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;strong&gt;&lt;u&gt;Introduction:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;ASP.NET MVC Framework allows the developers to build their web application in a more flexible way. Using MVC framework you by passes the headaches of ViewState and Postbacks and also enable your application for testing. In this article we are going to take a look at the Controller Action Role-Based Security. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;strong&gt;&lt;u&gt;Prerequisite:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;If this is your first encounter with ASP.NET MVC Framework then I strongly suggest that you check out the introductory article using the link below: &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;a href="http://gridviewguy.com/ArticleDetails.aspx?articleID=372_Getting_Started_with_the_ASP.NET_MVC_Framework"&gt;Getting Started with the ASP.NET MVC Framework&lt;/a&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;strong&gt;&lt;u&gt;Scenario:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The scenario is really simple. A list of categories is displayed on the page and when the user clicks on the category it will be deleted. But we need to make sure that the user is authorized to delete the items. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;strong&gt;&lt;u&gt;Populating the Page with List of Categories:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The first task is to populate the page with a list of categories. Let’s see how this can be implemented. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;[ControllerAction]&lt;br /&gt;    public void List()&lt;br /&gt;    {&lt;br /&gt;        NorthwindDataContext northwind = new NorthwindDataContext();&lt;br /&gt;        var list = northwind.Categories;&lt;br /&gt;        RenderView("Categories", list);&lt;br /&gt;    }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The &lt;strong&gt;List&lt;/strong&gt; action is responsible for populating the Categories view with the required data. Let’s check out the Categories view. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;public partial class Categories : ViewPage&lt;ienumerable&gt;&lt;aspalliancemvcapplication.category&gt;&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;/aspalliancemvcapplication.category&gt;&lt;/ienumerable&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;% foreach (var category in ViewData)        { %&gt;&lt;br /&gt;&lt;br /&gt;&lt;%= Html.ActionLink&lt;categorycontroller&gt;(c =&gt; c.Delete(category.id),&lt;br /&gt;    category.CategoryName, new { onclick = "return confirmDelete(" + category.id + ")" })%&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;%}  %&gt;&lt;/categorycontroller&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The first thing to note is the &lt;strong&gt;Categories&lt;/strong&gt; class inherits from the &lt;strong&gt;ViewPage&lt;/strong&gt; which is of &lt;span style="font-family:Courier New;"&gt;IEnumerable&lt;category&gt;&lt;/category&gt;&lt;/span&gt; type. This means that we will have the strong type support for IEnumerable&lt;category&gt; in the HTML view of the page. Now, let’s discuss the HTML part of the Categories view. &lt;/category&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The foreach loop is used to iterate through the categories. The &lt;span style="font-family:Courier New;"&gt;Html.ActionLink&lt;/span&gt; method is used to create hyperlinks which are directed to particular controllers. The first argument to the Html.ActionLink is the Linq expression for the action. The argument &lt;span style="font-family:Courier New;"&gt;c =&gt; c.Delete(category.id)&lt;/span&gt; means that we are attaching the &lt;strong&gt;Delete&lt;/strong&gt; action to all the categories in the ViewData object. The Delete operation will take a single parameter which is &lt;span style="font-family:Courier New;"&gt;categoryId&lt;/span&gt;. The next parameter is the text to appear for the hyperlink. The final parameter is the HTML attributes. We are using &lt;span style="font-family:Courier New;"&gt;onclick&lt;/span&gt; attribute of the hyperlink which will popup a confirmation box. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The HTML generated for the page might look something like this: &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;span style="font-family:Courier New;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;  &lt;span style="font-family:Courier New;"&gt;&amp;lt;a href="/Category/Delete/1" onclick="return confirmDelete(1)" &amp;gt;Beverages Edite&amp;lt;/a&amp;gt;&lt;br /&gt;  &amp;lt;br /&amp;gt;&lt;br /&gt; &lt;br /&gt;  &amp;lt;a href="/Category/Delete/2" onclick="return confirmDelete(2)" &amp;gt;Condiments&amp;lt;/a&amp;gt;&lt;br /&gt;  &amp;lt;br /&amp;gt;&lt;br /&gt; &lt;br /&gt;  &amp;lt;a href="/Category/Delete/3" onclick="return confirmDelete(3)" &amp;gt;Confections&amp;lt;/a&amp;gt;&lt;br /&gt;  &amp;lt;br /&amp;gt;&lt;br /&gt; &lt;br /&gt;  &amp;lt;a href="/Category/Delete/4" onclick="return confirmDelete(4)" &amp;gt;Dairy Products&amp;lt;/a&amp;gt;&lt;br /&gt;  &amp;lt;br /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Now, looking at the URL’s above anyone can easily delete the item by simply copying the URL in the address bar. So, the question is how do we secure the controller actions so only authorized users would be able to delete the items. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;strong&gt;&lt;u&gt;Controller Action Security:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;ASP.NET MVC Framework is still in its development phases and there is still a lot on the wish list. Maybe in few months the framework will provide us the flexibility to configure action based security easily. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;For now let’s use another approach to add security to our controller actions. The &lt;span style="font-family:Courier New;"&gt;OnPreAction&lt;/span&gt; event is fired before the action is executed and this seems to be an ideal place to authorize the user. You can override the &lt;span style="font-family:Courier New;"&gt;OnPreAction&lt;/span&gt; of the controller class but this solution is not scalable since then you will need to override all the controllers for security purposes. A better approach is to introduce a &lt;span style="font-family:Courier New;"&gt;BaseController&lt;/span&gt; and override the &lt;span style="font-family:Courier New;"&gt;OnPreAction&lt;/span&gt; of the &lt;span style="font-family:Courier New;"&gt;BaseController&lt;/span&gt;. All the controllers will derive from the BaseController class instead of the Controller class. And the BaseController will derive from the Controller class.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;protected override bool OnPreAction(string actionName, System.Reflection.MethodInfo methodInfo)&lt;br /&gt;    {&lt;br /&gt;        string controllerName =  methodInfo.DeclaringType.Name;&lt;br /&gt;   &lt;br /&gt;        if(!IsAuthorized(controllerName,actionName)) throw new SecurityException("not authenticated");&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;            return base.OnPreAction(actionName, methodInfo);&lt;br /&gt;    }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;The IsAuthorized custom method is responsible for performing the actual authorization. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;private bool IsAuthorized (string controllerName, string actionName)&lt;br /&gt;    {&lt;br /&gt;        System.Web.HttpContext context = System.Web.HttpContext.Current;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;            XDocument xDoc = null;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;            if (context.Cache["ControllerActionsSecurity"] == null)&lt;br /&gt;        {&lt;br /&gt;            xDoc =  XDocument.Load(context.Server.MapPath("~/ControllerActionsSecurity.xml"));&lt;br /&gt;            context.Cache.Insert("ControllerActionsSecurity",xDoc);&lt;br /&gt;        }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;            xDoc = (XDocument) context.Cache["ControllerActionsSecurity"];&lt;br /&gt;        IEnumerable&lt;xelement&gt; elements = xDoc.Element("ControllerSecurity").Elements();&lt;/xelement&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;            var role = (from e in elements&lt;br /&gt;                    where ((string)e.Attribute("controllerName")) == controllerName&lt;br /&gt;                    &amp;amp;&amp;amp; ((string)e.Attribute("actionName")) == actionName&lt;br /&gt;                    select new { RoleName = e.Attribute("Roles").Value }).SingleOrDefault();&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;            if (role == null) return true;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;            if (!User.IsInRole(role.RoleName))&lt;br /&gt;                return false;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;            return true;&lt;br /&gt;    }&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Nothing too complicated! The authorization details are stored in an XML file called &lt;span style="font-family:Courier New;"&gt;ControllerActionsSecurity&lt;/span&gt;.xml. Here are the contents of the file: &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;controllersecurity&gt;&lt;br /&gt;&lt;add controllername="CategoryController" actionname="Delete" roles="Admin"&gt;&lt;br /&gt;&lt;/add&gt;&lt;/controllersecurity&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;strong&gt;controllerName&lt;/strong&gt;: The name of the controller&lt;br /&gt;&lt;strong&gt;actionName&lt;/strong&gt;: The action of the controller&lt;br /&gt;&lt;strong&gt;Roles&lt;/strong&gt;: Authorized roles&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;If you need to add authorization to a different controller then simply make an entry in the XML file with the appropriate controllerName and the actionName. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;strong&gt;&lt;u&gt;Conclusion:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;In this article we learned how to authorize the user based on the controller and the action. Hopefully, ASP.NET team will introduce more flexible ways to authorize the users based on their actions. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;I hope you liked the article happy coding! &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;a href="http://gridviewguy.com/ArticleDownloads/AspAllianceMVC_a.zip"&gt;[Download] &lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-7489941086123472845?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/7489941086123472845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=7489941086123472845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/7489941086123472845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/7489941086123472845'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/08/aspnet-mvc-framework-controller-action.html' title='ASP.NET MVC Framework Controller Action Security'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-5057777176555314960</id><published>2008-08-11T02:09:00.000-07:00</published><updated>2008-08-11T02:16:01.704-07:00</updated><title type='text'>Tip/Trick: Optimizing ASP.NET 2.0 Web Project Build Performance with VS 2005</title><content type='html'>&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;This posts covers how to best optimize the build performance with Visual Studio 2005 when using web projects.  If you are experiencing slow builds or want to learn how to speed them up please read on.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;strong&gt;Quick Background on VS 2005 Web Site Project and VS 2005 Web Application Project options&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;img src="http://webproject.scottgu.com/intro.png" align="right" /&gt; VS 2005 supports two project-model options: &lt;a href="http://weblogs.asp.net/scottgu/archive/2005/08/21/423201.aspx" target="_blank"&gt;VS 2005 Web Site Projects&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/05/08/VS-2005-Web-Application-Project-V1.0-Released.aspx" target="_blank"&gt;VS 2005 Web Application Projects&lt;/a&gt;.  &lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;VS 2005 Web Site Projects were built-in with the initial VS 2005 release, and provide a project-less based model for doing web development that uses that same dynamic compilation system that ASP.NET 2.0 uses at runtime.  VS 2005 Web Application Projects were released as a fully supported download earlier this spring, and provide a project model that uses a MSBuild based build system that compiles all code in a project into a single assembly (similar to VS 2003 -- but without many of the limitations that VS 2003 web projects had with regard to FrontPage Server Extensions, IIS dependencies, and other issues).  To learn more about VS 2005 Web Application Projects, please review the tutorials I've published on my &lt;a href="http://webproject.scottgu.com/" target="_blank"&gt;http://webproject.scottgu.com&lt;/a&gt; web-site.  Note that VS 2005 Web Application Project support will be included in VS 2005 SP1 (so no additional download will be required going forward).&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Both the VS 2005 Web Site Project option and the VS 2005 Web Application Project option will continue to be &lt;u&gt;fully supported&lt;/u&gt; going forward with future Visual Studio releases.  What we've found is that some people love one option, while disliking the other, and vice-versa.  From a feature perspective there is no "one best option" to use - it really depends on your personal preferences and team dynamics as to which will work best for you.  For example: a lot of enterprise developers love the VS 2005 Web Application option because it provides a lot more build control and team integration support, while a lot of web developers love the VS 2005 Web Site model because of its "just hit save" dynamic model and flexibility.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Two articles you might find useful to decide which works best for you is &lt;a href="http://msdn.microsoft.com/vstudio/default.aspx?pull=/library/en-us/dnvs05/html/WAP.asp" target="_blank"&gt;this MSDN whitepaper&lt;/a&gt; that includes some comparisons between the two models, and Rick Strahl's &lt;a href="http://west-wind.com/weblog/posts/5601.aspx" target="_blank"&gt;Web Application Projects and Web Deployment Projects are Here&lt;/a&gt; article that provides a good discussion of the pros/cons of the different options.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;To migrate from the VS 2005 Web Site Project model to the VS 2005 Web Application Project model, please follow this &lt;a href="http://webproject.scottgu.com/CSharp/Migration2/Migration2.aspx" target="_blank"&gt;C#&lt;/a&gt; or &lt;a href="http://webproject.scottgu.com/VisualBasic/Migration2/Migration2.aspx" target="_blank"&gt;VB&lt;/a&gt; tutorial that walks-through the steps for how to-do so.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;strong&gt;So Which Project Option Builds Faster?&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;When doing full builds of projects, the VS 2005 Web Application Project option will compile projects much faster that the VS 2005 Web Site Project option.  By "full build" I mean cases where every class and page in a project is being compiled and re-built - either because you selected a "Rebuild" option within your "build" menu, or because you modified code within a dependent class library project or in the /app_code directory and then hit "build" or "ctrl-shift-b" to compile the solution.  &lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;There are a few reasons why the VS 2005 Web Application Project ends up being significantly faster than Web Site Projects in these "full rebuild" scenarios.  The main reason is that (like VS 2003), the VS 2005 Web Application Project option only compiles your page's code-behind code and other classes within your project.  It &lt;em&gt;does not&lt;/em&gt; analyze or compile the content/controls/in-line code within your .aspx pages -- which means it does not need to parse those files.  On the downside this means that during compilation it will not check for errors in those files (unlike the VS 2005 Web Site Project option which will identify any errors there).  On the positive side it makes compilations much faster.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;So does this mean that you should always use the VS 2005 Web Application Project option to get the fastest build times with large projects?  No -- not necessarily.  One nice feature that you can enable with the VS 2005 Web Site Project option is support for doing "on demand compilation".  This avoids you having to always re-build an entire project when dependent changes are made -- instead you can just re-build those pages you are working on and do it on-demand.  This will lead to significant build performance improvements for your solution, and can give you a very nice workflow when working on very large projects.  I would definitely recommend using this option if you want to improve your build performance, while retaining the flexibility of the web-site model.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;The below sections provide specific tutorials for both the VS 2005 Web Site Project Model and the VS 2005 Web Application Project Model on optimization techniques -- including the "on demand compilation" build option I described above.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;strong&gt;Specific Tips/Tricks for Optimizing VS 2005 Web Site Project Build Times&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;When using the VS 2005 Web Site Project model, you can significantly improve build performance times by following these steps:&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;1) Verify that you are not suffering from an issue I call "Dueling Assembly References".  I describe how to both detect and fix this condition in &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/07/30/Common-Gotcha_3A00_-Slow-VS-2005-Web-Site-Build-Performance-Because-of-_1C20_Dueling-Assembly-References_1D20_.aspx" target="_blank"&gt;this blog post&lt;/a&gt;.  If you are ever doing a build and see the compilation appear to pause in the "Validating Web Site" phase of compilation (meaning no output occurs in the output window for more than a few seconds), then it is likely that you are running into this problem.  Use the techniques &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/07/30/Common-Gotcha_3A00_-Slow-VS-2005-Web-Site-Build-Performance-Because-of-_1C20_Dueling-Assembly-References_1D20_.aspx" target="_blank"&gt;outlined in this blog post&lt;/a&gt; to fix it.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;2) Keep the number of files in your /app_code directory small.  If you end up having a lot of class files within this directory, I'd recommend you instead add a separate class library project to your VS solution and move these classes within that instead since class library projects compile faster than compiling classes in the /app_code directory.  This isn't usually an issue if you just have a small number of files in /app_code, but if you have lots of directories or dozens of files you will be able to get speed improvements by moving these files into a separate class library project and then reference that project from your web-site instead.  One other thing to be aware of is that whenever you switch from source to design-view within the VS HTML designer, the designer causes the /app_code directory to be compiled before the designer surface loads.  The reason for this is so that you can host controls defined within /app_code in the designer.  If you don't have an /app_code directory, or only have a few files defined within it, the page designer will be able to load much quicker (since it doesn't need to perform a big compilation first).&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;3) Enable the on-demand compilation option for your web-site projects.  To enable this, right-click on your web-site project and pull up the project properties page.  Click the "Build" tab on the left to pull up its build settings.  Within the "Build" tab settings page change the F5 Start Action from "Build Web Site" to either the "Build Page" or "No Build" option.  Then make sure to uncheck the "Build Web site as part of solution" checkbox:&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;img src="http://www.scottgu.com/blogposts/buildperf/step1.jpg" /&gt; &lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;When you click ok to accept these changes you will be running in an on-demand compilation mode.  What this means (when you select the "Build Page" option in the dialog above) is that when you edit a page and then hit F5 (run with debugging) or Ctrl-F5 (run without debugging) the solution will compile all of the class library projects like before, then compile the /app_code directory and Global.asax file, and then instead of re-verifying all pages within the web-site it will only verify the current page you are working on, and any user controls that the page references.  With large (and even medium) projects with lots of pages, this can obviously lead to major performance wins.  Note that ASP.NET will automatically re-compile any other page or control you access at runtime -- so you will always have an up-to-date and current running application (you don't need to worry about old code running).  You can optionally also use the "No Build" option to by-pass page-level validation in the IDE, which obviously speeds up the entire process much further (I'd recommend giving both options a try to see which you prefer).  &lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;By deselecting the "Build Web site as part of solution" checkbox, you will find that the Ctrl-Shift-B keystroke (which builds the solution) will continue compiling all class library projects, but will not re-build all pages within your web-site project.  You will still get full intellisense support in your pages in this scenario - so you won't lose any design-time support.  You will also continue to get warning/error squiggles in code/class when they are open.  If you want a way to force a re-build to occur on pages not open, or across all pages within the web-site, you can use the "Build Page" or "Build Web Site" menu options within the "Build" menu of Visual Studio:&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;img src="http://www.scottgu.com/blogposts/buildperf/step2.jpg" /&gt; &lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;This gives you control as to which pages on your site you want to verify (and when) - and can significantly improve build performance.  One trick I recommend doing is adding a new shortcut keystroke to your environment to allow you to quickly short-cut the "Build Page" menu option to avoid you having to ever use a mouse/menu for this.  You can do this by selecting the Tools-&gt;Customize menu item, and then click the "Keyboards" button on the bottom-left of the customize dialog.  This will bring up a dialog box that allows you to select the VS Build.BuildPage command and associate it within any keystroke you want:&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;img src="http://www.scottgu.com/blogposts/buildperf/step3.jpg" /&gt; &lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Once you do this, you can type "Ctrl-Shift-P" (or any other keystroke you set) on any page to cause VS to compile any modified class library project (effectively the same thing that Ctrl-Shift-B does), then verify all classes within the /app_code directory, and then re-build just the page or user control (and any referenced master pages or user controls it uses) that you are working on within the project.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Once the above steps are applied, you should find that your build performance and flexibility is much improved - and that you have complete control over builds happen.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;strong&gt;Specific Tips/Tricks for Optimizing VS 2005 Web Application Project Build Times&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;If you are using the VS 2005 Web Application project option, here are a few optimizations you might want to consider:&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;1) If you have a very large project, or are working on an application with many other developers, you might want to consider splitting it up into multiple "sub-web" projects.  I wouldn't necessarily recommend this for performance reasons (unless you have thousands and thousands of pages it probably doesn't make a huge difference), but it can sometimes make it easier to help manage a large project.  Please read this past &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/08/16/Tip_2F00_Trick_3A00_-Creating-Sub_2D00_Web-Projects-using-the-VS-2005-Web-Application-Project-Option.aspx" target="_blank"&gt;blog-post of mine on creating sub-web projects&lt;/a&gt; to learn how to use this.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;2) Consider adding a VS 2005 Web Deployment project to your solution for deep verification.  I mentioned above that one downside of using the VS 2005 Web Application Project option was that it only compiled the code-behind source code of your pages, and didn't do a deeper verification of the actual .aspx markup (so it will miss cases where you have a mis-typed tag in your .aspx markup).  This provides the same level of verification support that VS 2003 provided (so you aren't loosing anything from that), but not as deep as the Web Site Project option.  One way you can still get this level of verification with VS 2005 Web Application Projects is to optionally add a &lt;a href="http://weblogs.asp.net/scottgu/archive/2005/11/06/429723.aspx" target="_blank"&gt;VS 2005 Web Deployment Project&lt;/a&gt; into your solution (web deployment projects work with both web-site and web-application solutions).  You can configure this to run only when building "release" or "staging" builds of your solution (to avoid taking a build hit at development time), and use it to provide a deep verification of both your content and source code prior to shipping your app.  &lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;strong&gt;Common Tips/Tricks for Optimizing any VS 2005 Build Time&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;Here are a few things I recommend checking anytime you have poor performance when building projects/solutions (note: this list will continue to grow as I hear new ones - so check back in the future):&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;1) &lt;u&gt;Watch out for Virus Checkers, Spy-Bots, and Search/Indexing Tools&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;VS hits the file-system a lot, and obviously needs to reparse any file within a project that has changed the next time it compiles.  One issue I've seen reported several times are cases where virus scanners, spy-bot detecters, and/or desktop search indexing tools end up monitoring a directory containing a project a little too closely, and continually change the timestamps of these files (they don't alter the contents of the file - but they do change a last touched timestamp that VS also uses).  This then causes a pattern of: you make a change, rebuild, and then in the background the virus/search tool goes in and re-searches/re-checks the file and marks it as altered - which then causes VS to have to re-build it again.  Check for this if you are seeing build performance issues, and consider disabling the directories you are working on from being scanned by other programs.  I've also seen reports of certain Spybot utilities causing extreme slowness with VS debugging - so you might want to verify that you aren't having issues with those either.&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;2) &lt;u&gt;Turn off AutoToolboxPopulate in the Windows Forms Designer Options&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;There is an option in VS 2005 that will cause VS to automatically populate the toolbox with any controls you compile as part of your solution.  This is a useful feature when developing controls since it updates them when you build, but I've seen a few reports from people who find that it can cause VS to end up taking a long time (almost like a hang) in some circumstances.  Note that this applies both to Windows Forms and Web Projects.  To disable this option, select the Tools-&gt;Options menu item, and then unselect the Windows Forms Designer/General/AutoToolboxPopulate checkbox option (for a thread on this see: &lt;a href="http://forums.asp.net/1108115/ShowPost.aspx" target="_blank"&gt;http://forums.asp.net/1108115/ShowPost.aspx&lt;/a&gt;).&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;3) &lt;u&gt;Examine which 3rd party packages are running in Visual Studio&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;There are a lot of great 3rd party VS packages that you can plug into Visual Studio.  These deliver big productivity wins, and offer tons of features.  Occasionally I've seen issues where performance or stability is being affected by them though.  This is often true in cases where an older version (or beta) of one of these packages is being used (always keep an eye out for when a manufacturer updates them with bug-fixes).  If you are seeing issues with performance or stability, you might want to look at trying a VS configuration where you uninstall any additional packages to see if this makes a difference.  If so, you can work with the 3rd party manufacturer to identify the issue.  &lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;strong&gt;Visual Basic Build Performance HotFix&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt; &lt;/span&gt;&lt;p&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;The Visual Basic team has released several hotfixes for compilation performance issues with large VB projects.  You can learn &lt;a href="http://blogs.msdn.com/webdevtools/archive/2006/07/24/677180.aspx" target="_blank"&gt;how to obtain these hotfixes immediately from this blog post&lt;/a&gt;.  The VB team also has a direct email address -- &lt;a href="mailto:vbperf@microsoft.com"&gt;vbperf@microsoft.com&lt;/a&gt; -- that you can use to contact them directly if you are running into performance issues.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-5057777176555314960?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/5057777176555314960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=5057777176555314960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/5057777176555314960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/5057777176555314960'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/08/tiptrick-optimizing-aspnet-20-web.html' title='Tip/Trick: Optimizing ASP.NET 2.0 Web Project Build Performance with VS 2005'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-5320872901787875578</id><published>2008-08-08T23:35:00.000-07:00</published><updated>2008-08-11T02:15:28.340-07:00</updated><title type='text'>Two New Updates to Google Image Search</title><content type='html'>Google announced two new updates to Google Image Search that further help users find the information they need.&lt;br /&gt;&lt;br /&gt;First, Google Image Search now includes more than 1.1 billion images from around the world (previously: 800 millions). With a comprehensive index of images, users can quickly and easily find relevant images of both popular and obscure queries.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img src="http://www.prweaver.com/blog/images/google/google-image-sunsets.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In addition, Google released a new feature that displays images from Google Image Search above Google web search results when they're relevant to users' search queries. When users search for queries such as sunsets, mountains, torre eiffel, or inverno on the Google homepage, they may see relevant thumbnail images at the top of their search results marked "Image Results." When users click on the thumbnail images, they will be directed to the website that contains the original image. Users may also click on the "Image Results" link to see the complete Google Image Search results page for that query.&lt;br /&gt;&lt;br /&gt;This new feature may only work for users in the USA (it doesn't work for now in France).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-5320872901787875578?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/5320872901787875578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=5320872901787875578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/5320872901787875578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/5320872901787875578'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2008/08/two-new-updates-to-google-image-search.html' title='Two New Updates to Google Image Search'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-762504640934148801</id><published>2007-10-21T19:10:00.000-07:00</published><updated>2007-11-06T01:21:10.720-08:00</updated><title type='text'></title><content type='html'>Hi, &lt;strong&gt;&lt;span style="color: rgb(51, 102, 255);font-size:130%;" &gt;I am Kaushik Rabadiya&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-762504640934148801?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/762504640934148801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=762504640934148801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/762504640934148801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/762504640934148801'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2007/10/hi-i-am-kaushik-rabadiya.html' title=''/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-472688689555981198.post-3286717870563437492</id><published>2007-06-28T10:46:00.000-07:00</published><updated>2007-06-28T10:47:29.094-07:00</updated><title type='text'>Software</title><content type='html'>About The Software And Description.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/472688689555981198-3286717870563437492?l=kaushikkavi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaushikkavi.blogspot.com/feeds/3286717870563437492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=472688689555981198&amp;postID=3286717870563437492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/3286717870563437492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/472688689555981198/posts/default/3286717870563437492'/><link rel='alternate' type='text/html' href='http://kaushikkavi.blogspot.com/2007/06/software.html' title='Software'/><author><name>KAUSHIK RABADIYA</name><uri>http://www.blogger.com/profile/04802111310656110121</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp0.blogger.com/_-TUBVU7gd6A/R6FUlmY_sKI/AAAAAAAAAAw/pq7WsVW0l3o/S220/ATgAAAD72N-MXfEnMu4Y5fPk9PELlnj0_1UNOVFRqA8Sig_BpyAEOWYXGEwWiv3C7o2rF9dYrdJtIk0No010I4vr7W6SAJtU9VCPm0u5Oy4i42O5NloswcaDQZuGkA.jpg'/></author><thr:total>0</thr:total></entry></feed>
