<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Sharad Kumar</title><link>https://weblogs.asp.net:443/sharadkumar/</link><description>MVP (SharePoint Server), MCTS (SharePoint Services), MCP (ASP.NET).</description><item><title>SEO Toolkit for SharePoint?</title><link>https://weblogs.asp.net:443/sharadkumar/seo-toolkit-for-sharepoint</link><description>&lt;p&gt;Well, this post is about SEO with SharePoint. As more and more public-facing sites with SharePoint come up, the topic of SEO keeps coming back in all those conversations, be it elevator, meeting room, or a formal evaluation of platform capability.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So why a question mark?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Well, those who follow Microsoft Web Platform knows that there is already a &lt;a href="http://www.microsoft.com/web/spotlight/seo.aspx" target="_blank"&gt;super cool &amp;amp; free SEO Toolkit&lt;/a&gt; for IIS (&lt;a href="http://www.microsoft.com/web/webmatrix/features/" target="_blank"&gt;&amp;amp; with WebMatrix&lt;/a&gt;) that you can use against your external, internal, or any other site outside your network/server. Yes, you can use it with SharePoint sites as well – toolkit doesn’t care. The only problem (somewhat) is that this needs to be installed and run by a geek like you and me.&lt;/p&gt;  &lt;p&gt;Short story is, I was recently engaged in a conversation that lead to comparison of CMS platform like SharePoint, SiteCore and few others. On topic of SEO, browser integrated tooling in SiteCore took bit of numerical edge since it gives content authors the view and accessibility of SEO parameters in their content and therefore reducing the feedback loop to ensure SEO friendliness. &lt;/p&gt;  &lt;p&gt;Here is a snapshot of what SEO Toolkit looks like in SiteCore:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/seo-overview-tab9_0A3A8638.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="seo-overview-tab[9]" border="0" alt="seo-overview-tab[9]" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/seo-overview-tab9_thumb_030B23F3.jpg" width="480" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In SharePoint world, SEO friendliness in sites – to large extent – sits outside the browser and beyond reach of a typical content author, on developers and designers desktops in form of IIS SEO Toolkit, IDE, WebMatrix etc. Is this a bad thing? Not completely. Content authors are not expected to create H1 in the right place on page, but yeah, it is important to reduce the feedback loop for someone responsible for generating content and is interested in all outcomes for that content – particularly for SEO. Sooner he can fix that long Title he created, missing keywords etc, better it is.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Do we need SEO tooling inside SharePoint?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With above reasoning and thought I felt there is probably a need for some SEO tooling inside SharePoint, particularly on CMS front. I said *probably*, hence I would like to hear from you – if you see value, and what would you expect in terms of features?&lt;/p&gt;  &lt;p&gt;&lt;font style="background-color: #ffff00"&gt;&lt;strong&gt;Warning&lt;/strong&gt;&amp;#160;&lt;/font&gt;– This post is not about sharing the tooling or source code. I just want to hear your feedback, and once my prototype is mature enough to call “alpha”, I’ll share it on MSDN or Codeplex.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disclaimer &lt;/strong&gt;– I am not trying to add any new crawling features with my toolkit other than what IIS SEO Toolkit already does. If that toolkit works for your users with SharePoint, you will likely not see much value with below.&lt;/p&gt;  &lt;h3&gt;SEO Toolkit for SharePoint – An experiment!&lt;/h3&gt;  &lt;p&gt;So, with this thought of &lt;em&gt;SEO inside SharePoint &lt;/em&gt;– I did a quick search to see if anything close to MS SEO Toolkit already exists. Didn’t find anything, and then I started looking into leveraging IIS Toolkit capabilities. Soon I discovered, that the &lt;a href="http://blogs.iis.net/carlosag/archive/2009/11/18/iis-seo-toolkit-start-new-analysis-automatically-through-code.aspx" target="_blank"&gt;IIS SEO Toolkit is extensible&lt;/a&gt; – Bingo!&lt;/p&gt;  &lt;p&gt;I quickly started a VS project to experiment SEO Tookit API &lt;em&gt;inside &lt;/em&gt;SharePoint. Here are some screenshots of what I managed to assembled – quick and dirty!&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Site Settings page…&lt;/strong&gt;      &lt;br /&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_4258B1B6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_0DD7DF6E.png" width="631" height="325" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Site Analysis Settings page…&lt;/strong&gt;      &lt;br /&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_1B99D56D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_54A08CA2.png" width="735" height="596" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;After you click ‘Run Now’, results are saved in a hidden list, SEO Results…     &lt;br /&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/SNAGHTMLb32f8b_188510F6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTMLb32f8b" border="0" alt="SNAGHTMLb32f8b" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/SNAGHTMLb32f8b_thumb_6A1B657B.png" width="734" height="770" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;strong&gt;More violations…       &lt;br /&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/SNAGHTMLb4deae_1DD33600.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTMLb4deae" border="0" alt="SNAGHTMLb4deae" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/SNAGHTMLb4deae_thumb_5EFDECFF.png" width="680" height="770" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;With that I was able to use IIS SEO Toolkit to crawl my site and report issues. The following are some of the possibilities I have in mind:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Crawl and report on internal as well as external sites.&lt;/li&gt;    &lt;li&gt;Report globally across rules, so that content and site administrators can take decisions across content in current site-collection.&lt;/li&gt;    &lt;li&gt;Report within context of current WCM page, so that author gets to see results right there and act on it.&lt;/li&gt;    &lt;li&gt;Do tabular reporting, like above, as well as visual reporting with icons, charts etc.&lt;/li&gt;    &lt;li&gt;Support SharePoint Server as well as Foundation 2010.&lt;/li&gt;    &lt;li&gt;Support add-ins type model to allow additional validators, say &lt;a href="http://blogs.iis.net/carlosag/archive/2010/05/10/iis-seo-toolkit-and-w3c-validation-service.aspx" target="_blank"&gt;W3C validator&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Use built-in alerts model to be able to notify.&lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Call for feedback…&lt;/h3&gt;  &lt;p&gt;As you can see, I’m in prototyping mode and wondering if this is worth its time. I’d like to hear from you, if you see value and what would be most useful for your authors on SharePoint. Some questions and pointers I can think of are:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Implement at site-collection level, or web level. Or at farm level as well.&lt;/li&gt;    &lt;li&gt;Support only SP sites, and not allow external site analysis.&lt;/li&gt;    &lt;li&gt;Support not just analysis, but also sitemap file generation etc.&lt;/li&gt;    &lt;li&gt;Support for plug-ins to add additional validators.&lt;/li&gt;    &lt;li&gt;Support for running immediately, as well as scheduling to run crawl at a later time with/without recurrence.&lt;/li&gt;    &lt;li&gt;Support for farm, site, web level global reporting. &lt;/li&gt;    &lt;li&gt;Support for current page view, similar to SiteCore approach in first screenshot above.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;What other features could be useful?&lt;/p&gt;          &lt;h3&gt;Conclusion&lt;/h3&gt;  &lt;p&gt;I have put together a bare-bone prototype to experiment on possibility of a SEO toolkit to run inside SharePoint. It would be useful to hear you feedback if this could be of use to your scenarios, when there is already a IIS SEO Toolkit which rocks!&lt;/p&gt;  &lt;p&gt;If this takes next steps of further development, I would like to polish it a bit more before I share the tooling.&lt;/p&gt;</description><pubDate>Thu, 11 Nov 2010 04:25:08 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/seo-toolkit-for-sharepoint</guid><category>SharePoint</category><category>SharePoint 2010</category><category>User Experience</category></item><item><title>Setting up SharePoint without Active Directory</title><link>https://weblogs.asp.net:443/sharadkumar/setting-up-sharepoint-without-active-directory</link><description>&lt;p&gt;In order to setup SharePoint without AD, you need to run following PowerShell command on Management Shell after installing SharePoint on your server, but before running Config Wizard: (we don’t want to run this SP farm in stand-alone mode!)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1. New-SPConfigurationDatabase&lt;/strong&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SYNOPSIS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Creates a new configuration database. &lt;/p&gt;    &lt;p&gt;SYNTAX     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; New-SPConfigurationDatabase [-DatabaseName] &amp;lt;String&amp;gt; [-DatabaseServer] &amp;lt;String&amp;gt; [[-DirectoryDomain] &amp;lt;String&amp;gt;] [[-DirectoryOrganizationUnit] &amp;lt;String&amp;gt;]      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [[-AdministrationContentDatabaseName] &amp;lt;String&amp;gt;] [[-DatabaseCredentials] &amp;lt;PSCredential&amp;gt;] [-FarmCredentials] &amp;lt;PSCredential&amp;gt; [-Passphrase] &amp;lt;SecureString&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [-AssignmentCollection &amp;lt;SPAssignmentCollection&amp;gt;] [&amp;lt;CommonParameters&amp;gt;] &lt;/p&gt;    &lt;p&gt;DESCRIPTION     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; The New-SPConfigurationDatabase cmdlet creates a new configuration database on the specified database server. This is the central database for a new SharePoint farm. &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; For permissions and the most current information about Windows PowerShell for SharePoint Products, see the online documentation (&lt;a href="http://go.microsoft.com/fwlink/?LinkId=163185"&gt;http://go.microsoft.com/fwlink/?LinkId=163185&lt;/a&gt;). &lt;/p&gt;    &lt;p&gt;RELATED LINKS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Backup-SPConfigurationDatabase      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Disconnect-SPConfigurationDatabase      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Connect-SPConfigurationDatabase      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Remove-SPConfigurationDatabase &lt;/p&gt;    &lt;p&gt;REMARKS     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; To see the examples, type: &amp;quot;get-help New-SPConfigurationDatabase -examples&amp;quot;.      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For more information, type: &amp;quot;get-help New-SPConfigurationDatabase -detailed&amp;quot;.      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; For technical information, type: &amp;quot;get-help New-SPConfigurationDatabase -full&amp;quot;.&lt;/p&gt;    &lt;p&gt;&lt;u&gt;NOTE&lt;/u&gt;: Use –AdministrationContentDatabaseName switch to pass the name of Admin database you want instead of GUID-based name it automatically creates.&lt;/p&gt;    &lt;p&gt;Hence, one can pretty much easily control Admin, Config, and Content database names at the time of farm creation. If creating new farm, you can also delete and re-provision any service databases automatically created, from UI, to decide what database names you want. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;2. Run SharePoint Configuration Wizard,&lt;/strong&gt; and you’ll following as already added to farm. Select do not discconect from farm, and proceed…    &lt;br /&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_7866EC39.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_5E63064A.png" width="623" height="532" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Select the port, and authentication (NTLM in my case). Click next, and wizard will complete the remaining steps of provisioning, including creation of Central Admin Web App on the desired port.&lt;/p&gt;  &lt;p&gt;Once successful, it will open the Central Admin site and ask you to run Farm Config Wizard. I chose to skip and do things manually, to remain in control of what is happening on the farm. Like creating web-app for site collections, creating the very first site collection, and any other service applications.&lt;/p&gt;  &lt;p&gt;I needed this to create a public-facing installation of SharePoint Foundation RTM on a server which didn’t have AD. Now I am going to setup FBA, and possibly Live ID Auth as well. I will be also setting up RBS, and multi-tenancy on this farm ,and would post any notes, and findings here…&lt;/p&gt;  &lt;p&gt;--Sharad&lt;/p&gt;</description><pubDate>Sun, 25 Apr 2010 05:06:30 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/setting-up-sharepoint-without-active-directory</guid><category>Central Administration</category><category>SharePoint</category><category>SharePoint 2010</category></item><item><title>Aggregate SharePoint Event/Items with Exchange appointments into your Calendar view using Calendar Overlay</title><link>https://weblogs.asp.net:443/sharadkumar/aggregate-sharepoint-event-items-with-exchange-appointments-into-your-calendar-view-using-calendar-overlay</link><description>&lt;p&gt;In continuation of my &lt;a href="http://weblogs.asp.net/sharadkumar/archive/2010/03/12/aggregate-sharepoint-event-items-into-your-calendar-view-using-calendar-overlay.aspx" target="_blank"&gt;previous post&lt;/a&gt; about using Calendar Overlay with new SharePoint 2010 when you have other Calendar view in any other lists in SharePoint. Now the other option for Overlay we have is with Exchange.&lt;/p&gt;  &lt;p&gt;You can overlay current users (logged in user) personal Calendar (from Exchange) onto a existing SharePoint calendar, in any list, by using new Overlay feature. Here is an example:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_6DC4056C.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_55FCA839.png" width="1034" height="587" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Yes, you have to point to your OWA and Exchange WS url. It can also go and find your web service url, when you click find. In my case, it converted machine name into FQDN. That was smart…&lt;/p&gt;  &lt;p&gt;I had initial configuration issue, that my test users (Administrator!) didn’t have corresponding Exchange e-mail in SharePoint profile. So you have to ensure that your profiles are in sync with AD/Exchange for e-mail. It picks up current user’s e-mail from profile to pull data from Exchange calendar.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_7249EA59.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_6B1A8814.png" width="1033" height="609" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;My calendar in OWA…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_0B256F05.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_3D791CB7.png" width="1049" height="655" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Same calendar in Outlook 2010…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_1AC4B86F.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_18E43CDB.png" width="1267" height="478" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I think, new Calendar Overlay feature fills a great void. Users can now view SharePoint information within context of their personal calendar. Which is simply great!&lt;/p&gt;  &lt;p&gt;Enjoy new SharePoint 2010.&lt;/p&gt;  &lt;p&gt;--Sharad&lt;/p&gt;</description><pubDate>Mon, 29 Mar 2010 12:46:09 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/aggregate-sharepoint-event-items-with-exchange-appointments-into-your-calendar-view-using-calendar-overlay</guid><category>SharePoint</category><category>SharePoint 2010</category><category>User Experience</category></item><item><title>SharePoint 2010 – Central Admin tooling to create host header site collections</title><link>https://weblogs.asp.net:443/sharadkumar/sharepoint-2010-central-admin-tooling-to-create-host-header-site-collections</link><description>&lt;P&gt;Just like SharePoint 2007, you can create host-header based site collections in SharePoint 2010 as well. It means, that you do not necessarily need to create a site-collection under a managed path like /sites/, you can create multiple root-level site collections on same web-application/port by using host-header site collections. All you need to do is point your domain or sub-domain to your web-application and create a matching site-collection that you want.&lt;/P&gt;
&lt;P&gt;But, just like in 2007, it is something that you do by using STSADM, and is not available on Central Admin UI in 2010 as well. Yeah, though you can now also use PowerShell to create one:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;C:\PS&amp;gt;$w = Get-SPWebApplication http://sitename&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;C:\PS&amp;gt;New-SPSite http://www.contoso.com -OwnerAlias &lt;SPAN class=str&gt;"DOMAIN\jdoe"&lt;/SPAN&gt; -HostHeaderWebApplication $w -Title &lt;SPAN class=str&gt;"Contoso"&lt;/SPAN&gt; -Template &lt;SPAN class=str&gt;"STS#0"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;This example creates a host header site collection. Because the template is provided, the root Web of this site collection will be created.&lt;/PRE&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;I’ve been playing with WCM in SharePoint 2010 more and more, and for that I preferred creating hosts file entries for desired domains and create site-collections by those headers – in my dev environment. I used PowerShell initially, but then got interested to build my own UI on Central Admin instead.&lt;/P&gt;
&lt;H3&gt;Developed with Visual Studio 2010&lt;/H3&gt;
&lt;P&gt;So I used new Visual Studio 2010 tooling to create an empty SharePoint 2010 project. Added an application page (there is no option to add _Admin page item in VS 2010 RC), that got created in Layouts “mapped” folder. Created a new Admin mapped folder for 14-“hive”, and moved my new page there instead. Yes, I didn’t change the base class for page, its just that it runs under _admin, but it is indeed a LayoutsPageBase inherited page.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/sharadkumar/image_4D03F72C.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_4D03F72C.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/sharadkumar/image_thumb_485DC6A5.png" width=710 height=382 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_485DC6A5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;To introduce a action-link in Central Admin console, I created following element:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   1:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;Elements&lt;/SPAN&gt; &lt;SPAN class=attr&gt;xmlns&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="http://schemas.microsoft.com/sharepoint/"&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   2:  &lt;/SPAN&gt;  &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;CustomAction&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   3:  &lt;/SPAN&gt;        &lt;SPAN class=attr&gt;Id&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="CreateSiteByHeader"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   4:  &lt;/SPAN&gt;        &lt;SPAN class=attr&gt;Location&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="Microsoft.SharePoint.Administration.Applications"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   5:  &lt;/SPAN&gt;        &lt;SPAN class=attr&gt;Title&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="Create site collections by host header"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   6:  &lt;/SPAN&gt;        &lt;SPAN class=attr&gt;GroupId&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="SiteCollections"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   7:  &lt;/SPAN&gt;        &lt;SPAN class=attr&gt;Sequence&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="15"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   8:  &lt;/SPAN&gt;        &lt;SPAN class=attr&gt;RequiredAdmin&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="Delegated"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   9:  &lt;/SPAN&gt;        &lt;SPAN class=attr&gt;Description&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="Create a new top-level web site, by host header"&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  10:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class=html&gt;UrlAction&lt;/SPAN&gt; &lt;SPAN class=attr&gt;Url&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;="/_admin/OfficeToolbox/CreateSiteByHeader.aspx"&lt;/SPAN&gt;  &lt;SPAN class=kwrd&gt;/&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  11:  &lt;/SPAN&gt;  &lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;CustomAction&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  12:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN class=html&gt;Elements&lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;&amp;gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Used Reflector to understand any special code behind createpage.aspx, and created a new for our purpose – CreateSiteByHeader.aspx. From there I quickly created a similar code behind, without all the fancy of Farm Config Wizard handling and dealt with alternate implementations of sealed classes! Goal was to create a professional looking and OOB-type experience. I also added Regex validation to ensure user types a valid domain name as header value. Below is the result…&lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/sharadkumar/image_4C879E6A.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_4C879E6A.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/sharadkumar/image_thumb_419A9755.png" width=857 height=584 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_419A9755.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Release @ Codeplex&lt;/H3&gt;
&lt;P&gt;I’ve released to WSP on &lt;STRONG&gt;OfficeToolbox @ Codeplex&lt;/STRONG&gt;, and you can download &lt;A href="http://officetoolbox.codeplex.com/releases/view/42507" target=_blank mce_href="http://officetoolbox.codeplex.com/releases/view/42507"&gt;&lt;STRONG&gt;from here&lt;/STRONG&gt;.&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Update &lt;/STRONG&gt;- Latest release is now uploaded and works with RTM.&lt;/P&gt;
&lt;P&gt;Hope you find it useful…&lt;/P&gt;
&lt;P&gt;-- Sharad&lt;/P&gt;</description><pubDate>Sun, 28 Mar 2010 07:44:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/sharepoint-2010-central-admin-tooling-to-create-host-header-site-collections</guid><category>Central Administration</category><category>Codeplex</category><category>OfficeToolbox</category><category>SharePoint</category><category>SharePoint 2010</category></item><item><title>Aggregate SharePoint Event/Items into your Calendar view using Calendar Overlay</title><link>https://weblogs.asp.net:443/sharadkumar/aggregate-sharepoint-event-items-into-your-calendar-view-using-calendar-overlay</link><description>&lt;p&gt;One of the most common features I have seen in common use for SharePoint (prior to 2010) in Intranet environments for Team site is Calendar’s. Not only the Calendar list type, but also the ability to add a Calendar view to any list that has the desired columns to construct a Calendar – such as Start, End, Title etc. While this was all great for a single site/calendar, the problem of having to track numerous calendar’s remained. With introduction of Outlook 2007 bi-directional integration with SharePoint, and particularly the ability of Outlook to overlay calendar helped bridge the gap. Now one could connect to number of team sites, and setup Calendar overlays in Outlook using varying colours, to easily identify event source and yet benefit from the plotting of events on single Calendar view. This was all good, but each user in your Enterprise was supposed to setup in a “pull” fashion. This is good for flexibility, not so good when you need to “push” consistency and productivity (re-use).&lt;/p&gt;  &lt;p&gt;So, what was missing on SharePoint is the ability to have server-side overlay’s that everyone can see – in a single place, aggregating multiple sources. Until SharePoint 2010 arrived!&lt;/p&gt;  &lt;h3&gt;Calendars Overlay in SharePoint 2010&lt;/h3&gt;  &lt;p&gt;There are Calendar lists and Calendar views. View can be created for almost all lists, as far as you have desired column’s in a list like Start, End, Title etc. to be able to describe and plot an item in a Calendar format.&lt;/p&gt;  &lt;p&gt;In SharePoint 2010, create a new Calendar list. Go to Calendar ribbon tab, and click &lt;strong&gt;Calendar Overlay&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_77AD9F5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Calendar List Ribbon" border="0" alt="Calendar List Ribbon" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_00D9B4D2.png" width="802" height="137" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You get the screen with list of existing Overlay’s associated with current Calendar (list – in our case). Click on “New Calendar”…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_1CBAC3FD.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_772120CE.png" width="819" height="378" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice the breadcrumb! You are adding Overlay to existing list (Team Calendar – in our case). You have choice of “pulling” Calendar info from an existing Calendar (list/view) in SharePoint or even from Exchange!&lt;/p&gt;  &lt;p&gt;Set standard info like a name, description and decide the colour you want for the items in aggregated Calendar overlay. Select the source site/list/view, anywhere in farm.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_4CF172E6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_190930FB.png" width="818" height="626" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you select Exchange as source of Calendar, you get option to add OWA and Exchange Web Service url. I will cover details of connecting with Exchange in another post, and focus on Overlay’s with SharePoint for this one.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_410BBA4D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_4712BB4E.png" width="819" height="592" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you have added a new Calendar overlay to existing Calendar veiw, you get something like below for Day view, Week view, and Month view respectively Notice the Overlay colours:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_503ED0C2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_717E2AC4.png" width="818" height="559" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_53DC29F8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_03968020.png" width="808" height="556" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_6F6D3DC9.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_24960495.png" width="821" height="602" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Now, if you decide to connect this Calendar to Outlook to sync the items, it will only sync items from main view, and not from Overlay source. So such Overlay of calendar’s is server-side aggregation only. That increases my curiosity, so I try adding the Calendar list view as a web-part on a new page.&lt;/p&gt;  &lt;p&gt;As you see, this instance of view didn’t include item from source that we had added to default Calendar view. This is – probably – due to the fact that this is a new web-part view for the page. If you want to add overlay to this one, you have to redo that from Ribbon. This also means, subject to purpose and context you get the flexibility to decide what overlay is suited. Also you can only add 10 Overlay’s to an existing view instance.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_49A32934.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_17D7E612.png" width="809" height="603" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h3&gt;Conclusion&lt;/h3&gt;  &lt;p&gt;Calendar Overlay is clearly a very useful feature that fills a gap of not being able to aggregate information from multiple sources into a Calendar view within context of current items. Source of items can be existing SharePoint calendar views on any site, or even Exchange (via OWA/Exchange web services). List type for source doesn’t matter, it just need a Calendar view type available. You can have 10 overlays. Overlays are for the specific view only, and are server-side only – which means they do not get synced in Outlook. While you can drag-drop current list items, you cannot edit overlay items as they are read-only within scope of current Calendar view. You can of course click on source Overlay item to edit at the source. &lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_14E2815F.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_47923C39.png" width="811" height="760" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’d like to hear, how you think Overlay’s will help you in your case, or how you are already using them... &lt;/p&gt;  &lt;p&gt;Enjoy SharePoint!&lt;/p&gt;  &lt;p&gt;--Sharad&lt;/p&gt;</description><pubDate>Fri, 12 Mar 2010 09:48:58 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/aggregate-sharepoint-event-items-into-your-calendar-view-using-calendar-overlay</guid><category>SharePoint</category><category>SharePoint 2010</category><category>User Experience</category></item><item><title>How to Customize SharePoint 2007 Forms - Part 3 (Field Validations)</title><link>https://weblogs.asp.net:443/sharadkumar/how-to-customize-sharepoint-2007-forms-part-3-field-validations</link><description>&lt;p&gt;In continuation of previous series of posts, for exploring options to customize SharePoint 2007 list forms, I am further introducing ways to deal with yet another limitation reminiscent in forms with SharePoint 2007 – &lt;strong&gt;Column Data Validations&lt;/strong&gt;. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a title="How to customize SharePoint 2007 Forms – Part 1" href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx" target="_blank" mce_href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx"&gt;How to customize SharePoint 2007 Forms – Part 1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="How to customize SharePoint 2007 Forms – Part 2" href="http://weblogs.asp.net/sharadkumar/archive/2008/07/29/how-to-customize-sharepoint-forms-part-2.aspx" target="_blank" mce_href="http://weblogs.asp.net/sharadkumar/archive/2008/07/29/how-to-customize-sharepoint-forms-part-2.aspx"&gt;How to customize SharePoint 2007 Forms – Part 2&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Note! &lt;/font&gt;&lt;/strong&gt;– This post is to share conceptual details. It is NOT ready for production usage, and I will share “Alpha” bits shortly. I haven’t had time lately, and instead of delays I think a good portion of my readers can benefit from it in the meantime. I’m glad to receive all feedback and ideas in interim. &lt;/p&gt;  &lt;p&gt;I’d also like to hear what everyone thinks about SharePoint 2010 – list and column Validation settings. Perhaps I can have some inspiration to improve below, which was conceptualized long before I came across SP 2010 approach of using formulae. Anyhow, let’s get started…&lt;/p&gt;  &lt;h3&gt;Problem Case – Where are my data validations?&lt;/h3&gt;  &lt;p&gt;Now, SharePoint offers great flexibility to users for coming up with desired custom lists, with existing or custom column-types of choosing. Existing column-types while allow most common scenario’s of column (field) types, they are limited in their scope to control consistency of data – particularly so when it comes down to applying custom logic, or even even extending basic definitions of column types. &lt;/p&gt;  &lt;p&gt;Some examples of limitations, and existing options are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Need to capture e-mail of contacts, and entries should be with valid format. Use column of type ‘Single line of Text’ instead. &lt;/li&gt;    &lt;li&gt;Need to ensure that value of one column is correct, based on current items value in other column. Not possible, without writing JavaScript based hacks. &lt;/li&gt;    &lt;li&gt;Need to have Record-ID field with custom format, say XXX-DD-XXX. (X=Alphabets, D=Numeric’s). Use column of type ‘Single line of Text’ instead. &lt;/li&gt;    &lt;li&gt;… &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;List of data validation requirements goes on and on. So much that I have noticed that developer’s have at times resorted to creating custom field, simply to either encapsulate custom logic, or simple things like &lt;a title="Regex validation" href="http://spregex.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28347" target="_blank" mce_href="http://spregex.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=28347"&gt;Regex validation&lt;/a&gt;. It’s clearly evident that what we are missing is the option of being able to extend existing column types and apply custom desired validations against existing or new lists.&lt;/p&gt;  &lt;h3&gt;Solution Approach – &lt;font color="#ff0000"&gt;Early Preview!&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;A means to describe and execute the data validation against columns that we want specify. From my previous posts you’d remember how we introduced our custom Field type via usage of Rendering Template for select list types.&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;sharepoint:renderingtemplate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ListForm&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Template&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;span&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;='part1'&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:InformationBar&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;wssuc:ToolBar&lt;/span&gt; &lt;span style="color: #ff0000"&gt;CssClass&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-formtoolbar&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;toolBarTbltop&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;RightButtonSeparator&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&amp;amp;nbsp;&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;                 &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;template_rightbuttons&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:NextPageButton&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:SaveButton&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:GoBackButton&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;template_rightbuttons&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;wssuc:ToolBar&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:FormToolBar&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-formtable&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;margin-top: 8px;&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;border&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;cellpadding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;cellspacing&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;                 &lt;span style="color: #ff0000"&gt;width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;590px&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:ChangeContentType&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:FolderFormFields&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;OfficeToolbox:FormFieldIterator&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:ApprovalStatus&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:FormComponent&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TemplateName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;AttachmentRows&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt; &lt;span style="color: #ff0000"&gt;cellpadding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;cellspacing&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;100%&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-formline&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;img&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;/_layouts/images/blank.gif&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;height&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;alt&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt; &lt;span style="color: #ff0000"&gt;cellpadding&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;cellspacing&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;0&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;100%&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;padding-top: 7px&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt; &lt;span style="color: #ff0000"&gt;width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;100%&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:ItemHiddenVersion&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:ParentInformationField&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:InitContentType&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;wssuc:ToolBar&lt;/span&gt; &lt;span style="color: #ff0000"&gt;CssClass&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-formtoolbar&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;toolBarTbl&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;RightButtonSeparator&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;&amp;amp;nbsp;&amp;quot;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt;                             &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt;                             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;template_buttons&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:CreatedModifiedInfo&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum39"&gt;  39:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;template_buttons&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum40"&gt;  40:&lt;/span&gt;                             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;template_rightbuttons&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum41"&gt;  41:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:SaveButton&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum42"&gt;  42:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:GoBackButton&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum43"&gt;  43:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;template_rightbuttons&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum44"&gt;  44:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;wssuc:ToolBar&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum45"&gt;  45:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum46"&gt;  46:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum47"&gt;  47:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;table&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum48"&gt;  48:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;span&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum49"&gt;  49:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:AttachmentUpload&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum50"&gt;  50:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Template&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum51"&gt;  51:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;sharepoint:renderingtemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum52"&gt;  52:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;sharepoint:renderingtemplate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;FormFieldIterator&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum53"&gt;  53:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Template&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum54"&gt;  54:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum55"&gt;  55:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:CompositeField&lt;/span&gt; &lt;span style="color: #ff0000"&gt;TemplateName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;OfficeToolboxCompositeField&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum56"&gt;  56:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;tr&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum57"&gt;  57:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Template&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum58"&gt;  58:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;sharepoint:renderingtemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum59"&gt;  59:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;sharepoint:renderingtemplate&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;OfficeToolboxCompositeField&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum60"&gt;  60:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Template&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum61"&gt;  61:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt; &lt;span style="color: #ff0000"&gt;nowrap&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;valign&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;top&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;190px&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-formlabel&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum62"&gt;  62:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;span&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum63"&gt;  63:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-standardheader&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum64"&gt;  64:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:FieldLabel&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum65"&gt;  65:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;h3&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum66"&gt;  66:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;span&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum67"&gt;  67:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum68"&gt;  68:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt; &lt;span style="color: #ff0000"&gt;valign&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;top&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;class&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ms-formbody&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;width&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;400px&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum69"&gt;  69:&lt;/span&gt;             &lt;strong&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;OfficeToolbox:FormField&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum70"&gt;  70:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:FieldDescription&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum71"&gt;  71:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;SharePoint:AppendOnlyHistory&lt;/span&gt; &lt;span style="color: #ff0000"&gt;runat&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum72"&gt;  72:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;td&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum73"&gt;  73:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Template&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum74"&gt;  74:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;sharepoint:renderingtemplate&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;So extending the base Field type, &lt;font face="Courier New"&gt;&lt;strong&gt;Microsoft.SharePoint.WebControls.FormField&lt;/strong&gt;&lt;/font&gt;, with our FormField type as follows (just an example code…)&lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt; OfficeToolbox.SPForms {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// FormField control&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;     &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; FormField : Microsoft.SharePoint.WebControls.FormField {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; OnInit(EventArgs e) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.OnInit(e);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;             &lt;span style="color: #008000"&gt;// Set Field as Read-only, per Configuration&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;             ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; FormSettings Settings { get; &lt;span style="color: #0000ff"&gt;private&lt;/span&gt; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; CreateChildControls() {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.CreateChildControls();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;              &lt;span style="color: #008000"&gt;//Set Field's default value, per QueryString, only for New items&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;switch&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.FieldName)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum20"&gt;  20:&lt;/span&gt;             {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum21"&gt;  21:&lt;/span&gt;                 ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum22"&gt;  22:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;default&lt;/span&gt;:&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum23"&gt;  23:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ControlMode == SPControlMode.New &amp;amp;&amp;amp; !&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Page.IsPostBack &amp;amp;&amp;amp; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Page.Request.QueryString[&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Field.Title] != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum24"&gt;  24:&lt;/span&gt;                     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum25"&gt;  25:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum26"&gt;  26:&lt;/span&gt;                         {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum27"&gt;  27:&lt;/span&gt;                             &lt;span style="color: #0000ff"&gt;switch&lt;/span&gt; (((Microsoft.SharePoint.WebControls.FormField)(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;)).Controls[0].GetType().Name)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum28"&gt;  28:&lt;/span&gt;                             {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum29"&gt;  29:&lt;/span&gt;                                 ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum30"&gt;  30:&lt;/span&gt;                                 &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;SPBoundField&amp;quot;&lt;/span&gt;:&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum31"&gt;  31:&lt;/span&gt;                                     &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Value = &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Page.Request.QueryString[&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Field.Title].ToString();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum32"&gt;  32:&lt;/span&gt;                                     &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum33"&gt;  33:&lt;/span&gt;                                 ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum34"&gt;  34:&lt;/span&gt;                             }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum35"&gt;  35:&lt;/span&gt;                         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum36"&gt;  36:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; { }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum37"&gt;  37:&lt;/span&gt;                     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum38"&gt;  38:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum39"&gt;  39:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum40"&gt;  40:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum41"&gt;  41:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum42"&gt;  42:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RegisterFieldControl() {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum43"&gt;  43:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.ItemContext.FormContext.FieldControlCollection.Add(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum44"&gt;  44:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Page.Validators.Add(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum45"&gt;  45:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum46"&gt;  46:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum47"&gt;  47:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Render(System.Web.UI.HtmlTextWriter output) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum48"&gt;  48:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.ControlMode != SPControlMode.Display) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum49"&gt;  49:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.RenderFieldForInput(output);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum50"&gt;  50:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum51"&gt;  51:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum52"&gt;  52:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.RenderFieldForDisplay(output);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum53"&gt;  53:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum54"&gt;  54:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum55"&gt;  55:&lt;/span&gt;         &lt;span style="color: #008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum56"&gt;  56:&lt;/span&gt;         &lt;span style="color: #008000"&gt;/// Custom validation!&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum57"&gt;  57:&lt;/span&gt;         &lt;span style="color: #008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum58"&gt;  58:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;override&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Validate() {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum59"&gt;  59:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (((&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.ControlMode != SPControlMode.Display) &amp;amp;&amp;amp; &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.IsValid) &amp;amp;&amp;amp; &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Visible) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum60"&gt;  60:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.Validate();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum61"&gt;  61:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.ControlMode != SPControlMode.Display) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum62"&gt;  62:&lt;/span&gt;                     FormSettings.Column c = Settings.FindColumnByName(&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.FieldName);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum63"&gt;  63:&lt;/span&gt;                     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (c.Validators != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum64"&gt;  64:&lt;/span&gt;                         &lt;span style="color: #0000ff"&gt;switch&lt;/span&gt; (c.Validators.LogicalOp) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum65"&gt;  65:&lt;/span&gt;                             &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; FormSettings.Validator.LogicalOperators.And: {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum66"&gt;  66:&lt;/span&gt;                                     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Validate(c.Validators.Validations[0]) &amp;amp;&amp;amp; Validate(c.Validators.Validations[1]))&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum67"&gt;  67:&lt;/span&gt;                                         &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.IsValid = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum68"&gt;  68:&lt;/span&gt;                                     &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum69"&gt;  69:&lt;/span&gt;                                         &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.ErrorMessage = c.Validators.Message;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum70"&gt;  70:&lt;/span&gt;                                         &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.IsValid = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum71"&gt;  71:&lt;/span&gt;                                     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum72"&gt;  72:&lt;/span&gt;                                 }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum73"&gt;  73:&lt;/span&gt;                                 &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum74"&gt;  74:&lt;/span&gt;                             &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; FormSettings.Validator.LogicalOperators.Or: {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum75"&gt;  75:&lt;/span&gt;                                     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Validate(c.Validators.Validations[0]) || Validate(c.Validators.Validations[1]))&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum76"&gt;  76:&lt;/span&gt;                                         &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.IsValid = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum77"&gt;  77:&lt;/span&gt;                                     &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum78"&gt;  78:&lt;/span&gt;                                         &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.ErrorMessage = c.Validators.Message;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum79"&gt;  79:&lt;/span&gt;                                         &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.IsValid = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum80"&gt;  80:&lt;/span&gt;                                     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum81"&gt;  81:&lt;/span&gt;                                 }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum82"&gt;  82:&lt;/span&gt;                                 &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum83"&gt;  83:&lt;/span&gt;                             &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; FormSettings.Validator.LogicalOperators.None: {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum84"&gt;  84:&lt;/span&gt;                                     &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (Validate(c.Validators.Validations[0]))&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum85"&gt;  85:&lt;/span&gt;                                         &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.IsValid = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum86"&gt;  86:&lt;/span&gt;                                     &lt;span style="color: #0000ff"&gt;else&lt;/span&gt; {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum87"&gt;  87:&lt;/span&gt;                                         &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.ErrorMessage = c.Validators.Message;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum88"&gt;  88:&lt;/span&gt;                                         &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.IsValid = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum89"&gt;  89:&lt;/span&gt;                                     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum90"&gt;  90:&lt;/span&gt;                                 }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum91"&gt;  91:&lt;/span&gt;                                 &lt;span style="color: #0000ff"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum92"&gt;  92:&lt;/span&gt;                         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum93"&gt;  93:&lt;/span&gt;                 }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum94"&gt;  94:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum95"&gt;  95:&lt;/span&gt;         }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum96"&gt;  96:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum97"&gt;  97:&lt;/span&gt;         ...&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum98"&gt;  98:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum99"&gt;  99:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;So above would give you an idea how you can intercept a Field’s lifecycle to do your server side validations that I also utilize for my project. Using root-folder of list as property bag for the settings such as validations you want for each column type, as a serialized xml string. Reading those settings and applying validations at runtime comes to our rescue.&lt;/p&gt;

&lt;p&gt;Following are the settings available. Note you can set data validation for any (OOTB) column in the list, &lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sharadkumar/image_38D3EB0F.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_38D3EB0F.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sharadkumar/image_thumb_7B06B7B8.png" width="933" height="1621" mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_7B06B7B8.png" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Data comparison operators that I’m aiming for, to enable initially are:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sharadkumar/image_33DDBF2E.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_33DDBF2E.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sharadkumar/image_thumb_2E5F28BD.png" width="252" height="257" mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_2E5F28BD.png" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;You can engage up to 2 columns for your validation logic settings. Not just independently, but can set interdependency based on others value. Notice how I refer adjacent column, [Start Date], and compare against value of current column – Due Date – with an AND operator to Start Date validation against [Today].&lt;/p&gt;

&lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/sharadkumar/image_56CDE504.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_56CDE504.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://weblogs.asp.net/blogs/sharadkumar/image_thumb_70FE285B.png" width="362" height="261" mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_70FE285B.png" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;div id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetValue(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; fieldValue) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     &lt;span style="color: #0000ff"&gt;switch&lt;/span&gt;(fieldValue.Trim()){&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;[Today]&amp;quot;&lt;/span&gt;:&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; DateTime.Now.ToString();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;case&lt;/span&gt; &lt;span style="color: #006080"&gt;&amp;quot;[Me]&amp;quot;&lt;/span&gt;:&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; DateTime.Now.ToString();&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         &lt;span style="color: #0000ff"&gt;default&lt;/span&gt;:&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.Fields.ContainsField(fieldValue.TrimStart(&lt;span style="color: #006080"&gt;'['&lt;/span&gt;).TrimEnd(&lt;span style="color: #006080"&gt;']'&lt;/span&gt;))) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; Microsoft.SharePoint.Utilities.SPEncode.HtmlEncode(Field.GetFieldValueForEdit(ListItem[fieldValue.TrimStart(&lt;span style="color: #006080"&gt;'['&lt;/span&gt;).TrimEnd(&lt;span style="color: #006080"&gt;']'&lt;/span&gt;)]));&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; fieldValue;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Codeplex Project – &lt;a title="Office Toolbox" href="http://www.codeplex.com/OfficeToolbox" target="_blank" mce_href="http://www.codeplex.com/OfficeToolbox"&gt;Office Toolbox&lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;I will be sharing the updated implementation as early Alpha with you, since there is still much to implement/cleanup to make validations seamlessly work with all/most out-of-the-box column types. I have a basic framework working at the moment, and above is an early preview.&lt;/p&gt;

&lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;

&lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Hope you find applicability of extended data validations useful. For some users above may seem a bit late in the game, given all the excitement around SP 2010 and included validation settings. But I’d like to hear feedback on above as well as what you think can still be improved with SP 2010 approach!&lt;/p&gt;

&lt;p&gt;Keep the feedback coming, and updated post with working previews of validations is coming soon…&lt;/p&gt;

&lt;p&gt;--Sharad&lt;/p&gt;</description><pubDate>Tue, 03 Nov 2009 22:30:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/how-to-customize-sharepoint-2007-forms-part-3-field-validations</guid><category>Forms</category><category>SharePoint</category></item><item><title>Celebrating Windows 7 launch with a ‘Windows 7’ theme for SharePoint 2007!</title><link>https://weblogs.asp.net:443/sharadkumar/celebrating-windows-7-launch-with-a-windows-7-theme-for-sharepoint-2007</link><description>&lt;iframe height="334" src="http://www.microsoft.com/presspass/silverlightApps/videoplayer2/standalone.aspx?contentId=Launch_Keynote&amp;amp;src=/presspass/presskits/windows7/channel.xml&amp;amp;WT.cg_n=Win7&amp;amp;WT.z_convert=embed" frameborder="0" width="400" scrolling="no"&gt;&lt;/iframe&gt;  &lt;p&gt;With the launch of fabulous Windows 7 (yeah – I am loving it!), I think, we all deserve little fun and celebration of a great OS! I couldn’t organize a party (!), so I got interested in creating a site theme for SharePoint 2007 (or Windows SharePoint Services 3.0) instead; inspired with Windows Live and &lt;a href="http://www.microsoft.com/windows/windows-7/what-is-windows-7.aspx" target="_blank"&gt;Windows 7 site&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So I quickly (and roughly!) created a Windows 7 theme for SharePoint 2007 sites... (which you can download for free from the link at the end of the post)&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_554A9CEC.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_04D895AC.png" width="962" height="571" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Various screens to preview the theme…&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Site Settings…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_65F1FC00.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_79DB68C9.png" width="962" height="645" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Calendar View &lt;/strong&gt;This is the most painful aspect of working on a site theme in SharePoint. Way too many CSS classes to play with!&lt;/p&gt;  &lt;p&gt;Month view…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_3B45F556.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_75FD785F.png" width="962" height="845" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Day view…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_2995BEF1.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_736420D4.png" width="962" height="972" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Forms and Toolbar…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_40646AA0.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_023B2A22.png" width="962" height="539" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Gantt view…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_085250F0.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_0A5F29EC.png" width="962" height="645" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Set theme on a SharePoint site&lt;/h3&gt;  &lt;p&gt;Just go to Site Settings &amp;gt; Site theme and select Windows 7 theme…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_138B3F60.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_67AAC5A3.png" width="962" height="691" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Themes in SP, or Cascading Style Sheets, offer great options to override various aspects of look-and-feel, including layouts to some extent. Of course a SP theme approach to branding is everything but html markup changes, yet it has few manageability benefits over Publishing, like centralized deployment. For example, I manipulated with site logo overriding the one from SP site, and also positioning and sizes over various elements like header banner.&lt;/p&gt;  &lt;h3&gt;Steps to deploy site theme in your SharePoint farm&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;Download the Windows 7 theme package &lt;a href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sharepointtoolbox&amp;amp;ReleaseId=3425" target="_blank"&gt;from here&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;Copy the contents of the folder Win7 from released package to &lt;em&gt;Local_Drive&lt;/em&gt;&lt;code&gt;:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\THEMES.&lt;/code&gt; Do that for all servers in your farm. &lt;/li&gt;    &lt;li&gt;Copy theme preview file, thWin7.GIF, to &lt;em&gt;Local_Drive:&lt;/em&gt;&lt;code&gt;\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\IMAGES&lt;/code&gt; directory. Do that for all servers in your farm. &lt;/li&gt;    &lt;li&gt;Add a theme template definition to SPTHEMES.XML, which is the file that determines which themes are available as options on the &lt;strong&gt;Site Theme&lt;/strong&gt; page. This XML file is located in the &lt;em&gt;Local_Drive&lt;/em&gt;&lt;code&gt;:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\1033 directory&lt;/code&gt;. Do that for all servers in your farm.       &lt;br /&gt;      &lt;pre style="border-bottom: #cecece 1px solid; border-left: #cecece 1px solid; padding-bottom: 5px; background-color: #fbfbfb; min-height: 40px; padding-left: 5px; padding-right: 5px; overflow: auto; border-top: #cecece 1px solid; border-right: #cecece 1px solid; padding-top: 5px"&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Templates&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;TemplateID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Win7&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;TemplateID&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;DisplayName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Windows 7&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;DisplayName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Description&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Windows 7 has a white background with Windows 7 style look and feel.&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Description&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Thumbnail&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;images/thWin7.gif&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Thumbnail&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #ffffff; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;  &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;Preview&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;images/thWin7.gif&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Preview&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt; 
&lt;/pre&gt;&lt;pre style="background-color: #fbfbfb; margin: 0em; width: 100%; font-family: consolas,&amp;#39;Courier New&amp;#39;,courier,monospace; font-size: 12px"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;Templates&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
  &lt;/li&gt;

  &lt;li&gt;Do IIS reset on all front-end web servers in SharePoint farm. &lt;/li&gt;

  &lt;li&gt;Select the new Windows 7 theme for the desired site, from site settings &amp;gt; site theme. &lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;As always feedback is welcome, and I hope you find it useful. &lt;/p&gt;

&lt;p&gt;Please note that I won’t be working on it anymore, and while it may not be perfect, please feel free to modify CSS and other files to realize desired changes and enhancements you may want. It was just a fun project to celebrate Windows 7 and also learn something more about theming in SharePoint. And I did!&lt;/p&gt;

&lt;p&gt;Enjoy Windows 7.&lt;/p&gt;

&lt;p&gt;--Sharad&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Download Windows 7 theme&lt;/strong&gt;: &lt;a title="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sharepointtoolbox&amp;amp;ReleaseId=3425" href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sharepointtoolbox&amp;amp;ReleaseId=3425"&gt;https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sharepointtoolbox&amp;amp;ReleaseId=3425&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 26 Oct 2009 03:30:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/celebrating-windows-7-launch-with-a-windows-7-theme-for-sharepoint-2007</guid><category>SharePoint</category></item><item><title>SharePoint 2010 – Setting Up Development Machine on Windows 7</title><link>https://weblogs.asp.net:443/sharadkumar/sharepoint-2010-setting-up-development-machine-on-windows-7</link><description>&lt;P&gt;You probably already know that SharePoint 2010 supports installing on 64-bit Windows 7 and Vista, for developers. I’ll give you a quick walkthrough of how I’m setting up my development machine, in continuation of my new found love for &lt;A href="http://weblogs.asp.net/sharadkumar/archive/2009/09/02/vhd-lifestyle-my-sharepoint-2007-2010-development-and-home-media-network-setup.aspx" target=_blank mce_href="http://weblogs.asp.net/sharadkumar/archive/2009/09/02/vhd-lifestyle-my-sharepoint-2007-2010-development-and-home-media-network-setup.aspx"&gt;native-boot with VHDs&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My objectives&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I want flexible approach so that I can work with future builds of SP 2010, and not needing to build whole environment each time.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Use Windows 7 x64 developer desktop for SharePoint 2010 and Visual Studio 2010 Beta.&lt;/LI&gt;
&lt;LI&gt;Be able to quickly start afresh from base machine/image, on demand. (thinking VHDs already!)&lt;/LI&gt;
&lt;LI&gt;Utilize &lt;A href="http://weblogs.asp.net/sharadkumar/archive/2009/09/02/vhd-lifestyle-my-sharepoint-2007-2010-development-and-home-media-network-setup.aspx" target=_blank mce_href="http://weblogs.asp.net/sharadkumar/archive/2009/09/02/vhd-lifestyle-my-sharepoint-2007-2010-development-and-home-media-network-setup.aspx"&gt;my desktop hardware&lt;/A&gt;: AMD Quad-core CPU, 4 GB DDR2 800, 2 SATA-II drives (500 GB each, RAID 1), with 24” screens.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Create VHD for native boot&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;You can either have base installation of Windows 7 and then dual-boot using VHD, or entirely boot from VHDs. I chose second option, and already have my default VHD running Windows 7 with Office 2007. When I initially prepared my first VHD using Windows AIK, I had backed it up to create new VHDs on demand. I will use this VHD to start afresh with a new VHD.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create a VHD and have it on physical partition, say D:\Virtuals\Windows7.SP2010Foundation.vhd (It is a sysprepped VHD of Windows 7)&lt;/LI&gt;
&lt;LI&gt;Make BCD store entry for new VHD. &lt;A href="http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx" mce_href="http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx"&gt;Sample instructions here&lt;/A&gt; from Sir Hanselman.&lt;/LI&gt;
&lt;LI&gt;Also install &lt;A href="http://neosmart.net/dl.php?id=11" mce_href="http://neosmart.net/dl.php?id=11"&gt;iReboot&lt;/A&gt; on this machine (and on new VHD later), so that we can quickly switch directly between VHDs from Taskbar. Not so painful for me, given fast booting of Windows 7 now. &lt;BR&gt;&amp;nbsp;&lt;A href="http://weblogs.asp.net/blogs/sharadkumar/image_7729B064.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_7729B064.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/sharadkumar/image_thumb_26981F31.png" width=240 height=136 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_26981F31.png"&gt;&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;Optionally, I map all my personal folders like My Docs, My Music to D:\Users\[Username] using folder properties &amp;gt; location. I do that for each VHD in my environment. I have only one partition, and hence C: is my VHD and D: is the system partition. This allows to use my files/projects across VHDs.&lt;/LI&gt;
&lt;LI&gt;Reboot the machine to new VHD/OS (“SharePoint Foundation 2010”).&lt;/LI&gt;
&lt;LI&gt;Use, soon to be available, SP 2010 Foundation media. Extract it to your drive, make config change to support Client-OS install. Install &lt;A href="http://technet.microsoft.com/hi-in/library/cc288751(en-us,office.14).aspx" target=_blank mce_href="http://technet.microsoft.com/hi-in/library/cc288751(en-us,office.14).aspx"&gt;pre-requisites&lt;/A&gt;, manually. (more on it later…!) &lt;BR&gt;&lt;A href="http://weblogs.asp.net/blogs/sharadkumar/Capture2_7CD4A43D.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/Capture2_7CD4A43D.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="" border=0 alt="" src="http://weblogs.asp.net/blogs/sharadkumar/Capture2_thumb_371FF452.png" width=618 height=502 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/Capture2_thumb_371FF452.png"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Reboot the system into SP 2010 Foundation VHD.&lt;/LI&gt;
&lt;LI&gt;Having extracted the media, and with pre-requisites installed, run the setup to install SP 2010 on desktop. Select standalone installation.&lt;/LI&gt;
&lt;LI&gt;Once installed, it will run Config Wizard – just like in 2007. This will create all databases, configuration and applications for you.&lt;/LI&gt;
&lt;LI&gt;Now download and install Visual Studio 2010 Beta 2. &lt;BR&gt;&lt;A href="http://weblogs.asp.net/blogs/sharadkumar/Capture_1FC4CA14.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/Capture_1FC4CA14.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="VS 2010 Beta 2" border=0 alt="VS 2010 Beta 2" src="http://weblogs.asp.net/blogs/sharadkumar/Capture_thumb_2020D73C.png" width=758 height=579 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/Capture_thumb_2020D73C.png"&gt;&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;Also you would want to install SharePoint Designer 2010, Office 2010, Visio 2010, and Project 2010… based on your needs and availability.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Using native-boot VHD approach gives greater flexibility without any compromise of resources. Using iReboot, you can anyways switch quickly and boot into desired VHD. And don’t forget to enable &lt;A href="http://www.spfoxhole.com/Blog/Lists/Posts/Post.aspx?ID=131" target=_blank mce_href="http://www.spfoxhole.com/Blog/Lists/Posts/Post.aspx?ID=131"&gt;new Developer Dashboard&lt;/A&gt;.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope Microsoft (SharePoint Team) would make trial VHDs available with above/similar configuration for developers to jump-start on SP 2010 Beta in November.&lt;/P&gt;
&lt;P&gt;Enjoy.&lt;/P&gt;
&lt;P&gt;--Sharad&lt;/P&gt;</description><pubDate>Wed, 21 Oct 2009 02:30:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/sharepoint-2010-setting-up-development-machine-on-windows-7</guid><category>SharePoint</category><category>SharePoint 2010</category></item><item><title>VHD Lifestyle – My SharePoint 2007/2010 Development and Home/Media-Network Setup!</title><link>https://weblogs.asp.net:443/sharadkumar/vhd-lifestyle-my-sharepoint-2007-2010-development-and-home-media-network-setup</link><description>&lt;P&gt;First - Many thanks to Windows 7 (and 2008 R2), there has been some very useful enhancements in my “Digital Lifestyle” recently!&lt;/P&gt;
&lt;P&gt;Windows Vista didn’t fly with me so well as development machine, and I’d always go back to Windows 2003… mostly for SharePoint development setup on my working desktops.&lt;/P&gt;
&lt;P&gt;Once Windows 7 was RTM, I was quick to jump off RC (no stability reason really). That also gave me a reason to re-look at my existing setup, which wasn’t working comfortably well for me. So without much ado, let’s see what all I have in my setup and what I did to improve, and what is perhaps missing that you can suggest I can do to further improve...&lt;/P&gt;
&lt;H3&gt;What do I have and wanted to improve – and did?&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Desktop&lt;/STRONG&gt;: AMD Quad CPU, 4 GB DDR2 800, 2 SATA-II drives (500 GB each, RAID 1), with a 24” screens.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Server&lt;/STRONG&gt;: AMD Dual CPU 64X2, 8 GB DDR2 800, 4 SATA-II drives (2X500GB RAID 1, 2X2TB &lt;STRIKE&gt;RAID 1&lt;/STRIKE&gt; as WHS "duplicated" storage)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Laptop&lt;/STRONG&gt;: A Lenovo T-61 laptop with 2 GB RAM!!! Wi-fi connected.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;GBit Linksys Router&lt;/STRONG&gt;, with &lt;STRONG&gt;Xbox 360 &lt;/STRONG&gt;Elite and Epson photo &lt;STRONG&gt;printer &lt;/STRONG&gt;on it’s network.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;With this primary hardware, I wanted to maximize productivity with ease and flexibility of supporting demanding SharePoint environment needs. So I did following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;Server&lt;/STRONG&gt;: Setup my server as Hyper-V (on R2) and instead move my Windows Home Server (WHS) as Virtual. I also host nifty website or two (on demand) from Home (using DynDns) on a 2mbps line! (that’s almost the best in India at the minute, with unlimited bandwidth use) So I also setup a Web Server as virtual. Shared 8 GB amongst the three, with sufficient 2 GB for WHS.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Desktop&lt;/STRONG&gt;: I’ve either utilized hack from Bamboo solutions for setting up SharePoint on Vista, or had depended on VPC for Win 2003 SharePoint VMs in past. So I now setup Windows 7 Ultimate on desktop as prime. I also have 4 VHDs created to desired setup, and attached to boot from using BCDEdit. So when I now want to work on SharePoint exclusively, I simply re-boot quickly. (I don’t mind anymore, since its so fast!)&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;VHD Lifestyle&lt;/STRONG&gt; – I was super excited to try new support of VHDs for booting from. There has lot already been said about VHD benefits, and I referred following to get me Native Boot on Server (for Hyper-V) and multiple-boots on desktop (as in diagram). This gave me flexible and on-demand environments that I can kill and build in minutes, not hours. And I’m truly loving the flexibility.&lt;/LI&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;A href="http://blogs.technet.com/virtualization/archive/2009/05/14/native-vhd-support-in-windows-7.aspx" target=_blank mce_href="http://blogs.technet.com/virtualization/archive/2009/05/14/native-vhd-support-in-windows-7.aspx"&gt;Native VHD Support in Windows 7&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.technet.com/michw/attachment/3270048.ashx" target=_blank mce_href="http://blogs.technet.com/michw/attachment/3270048.ashx"&gt;Native Boot&lt;/A&gt; Scenarios: Advanced deployment – page 29 onwards&lt;/LI&gt;
&lt;LI&gt;Scott Hanselman talks about his lifestyle. &lt;A href="http://www.hanselman.com/blog/StepByStepTurningAWindows7DVDOrISOIntoABootableVHDVirtualMachine.aspx" target=_blank mce_href="http://www.hanselman.com/blog/StepByStepTurningAWindows7DVDOrISOIntoABootableVHDVirtualMachine.aspx"&gt;Here&lt;/A&gt; and &lt;A href="http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx" target=_blank mce_href="http://www.hanselman.com/blog/LessVirtualMoreMachineWindows7AndTheMagicOfBootToVHD.aspx"&gt;here&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://code.msdn.microsoft.com/wim2vhd" target=_blank mce_href="http://code.msdn.microsoft.com/wim2vhd"&gt;Wim2VHD&lt;/A&gt; – Convert Wim to sysprepped VHD.&lt;/LI&gt;&lt;/OL&gt;
&lt;LI&gt;Utilized Media Center on desktop and Extender on Xbox, with all Media content centralized and managed by WHS on 2 TB (RAID and duplicated, with self-managed full backup of all my VHDs and drives!!!). Virtual WHS maps physical TB drives.&lt;/LI&gt;
&lt;LI&gt;Laptop, Desktop are Windows 7, Home Server is Windows Home Server, and all others are Windows 2008 R2 (VHD boots or virtual machines).&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/sharadkumar/image_6DB5DE9B.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_6DB5DE9B.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/sharadkumar/image_thumb_2DBC4856.png" width=971 height=520 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_2DBC4856.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Planned configuration… (* SP 2010 on Win 7 assumes that hack from Bamboo will be available at the time of public beta, to install on Win 7)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://weblogs.asp.net/blogs/sharadkumar/image_2577FCF2.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_2577FCF2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://weblogs.asp.net/blogs/sharadkumar/image_thumb_0599736A.png" width=1024 height=399 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_0599736A.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;There is so much of goodness, and also feature completeness I now find with combination of Windows 7, 2008 R2, WHS, and updated Xbox Media networking features (with Win 7)… that Digital Lifestyle and desired dev productivity at home is certainly coming full circle! My content is now much more accessible (thanks to HomeGroup and WHS), and with a comfort that it all is being backed up. I’m still missing SSD on my laptop (or perhaps desktop as well), but RAID 1 is keeping me quite happy and works well for SharePoint.&lt;/P&gt;
&lt;P&gt;What am I critically missing?&lt;/P&gt;
&lt;P&gt;--Sharad&lt;/P&gt;</description><pubDate>Wed, 02 Sep 2009 20:15:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/vhd-lifestyle-my-sharepoint-2007-2010-development-and-home-media-network-setup</guid><category>Office 2010</category><category>SharePoint</category><category>Software Development</category><category>Windows</category><category>Xbox</category></item><item><title>SharePoint 2010 – Tech Preview – Developer Documentation</title><link>https://weblogs.asp.net:443/sharadkumar/sharepoint-2010-tech-preview-developer-documentation</link><description>&lt;p&gt;Tech Preview (TP) of SharePoint and Office is out and more details are becoming public though TP is private… browse the documentation that’s now public under &lt;a href="http://msdn.microsoft.com/en-us/library/cc216514(PROT.10).aspx" target="_blank"&gt;Open Specification initiative&lt;/a&gt; by Microsoft.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=e7a23d42-0835-440f-9400-badfe9672b21" target="_blank"&gt;Microsoft Office Protocol Documentation&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=33071438-110D-4845-9430-92775EACBEE7&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Office File Formats Documentation&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=5E94AD07-902C-422F-AADD-FF2BBA9E540A&amp;amp;displaylang=en" target="_blank"&gt;Microsoft SharePoint Products and Technologies Protocol Documentation&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/info.aspx?na=47&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=5e94ad07-902c-422f-aadd-ff2bba9e540a&amp;amp;u=details.aspx%3ffamilyid%3d94AFE886-3B20-4BC9-9A0D-ACD8CD232C24%26displaylang%3den"&gt;SharePoint Products and Technologies: 2010 (Technical Preview) Developer Documentation&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/openspecifications/default.aspx" target="_blank"&gt;Open Specifications Developer Center&lt;/a&gt; for links to above documentation on MSDN. Also links to various forums available on same topics.&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/protocols/" target="_blank"&gt;Microsoft Open Protocols site&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;There is plethora of information for those interested in discovering SP 2010 / Office 2010. Though Office team has confirmed that users can publicly blog about the content, its not explicitly confirmed that users can talk talk/blog about SP 2010 content, now that above documentation is out!&lt;/p&gt;  &lt;p&gt;Enjoy…&lt;/p&gt;  &lt;p&gt;--Sharad&lt;/p&gt;</description><pubDate>Tue, 21 Jul 2009 19:13:35 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/sharepoint-2010-tech-preview-developer-documentation</guid><category>Office 2010</category><category>SharePoint 2010</category></item><item><title>SharePoint 2010 – Sneak Peek!</title><link>https://weblogs.asp.net:443/sharadkumar/sharepoint-2010-sneak-peek</link><description>&lt;P&gt;Cat is finally peeking out of the hat!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/default.aspx" target=_blank mce_href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/default.aspx"&gt;SharePoint 2010 “sneak peek” is finally available&lt;/A&gt; publicly. Just finished watching the videos. Tom Rizzo gives a nice sneak peek overview:&lt;/P&gt;
&lt;H3&gt;Overview&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;U&gt;Ribbons&lt;/U&gt; in browser with SharePoint. They are contextual, and can be changed. In-browser Editing everywhere, and heavy use of Wiki backbone is evident on UI/web-part pages! Silverlight web-part is now available, just link to Silverlight source.&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;Rich theming support&lt;/U&gt;. Inherit themes from Office docs. Quickly change the look-and-feel of your site based on Office theme. Multiple browser support, including mobile experience!&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;Visio Services&lt;/U&gt;: Introduction of Visio Services. Great browser experience for Visio docs, including dynamic updates for docs connected to external data.&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;SharePoint Designer&lt;/U&gt;: Better UI, greater functionality! Enhancements to workflows, modelling and content-type management. Also now you can work with LoB Entities right in the client.&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;Business Connectivity Services&lt;/U&gt;: (“evolution” of Business Data Catalog) Connect LoB apps, services and data to your UI and PS solutions. Great use case shown where you quickly build UI, for your data.&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;Rich Media &lt;/U&gt;is seemingly everywhere with Silverlight, great Office client support, and for example quick video editing in PowerPoint. Much more to come on this one…&lt;/LI&gt;&lt;/OL&gt;
&lt;H3&gt;IT Professionals&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;Central Administration: Cleaner UI, with Ribbon-based commands. Health Monitoring is now integrated experience. Don’t forget SP is now first class citizen of PowerShell!&lt;/LI&gt;
&lt;LI&gt;Best Practices Analyzer: Periodic analysis with integrated Best Practices Analyzer! Various rules available out of the box, but is extensible and new ones can be built. Issues identified can either be acted upon in UI, or can be self fixed by analyzer. &lt;/LI&gt;
&lt;LI&gt;Usage Reporting and Logging: Now there is a new Logging database (thank you) to log usage and health data. They promise that it will be fully documented for you to build your custom reports. Nice. You’ll have better object model to allow for custom logging in same database! I’m liking this…&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;List Throttling&lt;/U&gt;: This one is great for large customers. Encourage best practices with messaging about large lists and thresholds, as they cap. I notice that cap on items in View is now ~5000, on a list that can potentially be having millions of items!!!&lt;/LI&gt;
&lt;LI&gt;Unattached content database recovery by temporarily mounting it to farm, and browsing the content. Forget your recovery farm. &lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;Visual Upgrade&lt;/U&gt;: Upgrade your farm/sites, yet retain look of SP 2007. At choice upgrade the site visually, and hence enabling (unlocking) remaining UI-dependent features with SP 2010 look. You can also do that temporarily. Well, for some farms, this is certainly a useful feature – especially when IT is ahead of the curve and users have adoption or business dependencies. I wonder how this will work with custom themes people have in SP 2007. Nevertheless, I like it much.&lt;/LI&gt;&lt;/OL&gt;
&lt;H3&gt;Developers&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;U&gt;Visual Studio 2010 with SharePoint&lt;/U&gt;. First class development experience is promised. I’ll be conservative on this one, until I get to play with! I like the approach with Visual Web-Part designer surface.&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;LINQ to SharePoint&lt;/U&gt;. Strongly typed access to your data in SP is a great welcome with all its goodness. &lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;Developer Dashboard on SP&lt;/U&gt;: A small icon link to enable the dashboard, like in-page tracing with ASP.NET but with greater detail about behind-the-scene queries and objects, DB calls etc. You can even the actual SQL query or sProc call. Nice – I see ton of time being saved, and greater developer understanding building about the platform. Excellent transparency for all.&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;Business Connectivity Services&lt;/U&gt;: Read/Write access is finally here. Virtually the same experience as for inherent Lists, as “External Lists” become integrated in UI and experience. Both SP 2010 and Office is promised to consume external data in rich ways, including support in SP Designer and Visual Studio. (Not to forget LINQ for external data!)&lt;/LI&gt;
&lt;LI&gt;&lt;U&gt;Client-side Object Model&lt;/U&gt;: Not this is great, my imagination is running wild! Runs on users machine, client OM can be SP data on client-side via JavaScript, .NET, or through Silverlight! Loving it now!!!&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;SharePoint Team has &lt;A href="http://blogs.msdn.com/sharepoint/archive/2009/07/13/announcing-sharepoint-2010-technical-preview.aspx" target=_blank mce_href="http://blogs.msdn.com/sharepoint/archive/2009/07/13/announcing-sharepoint-2010-technical-preview.aspx"&gt;confirmed launch of limited access Tech Preview&lt;/A&gt;, and also a public Beta is confirmed for later in the year. If you can make it, SharePoint Conference 2009 is the best place to be to learn all about SharePoint 2010. I hope SharePoint team is reading and let all die-hard evaluators have more than a sneak peek with Tech Preview! ;-)&lt;/P&gt;
&lt;P&gt;Great Work, and its just scratching of the surface. Enjoy… more to come.&lt;/P&gt;
&lt;P&gt;--Sharad&lt;/P&gt;</description><pubDate>Mon, 13 Jul 2009 17:53:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/sharepoint-2010-sneak-peek</guid><category>SharePoint</category><category>SharePoint 2010</category></item><item><title>SharePoint 2007 – 12 Hive System-File Changes: One Feature to rule them all!</title><link>https://weblogs.asp.net:443/sharadkumar/sharepoint-2007-12-hive-system-file-changes-one-feature-to-rule-them-all</link><description>&lt;p&gt;Making system-file changes in “12 hive” folder of SharePoint is always a hot topic. Microsoft doesn’t recommend that unless you know what you are doing, and also has support clause against it. Despite that, there are numerous KBs at their support site which point to directions of making necessary changes by following steps that leads us to opening a file in “12 hive” and modifying to achieve the desired effect. I think – without much ado – that its important to assess what you intend to do, and when you certainly need to then there should be a manageable way to make changes to system-files that are otherwise part of SharePoint release. In my &lt;a title="SharePoint 2007 – How to enable left navigation, quick launch, for all web-part pages in a farm?" href="http://weblogs.asp.net/sharadkumar/archive/2009/06/19/sharepoint-2007-how-to-enable-left-navigation-quick-launch-for-all-web-part-pages-in-a-farm.aspx" target="_blank"&gt;previous post&lt;/a&gt; I gave an example of a case when one needs to make “12 hive” changes; here are the high-level objectives…&lt;/p&gt;  &lt;h3&gt;Objectives&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;A uniform, automated, repeatable, efficient and centrally manageable way for making “12 hive” changes.&lt;/li&gt;    &lt;li&gt;It should take least of coding or none to introduce changes – be it xml modification, aspx/ascx, masterpage, images, css etc.&lt;/li&gt;    &lt;li&gt;It should be possible to roll-back the changes on demand.&lt;/li&gt;    &lt;li&gt;It should be possible for changes to be applied to all servers in the farm, not just local.&lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;u&gt;Note&lt;/u&gt;: This is a standard caution that your changes to “12 Hive” may be over-written by subsequent Cumulative Updates (CU) and/or Service Packs. Hence we need to plan for this as well.&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;One SharePoint Feature to rule them all!&lt;/h3&gt;  &lt;p&gt;Since the release of SharePoint 2007, I’ve come across numerous tips &amp;amp; tricks, open-source projects, and blog posts that show how to make desired change and most often employ a code-based approach that runs on Feature Activation to open the required file in “12 Hive”, make your changes – via code - and save the file. Reverse the changes on Deactivation of Feature.&lt;/p&gt;  &lt;p&gt;Now, one must realize that this requires significant coding effort and consistency checks (testing) to make minor changes in – say – some xml file somewhere. For example, a simple case of enabling PDF file icon support in SharePoint means creating a feature to open DocIcon.xml, parse the elements, make an entry for pdf element, and saving the xml. Many many lines of code to be written for mere single element entry. There should be a simpler way to this!&lt;/p&gt;  &lt;p&gt;Another problem is that you have to deal with the issue that where the code runs, it will pick local file only. What about other servers in farm? You have to further write code to make changes on all servers in farm. Than there are propagation concerns to be dealt, should new servers be added to farm later.&lt;/p&gt;  &lt;p&gt;Having said that, I think its better to have one universal and generic mechanism (SP Feature) of deploying your changes. To do that, I create a new VS project using &lt;a title="WSPBuilder (SharePoint WSP tool) - Home" href="http://wspbuilder.codeplex.com/" target="_blank"&gt;WSPBuilder&lt;/a&gt; and create a SP Feature and call it HiveSwap with the idea that we’ll have a mechanism of swapping system-files with ours instead of each time writing code to directly modify/merge required files…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_7FC619A6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_6EFE6EF8.png" width="254" height="272" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;So you get the idea – we want to build a generic feature (to rule them all) that becomes central to us for deploying all changes by mechanism of swapping. Deliver desired files (with manual changes already in place) via feature in a solution (.wsp), activate the Farm feature and it will backup system file, replace with its own. When needing to rollback/remove, it will use backup and replace the original file back.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_0C9049F8.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_48F898D5.png" width="697" height="247" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We need a place to keep all “12 Hive” files we want to deliver to swap system files with. I create another /12 folder inside our Feature folder. This will be a place where I just recreate the folder structure where all I want to make desired changes, copy the original file, make the changes – manually – and deploy the solution. &lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_0D588A15.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_6AB44B99.png" width="254" height="380" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Before that, we need our Feature receiver to do the job of swapping files both ways on Activation and Deactivation. Here is an example code I’ve quickly put together.    &lt;br /&gt;&lt;strong&gt;Note:&lt;/strong&gt; Consider this as pseudo code, is not production tested and you’d want to test at your end before finalizing it… (can’t share the complete/tested code for NDA)&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_682B19DB.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_6A37F2D7.png" width="889" height="650" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That’s it. Your feature is ready for single-server farm. For multi-server farm, you can enhance above code to run with elevated privileges, map C$ of each server in farm (which you can get from object model) at runtime, assuming each server’s “12 hive” is same local path. Since service account is local admin on these servers, system file moves isn’t a issue.&lt;/p&gt;  &lt;h3&gt;Conclusion&lt;/h3&gt;  &lt;p&gt;I’d like to hear from readers the pros/cons of above approach, here is my take:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Advantages&lt;/strong&gt;       &lt;ol&gt;       &lt;li&gt;Modifications are easy to do and simple. &lt;/li&gt;        &lt;li&gt;Leverage support of VS for things like intellisense for xml, aspx (partial), ascx (partial), master pages, css etc. &lt;/li&gt;        &lt;li&gt;Control over deployment/rollback with Feature activation/deactivation. &lt;/li&gt;        &lt;li&gt;Backup of system files. Should the service pack be deployed, simply deactivate the feature to bring “12 hive” to original state, implement MS changes, and reactivate. &lt;/li&gt;        &lt;li&gt;Scalable to any number of files you need to modify/replace. Lines of code has no proportionality to number of such files! &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Disadvantages&lt;/strong&gt;       &lt;ol&gt;       &lt;li&gt;All “12 Hive” system-file changes/replacements better be done by a single Feature alone. Else you may end up over-stepping with others, changing same files. If you have single administrative solution for your farm you should be okay to use above. &lt;/li&gt;        &lt;li&gt;If you are using &lt;a title="WSPBuilder (SharePoint WSP tool) - Home" href="http://wspbuilder.codeplex.com/" target="_blank"&gt;WSPBuilder&lt;/a&gt;, beware of using “Copy to 12 hive” command from menu, if feature is already activated in your local Dev farm. It will simply overwrite the backup! Feature deactivation will not rollback to originals as a result. &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hope this SP Feature is productive and of use for most, if not all.&lt;/p&gt;  &lt;p&gt;Thanks for reading.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;--Sharad&lt;/p&gt;</description><pubDate>Mon, 22 Jun 2009 02:31:55 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/sharepoint-2007-12-hive-system-file-changes-one-feature-to-rule-them-all</guid><category>SharePoint</category><category>Software Development</category><category>Visual Studio</category></item><item><title>SharePoint 2007 – How to enable left navigation, quick launch, for all web-part pages in a farm?</title><link>https://weblogs.asp.net:443/sharadkumar/sharepoint-2007-how-to-enable-left-navigation-quick-launch-for-all-web-part-pages-in-a-farm</link><description>&lt;p&gt;Collaboration features on SharePoint 2007 are undisputedly excellent, but there is occasional quirk which impede serious usability. One of them is absence of left navigation, or “quick launch”, on custom created web-part pages in any SharePoint site. Though you can choose from various web-part page layout style during creation, there is no option to make the left navigation visible other than playing page-by-page with SharePoint Designer! In large utilizations, its impossible to go to each web-part page and hope to fix it in SharePoint Designer. Not everyone has it, nor they know how to play with mark-up of page/master page.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_2BBC9F61.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Web Part Page without Left Navigation" border="0" alt="Web Part Page without Left Navigation" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_494E7A60.png" width="541" height="411" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So I set out to figure how I can fix this for all existing web-part pages and those created in future in any site, site-collection, or web-app in my farm, so that same site left-navigation is available on all web-part pages. It’s another thing that system pages (_layouts/*.aspx) will continue to come without left-navigation of a site.&lt;/p&gt;  &lt;h3&gt;How to enable left navigation – quick launch – for all web-part pages?&lt;/h3&gt;  &lt;p&gt;In SharePoint’s “12 hive” folder, at following path, there is template of all web-part page layouts used for creation from Create &amp;gt; Web Part Page.&lt;/p&gt;  &lt;p&gt;Web-Part Page Layouts: &lt;strong&gt;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\1033\STS\DOCTEMP\SMARTPGS&lt;/strong&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_74466865.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_3DA89754.png" width="811" height="462" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;u&gt;Note&lt;/u&gt;: This screen capture is from a Windows 7 x64 dev machine (build 7100); I am running SharePoint on it instead of Windows Server. &lt;a title="How to install Windows SharePoint Services 3.0 SP1 on Vista x64/x86" href="http://community.bamboosolutions.com/blogs/bambooteamblog/archive/2008/05/21/how-to-install-windows-sharepoint-services-3-0-sp1-on-vista-x64-x86.aspx" target="_blank"&gt;Details here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you open any of the 8 aspx pages in the folder, you’ll notice following 3 Content controls:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_64B330C9.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_1585C268.png" width="739" height="239" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now these 3 are responsible for hiding out Page image on top-left, quick-launch, and appropriate width required for quick-launch. All we have to do is comment these, so that what’s already defined in master page in these placeholders remains populated for the web-part pages using these layouts/templates.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_6BC24774.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_60D5405F.png" width="767" height="239" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now there is one issue I additionally want to fix/enhance. The &lt;em&gt;PlaceHolderPageImage&lt;/em&gt; responsible for top-left image icon on each page will come empty and wouldn’t look nice, so I’m going to place a image for generic use already present in /Images folder. This will result in following:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_76DBABF1.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_0F1EA040.png" width="769" height="189" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;So here is the final result, once above changes are implemented on each web server in a farm…&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_7084AF96.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_02149A62.png" width="851" height="584" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I’m sure your SharePoint site designers and their user’s will love this trick. &lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;--Sharad&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: In my next post, I’ll talk about better way’s of dealing with deployment/management of changes/replacements done to system files in “12 hive” folder of SharePoint server. Remember, Microsoft doesn’t want you to do system-file changes and have a support clause against them, but reality is that many necessary changes can’t be achieved without touching them…&lt;/p&gt;</description><pubDate>Fri, 19 Jun 2009 04:11:37 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/sharepoint-2007-how-to-enable-left-navigation-quick-launch-for-all-web-part-pages-in-a-farm</guid><category>SharePoint</category><category>SharePoint Designer</category><category>UI</category><category>User Experience</category></item><item><title>SharePoint Designer 2007 Governance: Options for selective lockdown?</title><link>https://weblogs.asp.net:443/sharadkumar/sharepoint-designer-2007-governance-options-for-selective-lockdown</link><description>&lt;p&gt;Stephen from SharePoint Designer Team had lately published a &lt;a href="http://blogs.msdn.com/sharepointdesigner/archive/2008/11/25/locking-down-sharepoint-designer.aspx" target="_blank"&gt;great article&lt;/a&gt; about options available to users for locking down SharePoint Designer 2007 (SPD). I review &amp;amp; re-visit that list to evaluate requirements missing, and what can be done by a developer to fill the gap of “selective lockdown”.&lt;/p&gt;  &lt;p&gt;SPD governance has been a issue, particularly in large setups and organizations, where farms are de-centrally managed. Central IT team is concerned about governance, users about functionality, and the sweet spot is missing in SPD due to lack of ways to have granular control of what functionality is available to users and what not. Think again and say IT doesn’t want users to modify sites look-and-feel, yet allow them to work on – say – workflows. This is realistic when WSS/MOSS is used in a large farm with hundreds and thousands of sites; they are not centrally managed for permissions and IT is merely managing the platform and it’s hygiene around set policies.&lt;/p&gt;  &lt;p&gt;So I’ll summarize in bullet’s what Stephen &lt;a href="http://blogs.msdn.com/sharepointdesigner/archive/2008/11/25/locking-down-sharepoint-designer.aspx" target="_blank"&gt;already covered&lt;/a&gt;, and what is missing from his article/solutions. Also what controls we possibly have that we can leverage to build additional, custom, and fine-grained controls.&lt;/p&gt;  &lt;h3&gt;What we already know from SharePoint Designer Team?&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;&lt;u&gt;Site Definition&lt;/u&gt;&lt;strong&gt;:&lt;/strong&gt; Edit &lt;em&gt;onet.xml &lt;/em&gt;to lock down all sites in a farm on a per site definition basis – say STS. You have to edit onet’s for each site template; manually or code a xml merging feature for server’s in farm! Once locked, there is no way to make exceptions for any sites using that template in your farm. &lt;/li&gt;    &lt;li&gt;&lt;u&gt;Permissions at Web App&lt;/u&gt;: Central management of permissions, applicable for all sites in a web-app, but with many caveats! &lt;/li&gt;    &lt;li&gt;&lt;u&gt;Policy for Web App&lt;/u&gt;: Create a permission group and target it to specific users or groups for a web-app. No exceptions can be made to sites. Granularity of specific functionality control, remains an issue. Few other caveats given… &lt;/li&gt;    &lt;li&gt;&lt;u&gt;Site Permissions&lt;/u&gt;: Define and manage permissions on a site. Not useful for large farms where central IT governance becomes an issue. On such farms, friends and family can all be site admin’s but central IT is concerned about governance policies and centralized controls. &lt;/li&gt;    &lt;li&gt;&lt;u&gt;SPD Contributor Settings&lt;/u&gt;: Not a secure means, it only allows site-admin’s to define settings for specific actions in SPD. This gets closest to what we endeavour – fine controls over who can do what. Biggest issue here remains – central IT cannot manage them. It has to be defined and managed by site admin’s! &lt;/li&gt;    &lt;li&gt;&lt;u&gt;Group Policy – per Computer or User&lt;/u&gt;: This is most useful since you have control over which options you want to globally (or specifically) hide from being available to users/computers, say you don’t want to give design capabilities but only functional such as workflows. GPs can be applied per user or computer, and only apply to client (SPD) and doesn’t govern permissions on SharePoint. &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;What is wrong with above approaches?&lt;/h3&gt;  &lt;p&gt;There are several issues with above approaches though.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;u&gt;All or Nothing&lt;/u&gt;: No way to granularly block specific functionality available in SPD. Like you want to stop design changes (editing master pages, unghosting home pages), but not functionality: data-views, workflows etc. Or say you don’t want edits to system galleries, unghosting of pages like Home (default.aspx) etc. &lt;/li&gt;    &lt;li&gt;&lt;u&gt;Exceptions&lt;/u&gt;: No way to make exceptions for certain sites when all others are blocked centrally by IT. &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;What additional options are available?&lt;/h3&gt;  &lt;p&gt;To meet short-comings or desired requirements for specific controls we can primarily exploit 2 approaches:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;u&gt;Enable/Disable SPD access on per site-level, in any web-app&lt;/u&gt;: This extends upon Onet.xml switch. Sites derive their config from Onet.xml, but can also specialize it for local use. Same trick is applicable for disabling site access from SPD by inserting “&lt;strong&gt;vti_disablewebdesignfeatures2&lt;/strong&gt;”, with value “&lt;strong&gt;wdfopensite&lt;/strong&gt;”, in sites property bag (). &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;div&gt;     &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;       &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (web.AllProperties.ContainsKey(&lt;span style="color: #006080"&gt;&amp;quot;&lt;strong&gt;vti_disablewebdesignfeatures2&lt;/strong&gt;&amp;quot;&lt;/span&gt;)){&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     web.AllProperties[&lt;span style="color: #006080"&gt;&amp;quot;&lt;strong&gt;vti_disablewebdesignfeatures2&lt;/strong&gt;&amp;quot;&lt;/span&gt;] = &lt;span style="color: #006080"&gt;&amp;quot;&lt;strong&gt;wdfopensite&lt;/strong&gt;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;     web.Update();&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;     web.AllProperties.Add(&lt;span style="color: #006080"&gt;&amp;quot;&lt;strong&gt;vti_disablewebdesignfeatures2&lt;/strong&gt;&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;&lt;strong&gt;wdfopensite&lt;/strong&gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;     web.Update();&lt;/pre&gt;
&lt;!--CRLF--&gt;

      &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;ul&gt;
    &lt;li&gt;Not just that, you may use other properties &lt;a href="http://msdn.microsoft.com/en-us/library/cc218003(PROT.10).aspx " target="_blank"&gt;given here&lt;/a&gt;. &lt;/li&gt;

    &lt;li&gt;Also there is a &lt;a href="http://nospd.codeplex.com/" target="_blank"&gt;project on codeplex&lt;/a&gt; for getting you started with code. Note that projects implementation is for a single site, but can be modified for centralized manageability for building a tool for Central Admin instead where you can control introduction/removal of property in the sites property bag centrally. &lt;/li&gt;
  &lt;/ul&gt;

  &lt;li&gt;&lt;u&gt;Govern all change communications from SPD to SharePoint on the server-side&lt;/u&gt;: Once we have control over specific sites of choice for enabling/disabling SPD access, we can now get into individual calls made from SPD to SharePoint to intercept those we want to deny. 

    &lt;ul&gt;
      &lt;li&gt;Build a custom .NET HTTP Handler and register in web.config for author.dll as follows: &lt;strong&gt;&amp;lt;add verb=&amp;quot;*&amp;quot; path=&amp;quot;*/_vti_bin/_vti_aut/author.dll&amp;quot; type=”[Your Type]”/&amp;gt;&lt;/strong&gt; &lt;/li&gt;

      &lt;li&gt;Use fiddler to identify calls of specific actions initiated from SPD. Pattern match such RPC method calls in our handler and return a message of denial. You can even do custom messaging. Store messages and Regex patterns in your config. &lt;/li&gt;

      &lt;li&gt;You can put a simple Xml for config containing calls you want to disable, their denial messages. This can even reside in a list in Central Admin. Read (cache) this config from you handler and decide at runtime on what is allowed. &lt;/li&gt;

      &lt;li&gt;Optionally you can build groups of functionality/denials as policy templates in a list and have another list for association to specific sites. This way you not only have control over which sites get SPD, but also what functionality (via template/policy) within scope of SPD features. &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;To gain fine control over SPD functionality for SharePoint over specific sites, apart from what SP Designer team has already documented. Site-level access control for SPD, and HTTP handler for SPD XML RPC calls pretty much covers the limitations highlighted and enables specific governance controls one needs in a large farm where central IT is defining policies and farm is decentralized for permission management of individual sites.&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

&lt;p&gt;--Sharad&lt;/p&gt;</description><pubDate>Thu, 11 Jun 2009 03:53:04 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/sharepoint-designer-2007-governance-options-for-selective-lockdown</guid><category>Office System</category><category>SharePoint</category><category>SharePoint Designer</category></item><item><title>Subversion – Repository casing issues on Windows!</title><link>https://weblogs.asp.net:443/sharadkumar/subversion-repository-casing-issues-on-windows</link><description>&lt;p&gt;To my surprise, today when I checked out my Subversion repository – running VisualSVN on a Windows Home Server – it downloaded just as expected. Only when I made some changes, did I realize that something is wrong as I received following error!&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;&lt;font color="#ff0000"&gt;“Server sent unexpected return value (403 Forbidden) in response to MKACTIVITY”&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_6F8CB1FF.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_54BFCA4C.png" width="667" height="408" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It turns out that even on Windows, Subversion repository url’s are case sensitive. (Strangely that not the case for fetching source!)&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_6CD30EDA.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/Media/image_thumb_67547869.png" width="431" height="145" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Solution: Create a new folder, and download the repository afresh with right case – as on server. Once downloaded, try making a change and it will all work fine.&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;--Sharad&lt;/p&gt;</description><pubDate>Mon, 08 Jun 2009 04:28:08 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/subversion-repository-casing-issues-on-windows</guid><category>C#</category><category>Software Engineering</category><category>Source Control</category><category>Subversion</category><category>Visual Studio</category></item><item><title>Unit Testing with SharePoint and ASP.NET - TypeMock Isolator</title><link>https://weblogs.asp.net:443/sharadkumar/unit-testing-with-sharepoint-and-asp-net-typemock-isolator</link><description>&lt;P mce_keep="true"&gt;Unit testing with SharePoint is never easy, especially when you aren't live. So is the case with ASP.NET and Silverlight etc. TypeMock&amp;nbsp;is releasing a new bundle and below are details. Once I get to play little more, I'll share details...&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;A href="http://www.typemock.com/"&gt;&lt;FONT color=#006699&gt;Unit Testing&lt;/FONT&gt;&lt;/A&gt; ASP.NET? &lt;A href="http://www.typemock.com/ASP.NET_unit_testing_page.php"&gt;&lt;FONT color=#006699&gt;ASP.NET unit testing&lt;/FONT&gt;&lt;/A&gt; has never been this easy.&lt;BR&gt;&lt;BR&gt;Typemock is launching a new product for ASP.NET developers – the &lt;STRONG&gt;ASP.NET Bundle&lt;/STRONG&gt; - and for the launch will be giving out &lt;FONT color=#000000&gt;&lt;SPAN style="COLOR: #006600"&gt;&lt;STRONG&gt;FREE licenses&lt;/STRONG&gt;&lt;/SPAN&gt; to bloggers and their readers.&lt;BR&gt;&lt;BR&gt;The ASP.NET Bundle is the ultimate ASP.NET unit testing solution, and offers both &lt;/FONT&gt;&lt;A href="http://www.typemock.com/"&gt;&lt;FONT color=#006699&gt;Typemock Isolator&lt;/FONT&gt;&lt;/A&gt;, a &lt;A href="http://www.typemock.com/"&gt;&lt;FONT color=#006699&gt;unit test&lt;/FONT&gt;&lt;/A&gt; tool and &lt;A href="http://sm-art.biz/Ivonna.aspx"&gt;&lt;FONT color=#006699&gt;Ivonna&lt;/FONT&gt;&lt;/A&gt;, the Isolator add-on for &lt;A href="http://sm-art.biz/Ivonna.aspx"&gt;&lt;FONT color=#006699&gt;ASP.NET unit testing&lt;/FONT&gt;&lt;/A&gt;, for a bargain price.&lt;BR&gt;&lt;BR&gt;Typemock Isolator is a leading &lt;A href="http://www.typemock.com/"&gt;&lt;FONT color=#006699&gt;.NET unit testing&lt;/FONT&gt;&lt;/A&gt; tool (C# and VB.NET) for many ‘hard to test’ technologies such as &lt;A href="http://typemock.com/sharepointpage.php"&gt;&lt;FONT color=#006699&gt;SharePoint&lt;/FONT&gt;&lt;/A&gt;, &lt;A href="http://www.typemock.com/ASP.NET_unit_testing_page.php"&gt;&lt;FONT color=#006699&gt;ASP.NET&lt;/FONT&gt;&lt;/A&gt;, &lt;A href="http://www.typemock.com/ASP.NET_unit_testing_page.php"&gt;&lt;FONT color=#006699&gt;MVC&lt;/FONT&gt;&lt;/A&gt;, &lt;A href="http://www.typemock.com/wcfpage.php"&gt;&lt;FONT color=#006699&gt;WCF&lt;/FONT&gt;&lt;/A&gt;, WPF, &lt;A href="http://www.typemock.com/Silverlight_unit_testing_page.php"&gt;&lt;FONT color=#006699&gt;Silverlight&lt;/FONT&gt;&lt;/A&gt; and more. Note that for &lt;A href="http://www.typemock.com/Silverlight_unit_testing_page.php"&gt;&lt;FONT color=#006699&gt;unit testing Silverlight&lt;/FONT&gt;&lt;/A&gt; there is an open source Isolator add-on called &lt;A href="http://www.typemock.com/Silverlight_unit_testing_page.php"&gt;&lt;FONT color=#006699&gt;SilverUnit&lt;/FONT&gt;&lt;/A&gt;.&lt;BR&gt;&lt;BR&gt;The first 60 bloggers who will blog this text in their blog and &lt;A href="http://blog.typemock.com/2009/05/get-free-typemock-licenses-aspnet.html"&gt;&lt;FONT color=#006699&gt;tell us about it&lt;/FONT&gt;&lt;/A&gt;, will get a Free Isolator ASP.NET Bundle license (Typemock Isolator + Ivonna). If you post this in an ASP.NET &lt;STRONG&gt;dedicated&lt;/STRONG&gt; blog, you'll get a license automatically (even if more than 60 submit) during the first week of this announcement.&lt;BR&gt;&lt;BR&gt;Also 8 bloggers will get an &lt;STRONG&gt;additional 2 licenses&lt;/STRONG&gt; (each) to give away to their readers / friends.&lt;BR&gt;&lt;BR&gt;Go ahead, click the following link for &lt;A href="http://blog.typemock.com/2009/05/get-free-typemock-licenses-aspnet.html"&gt;&lt;FONT color=#006699&gt;more information &lt;/FONT&gt;&lt;/A&gt;on how to get your free license.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Enjoy,&lt;/P&gt;
&lt;P mce_keep="true"&gt;--Sharad&lt;/P&gt;</description><pubDate>Tue, 19 May 2009 08:39:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/unit-testing-with-sharepoint-and-asp-net-typemock-isolator</guid><category>ASP.NET</category><category>SharePoint</category></item><item><title>External BLOB Storage (EBS) for SharePoint 2007</title><link>https://weblogs.asp.net:443/sharadkumar/external-blob-storage-ebs-for-sharepoint-2007</link><description>&lt;P&gt;SharePoint storing BLOBs in SQL Server carry its overhead (cost, doc size &amp;amp; storage limits…) and when your farm grows you may want to consider using External Blog Storage API that was exposed with WSS 3.0 SP1, in early 2008. Later a &lt;A href="http://www.codeplex.com/ebs" target=_blank mce_href="http://www.codeplex.com/ebs"&gt;project on Codeplex&lt;/A&gt; also became visible, for EBS implementation, but doesn’t seem to be accessible now. WSS SDK has been updated with &lt;A href="http://msdn.microsoft.com/en-us/library/bb802812.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb802812.aspx"&gt;documentation&lt;/A&gt; regarding “guidance” on how to implement your own EBS, but I think its bit high-level and leaves a daunting task for .NET developer. Especially if he is unfamiliar with unmanaged code! Apart from that, &lt;A href="http://kyletillman.net/blog/post/SharePoint_External_Binary_Store-PartI.aspx" target=_blank mce_href="http://kyletillman.net/blog/post/SharePoint_External_Binary_Store-PartI.aspx"&gt;Kyle Tillman&lt;/A&gt; has a awesome 3 series post that goes to a great length describing the steps he took to implement his own, though he shy away from sharing complete code (employer concerns). &lt;/P&gt;
&lt;P&gt;For next version of SharePoint Server/Services (2010), MS is certainly including Remote BLOB storage but there is caveat that your existing EBS implementations will likely be incompatible and you’ll have to plan upgrade accordingly. &lt;A href="http://sqlrbs.codeplex.com/Thread/View.aspx?ThreadId=46508" mce_href="http://sqlrbs.codeplex.com/Thread/View.aspx?ThreadId=46508"&gt;Read here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt;: Corresponding to SQL Server 2008 there is a samples &lt;A href="http://www.codeplex.com/sqlrbs" target=_blank mce_href="http://www.codeplex.com/sqlrbs"&gt;project on Codeplex&lt;/A&gt; for Remote BLOB Storage (RBS) by &lt;A href="http://blogs.msdn.com/sqlrbs/" target=_blank mce_href="http://blogs.msdn.com/sqlrbs/"&gt;RBS Team&lt;/A&gt;. &lt;A href="http://blogs.technet.com/josebda/archive/2008/07/29/sql-server-remote-blob-store-rbs-available-as-part-of-the-feature-pack-rc0-for-microsoft-sql-server-2008.aspx" target=_blank mce_href="http://blogs.technet.com/josebda/archive/2008/07/29/sql-server-remote-blob-store-rbs-available-as-part-of-the-feature-pack-rc0-for-microsoft-sql-server-2008.aspx"&gt;RBS is different from EBS&lt;/A&gt; for SharePoint, but similarly allows external storage of BLOBs for your apps using SQL 2008.&lt;/P&gt;
&lt;P&gt;Now, Pav Cherny has published an &lt;A href="http://technet.microsoft.com/en-us/magazine/dd797543.aspx" target=_blank mce_href="http://technet.microsoft.com/en-us/magazine/dd797543.aspx"&gt;excellent article in latest June edition&lt;/A&gt; of TechNet magazine further detailing EBS implementation and also sharing the code. Of course, the code isn’t recommended for your production use and is untested. Thanks Pav!&lt;/P&gt;
&lt;P&gt;--Sharad&lt;/P&gt;</description><pubDate>Sat, 16 May 2009 16:39:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/external-blob-storage-ebs-for-sharepoint-2007</guid><category>SharePoint</category></item><item><title>Windows 7 Beta 1 - Preview Top Features with Virtual PC</title><link>https://weblogs.asp.net:443/sharadkumar/windows-7-beta-1-preview-top-features-with-virtual-pc</link><description>&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Windows7logo_2.png"&gt;&lt;img height="110" alt="Windows7logo" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Windows7logo_thumb.png" width="169" align="right" border="0" /&gt;&lt;/a&gt;Well, I think this was super exciting new year gift that Microsoft gave to &lt;em&gt;ahead-of-curve&lt;/em&gt; users and, most importantly, to its broader set of developers. No wonder, there was frenzy to download, now public, beta on announcement from Steve at CES 2009 and its rumored to have almost brought down microsoft.com! &lt;/p&gt;  &lt;p&gt;I was curious lot and managed to get my copy from MSDN with a new key. Now, since this is Beta 1, I would venture into replacing any of my Vista machine with it, so I decided to try hands with Virtual PC 2007 instead. Here is what I did for setup and discovery...&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Downloaded Windows 7 x86 Beta ISO (Build 7000) from MSDN, and generated new key. &lt;/li&gt;    &lt;li&gt;Created a new Virtual Machine and a Virtual Drive with Virtual PC 2007 SP1. Selected 2GB memory configuration and Vista as base OS choice in the wizard. &lt;/li&gt;    &lt;li&gt;Started new VM, and captured the downloaded ISO. Reset the VM to boot from ISO. &lt;/li&gt;    &lt;li&gt;Setup started smoothly. While feel of setup was very similar to that of Vista with slight variance on bluish background instead of green-blue mix; notable difference was that the key was asked in the end after first reboot. In all, setup took around 30 minutes end to end, similar to Vista. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I definitely felt better, or I must say - different, arriving on Windows 7 desktop. Browsing around quickly I could notice many subtle differences and tweaks against Vista. There is clearly lot to write about, but good news for users is that its not a major shift of UI and hence hardly much to unlearn but somewhat more to learn. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;The official beta, announced at the CES 2009, was made available to MSDN and TechNet subscribers on 07 January 2009 and was made briefly available for public download on Microsoft TechNet on 09 January 2009 before being withdrawn and placed with a coming soon message. The servers were experiencing difficulty in dealing with the number of users who wished to download the beta. Microsoft had to add additional servers to cope with the large volume of interest from the public. As of 18:00 GMT Saturday 10th January, the Windows 7 download servers were back online. Due to the unexpectedly high demand, Microsoft has decided to remove its initial 2.5 million download limit and make it available to the public until January 24th 2009.&amp;quot; - &lt;em&gt;&lt;strong&gt;Wikipedia&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here is a stock of notable features that are worth writing about at a quick glance.&lt;/p&gt;  &lt;h4&gt;Task bar&lt;/h4&gt;  &lt;p&gt;This is almost a major change for Windows. Classic task-bar for stacking minimized windows has a change that it now represented by icons only. Quick launch - in its erstwhile form - is gone, and you instead pin applications from anywhere. Multiple windows of same group/type is represented as single icon. Task-bar preview is also more practical now with large enough previews of open applications... On right-most, there is separate bar in task-bar to 'show desktop'.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0002_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="665" alt="Windows 7 Beta 1 in Virtual PC 2007 SP1" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0002_thumb.png" width="780" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;Sidebar Booted&lt;/h4&gt;  &lt;p&gt;I could never adopt Sidebar in Vista and had it always turned off. I also hear that it had performance issues. No wonder, its gone now and your desktop is the container for gadgets instead. [See above picture]&lt;/p&gt;  &lt;h4&gt;Personalization&lt;/h4&gt;  &lt;p&gt;Windows 7 appears more glassy, though I could not experience full-scale &amp;quot;Aero&amp;quot; due to limited graphics driver capabilities in Virtual PC. Themes are here to stay and got refined. You can customize them, save them, or download new ones. They are combination of Desktop background(s), windows color (and translucency), sounds, and screen-saver. &lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/image_2.png"&gt;&lt;img height="715" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/image_thumb.png" width="800" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Notice that you can have multiple backgrounds to a single theme that means you can rotate wallpapers to change periodically on set schedule. Now this is nice and much awaited, and I can get rid of desktop freeware I've been using to manage wallpapers to rotate.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/image_4.png"&gt;&lt;img height="715" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/image_thumb_1.png" width="800" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I like additional options to manage stretching, filling and fitting the non-standard desktop or images.&lt;/p&gt;  &lt;h4&gt;Ribbons&lt;/h4&gt;  &lt;p&gt;Ribbon interface is now spreading out beyond Office 2007, for obvious reasons of usability and clearly marks the fact that Ribbon has been received productively well with platform users. &lt;/p&gt;  &lt;p&gt;Ribbons in WordPad... nice!&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0010_2.png"&gt;&lt;img height="618" alt="Snipped-0010" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0010_thumb.png" width="808" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Ribbons in Paint... awesome!&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0001_2.png"&gt;&lt;img height="597" alt="Snipped-0001" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0001_thumb.png" width="808" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now this is interesting... notice the replacement to &amp;quot;Office Button&amp;quot; on top-left that we are familiar with in Office 2007. That's replaced this prioritized first tab instead. not sure what to call it now, but it does seem to indicate scheme of changes one can expect to be consistently synchronized in next version of Office, and Ribbon APIs for developers.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0008_2.png"&gt;&lt;img height="618" alt="Snipped-0008" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0008_thumb.png" width="808" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Clicking on Paint icon, expanded following menu. Notice the location of icon, and utilization of space for quick-launch.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0009_2.png"&gt;&lt;img height="618" alt="Snipped-0009" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/Snipped-0009_thumb.png" width="808" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Smart Windows&lt;/h4&gt;  &lt;p&gt;Arranging windows hasnt been most intuitive or obvious, like &amp;quot;Show Windows Side by Side&amp;quot; option from context menu of task-bar, to stack windows vertically, for example. Now it seems more natural to simply drag a window left (or right) to your screen and when its close to mid way, it self stacks current window in half of screen, leaving remaining half for other window or instance to do things like content comparison, or multi-tasking / previews. Many subtle behaviors, best to &lt;a href="http://www.microsoft.com/windows/windows-7/beta-videos.aspx" target="_blank"&gt;see them as video&lt;/a&gt;, instead of still preview!&lt;/p&gt;  &lt;h4&gt;HomeGroup&lt;/h4&gt;  &lt;p&gt;Its home networking simplified and one of the important feature introduction for Windows 7. You don't need admin-level skills to setup your home network and connect disparate devices and PCs, setup media sharing. Its stated that you don't have to be technical to setup networking with HomeGroup (even your mother can do it!) &lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/image_8.png"&gt;&lt;img height="749" alt="image" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/image_thumb_3.png" width="760" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/blogfiles/e7/WindowsLiveWriter/AtHomewithWindows7sHomeGroup_138C0/image_12.png" /&gt;&lt;/p&gt;  &lt;h4&gt;Multi-Touch&lt;/h4&gt;  &lt;p&gt;Okay - touch is everywhere, and your screen won't be spared. Windows has Microsoft's multi-touch technology which enable rich experiences of touch interactivity with touch-sensitive screens. Imagine browsing windows or internet by simply touching the screen, scrolling and navigating your way through. &lt;/p&gt;  &lt;p&gt;If picture is worth thousand words, then video is worth millions. Checkout, &lt;a href="http://www.microsoft.com/windows/windows-7/beta-videos.aspx?vid=6600cc27-26b9-38c2-a70e-14777de4514c" target="_blank"&gt;Windows 7 Multi-Touch&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;Windows Live&lt;/h4&gt;  &lt;p&gt;Windows is now set to be little leaner with various features like Windows Mail are not included. They are part of additional downloads of Windows Live instead. This makes sense as Windows Live release cycles are/can be more agile, instead of years of Windows. You can get Mail, Photos, and SkyDrive etc., and also the What's New feed.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;Device Stage&lt;/h4&gt;  &lt;p&gt;Device Stage is a new interface in 7 that allows for device manufacturers to build greater support for their devices and for users to experience aggregate of relevant features in one place for a device, making it easy to find relevant features for device in one place. For example, check the following picture that shows Device Stage for Nikon D90. You can import pictures, use storage services, browse files, settings, and even links to accessories, drivers etc. For more info, read &lt;a title="Device Stage &amp;#8211; A New Way of Interacting with Devices in Windows 7" href="http://windowsteamblog.com/blogs/windowsexperience/archive/2009/01/08/device-stage-a-new-way-of-interacting-with-devices-in-windows-7.aspx"&gt;Device Stage &amp;#8211; A New Way of Interacting with Devices in Windows 7&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/D90.png"&gt;&lt;img height="400" alt="Device Stage with Nikon D90" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/Windows7Beta1PreviewwithVirtualPC_7F9B/D90_thumb.png" width="640" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/a&gt;  &lt;p&gt;Seems interesting? So what are you waiting for, grab your copy of Windows 7 and safely install in Virtual PC 2007 SP1. Enjoy!&lt;/p&gt;  &lt;p&gt;-- Sharad&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Further Reading&lt;/strong&gt;:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a title="http://www.microsoft.com/windows/windows-7/" href="http://www.microsoft.com/windows/windows-7/"&gt;http://www.microsoft.com/windows/windows-7/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="http://windowsteamblog.com/blogs/windows7/default.aspx" href="http://windowsteamblog.com/blogs/windows7/default.aspx"&gt;http://windowsteamblog.com/blogs/windows7/default.aspx&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;</description><pubDate>Tue, 13 Jan 2009 03:47:18 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/windows-7-beta-1-preview-top-features-with-virtual-pc</guid><category>Windows</category><category>Xbox</category></item><item><title>Xbox commercials... you don't want to miss!</title><link>https://weblogs.asp.net:443/sharadkumar/xbox-commercials-you-don-t-want-to-miss</link><description>&lt;p&gt;Quick assortment of some cool commercials on YouTube:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=1koDmMSfi0M&amp;amp;feature=related"&gt;http://www.youtube.com/watch?v=1koDmMSfi0M&amp;amp;feature=related&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Robbers and Cops: &lt;a href="http://www.youtube.com/watch?v=VFvaByuxmCI&amp;amp;feature=related"&gt;http://www.youtube.com/watch?v=VFvaByuxmCI&amp;amp;feature=related&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Hitler&amp;#8217;s Loss: &lt;a href="http://www.youtube.com/watch?v=16NkX9WbyAU"&gt;http://www.youtube.com/watch?v=16NkX9WbyAU&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Life is Short: &lt;a href="http://www.youtube.com/watch?v=uu8456pVSLI"&gt;http://www.youtube.com/watch?v=uu8456pVSLI&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Station: &lt;a href="http://www.youtube.com/watch?v=8BOKQdI5IXk"&gt;http://www.youtube.com/watch?v=8BOKQdI5IXk&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Jump Rope: &lt;a href="http://www.youtube.com/watch?v=fjacKfoiH6o"&gt;http://www.youtube.com/watch?v=fjacKfoiH6o&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Xbox vs PS3: &lt;a href="http://www.youtube.com/watch?v=QstAkt88Rtw&amp;amp;feature=related"&gt;http://www.youtube.com/watch?v=QstAkt88Rtw&amp;amp;feature=related&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Clay: &lt;a href="http://www.youtube.com/watch?v=J69llfgaNi4&amp;amp;feature=related"&gt;http://www.youtube.com/watch?v=J69llfgaNi4&amp;amp;feature=related&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Xbox Live &amp;#8211; Next Gen: &lt;a href="http://www.youtube.com/watch?v=By7nzqzcloo&amp;amp;NR=1"&gt;http://www.youtube.com/watch?v=By7nzqzcloo&amp;amp;NR=1&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Xbox Game Videos: &lt;a href="http://www.youtube.com/watch?v=ssX5Qi6LVgo"&gt;http://www.youtube.com/watch?v=ssX5Qi6LVgo&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Ready to Board?: &lt;a href="http://www.youtube.com/watch?v=UJL33pdsCLM"&gt;http://www.youtube.com/watch?v=UJL33pdsCLM&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Water Wars: &lt;a href="http://www.youtube.com/watch?v=VsrB0jep4-M"&gt;http://www.youtube.com/watch?v=VsrB0jep4-M&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Redneck Hunting: &lt;a href="http://www.youtube.com/watch?v=StOJr2k5Y-U"&gt;http://www.youtube.com/watch?v=StOJr2k5Y-U&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Japan &amp;#8211; Do! Do! Do!: &lt;a href="http://www.youtube.com/watch?v=whE0Y0LeNWE"&gt;http://www.youtube.com/watch?v=whE0Y0LeNWE&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Live your moment: &lt;a href="http://www.youtube.com/watch?v=LRWSxwccHqY"&gt;http://www.youtube.com/watch?v=LRWSxwccHqY&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=VKLZkdTvAIg"&gt;http://www.youtube.com/watch?v=VKLZkdTvAIg&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Rawr: &lt;a href="http://www.youtube.com/watch?v=-tj2zIs05jU"&gt;http://www.youtube.com/watch?v=-tj2zIs05jU&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Japansese Woman: &lt;a href="http://www.youtube.com/watch?v=JCsIuCZ8hds"&gt;http://www.youtube.com/watch?v=JCsIuCZ8hds&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Jump in!&lt;/p&gt;</description><pubDate>Sun, 19 Oct 2008 15:46:20 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/xbox-commercials-you-don-t-want-to-miss</guid><category>Xbox</category></item><item><title>How to Customize SharePoint Forms - Part 2</title><link>https://weblogs.asp.net:443/sharadkumar/how-to-customize-sharepoint-forms-part-2</link><description>&lt;P&gt;In my &lt;A href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx" target=_blank mce_href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx"&gt;previous post&lt;/A&gt;, I discussed various options available with developers/power-users to modify out-of-the-box SharePoint list forms, with a mix of client-side and server-side approaches. However, options available to end-users are limited very limited on UI.&lt;/P&gt;
&lt;P&gt;In continuation of same series, I'd quickly introduce you to my preferred server-side approach which is not only a better implementation but is far usable by users of your SharePoint site, and is UI-based, without worrying about what's under the hood. &lt;/P&gt;
&lt;P&gt;You can download provided release to readily use it against your SharePoint sites/lists. Here is an example of end result:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings_6.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings_6.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=456 alt="Modified Edit Form for Tasks List" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings_thumb_2.png" width=604 border=0 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings_thumb_2.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;H3&gt;Form Customization Requirements&lt;/H3&gt;
&lt;P&gt;Some of the prime requirements are for custom Forms on UI are:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Modify out of the box Forms - New, Edit, and Display - to selectively choose fields that are available on each form. &lt;/LI&gt;
&lt;LI&gt;On Edit form, from fields marked available, select some to be read-only. You want user to be able to see its value, but make it non-editable. &lt;/LI&gt;
&lt;LI&gt;Do not unghost out-of-the-box forms for sake of form customization. &lt;/LI&gt;
&lt;LI&gt;Be usable on both, Windows SharePoint Services v3.0 and SharePoint Server 2007. &lt;/LI&gt;&lt;/OL&gt;
&lt;H3&gt;Solution Approach - List Form Settings&lt;/H3&gt;
&lt;P&gt;Taking &lt;A href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx#6400195" target=_blank mce_href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx#6400195"&gt;example&lt;/A&gt; of &lt;A href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx#6400195" target=_blank mce_href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx#6400195"&gt;tips&lt;/A&gt; from my &lt;A href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx" target=_blank mce_href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx"&gt;previous posts&lt;/A&gt; for using Rendering Templates to &lt;A href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/sharepoint-forms-improve-layout-of-field-s-description-to-save-screen-space-and-enhance-ux.aspx" target=_blank mce_href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/sharepoint-forms-improve-layout-of-field-s-description-to-save-screen-space-and-enhance-ux.aspx"&gt;enhance default UI&lt;/A&gt; and controls, I've created new controls to intercept default Forms and set required form configuration on server-side before they are rendered to browser. I've also taken examples from some nice implementations on &lt;A title="Codeplex: Office Toolbox" href="http://www.codeplex.com/OfficeToolbox" target=_blank mce_href="http://www.codeplex.com/OfficeToolbox"&gt;Codeplex&lt;/A&gt; by &lt;A href="http://www.codeplex.com/SPListDisplaySetting" target=_blank mce_href="http://www.codeplex.com/SPListDisplaySetting"&gt;Bewise&lt;/A&gt; and &lt;A href="http://www.codeplex.com/WSSListConfigurator" target=_blank mce_href="http://www.codeplex.com/WSSListConfigurator"&gt;DBedarf&lt;/A&gt;, and came up with something more usable to my preference and various enhancements.&lt;/P&gt;
&lt;P&gt;Solution is to build a SharePoint Feature to provide a Application Page linked from List-Settings to edit the configuration of current list pertaining to various Form types. Save that configuration in RootFolder Property-Bag of current list. Override the &lt;A href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx" target=_blank mce_href="http://weblogs.asp.net/sharadkumar/archive/2008/07/07/how-to-customize-rendering-of-sharepoint-list-form-fields-part-1.aspx"&gt;Rendering Template for ListForm&lt;/A&gt; and CompositeField (FormSettings.ascx) to replace our custom controls so that we can intercept the rendering on the fly using the configuration we saved in property bag - selected by list administrator.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Following list types are enabled by Feature: Custom Lists, Announcements, Contacts, Issues, Events, Links, Tasks, and Project Tasks list.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;Get Started with Form Settings&lt;/H3&gt;
&lt;P&gt;Download &lt;A href="http://www.codeplex.com/OfficeToolbox/Release/ProjectReleases.aspx?ReleaseId=15713" target=_blank mce_href="http://www.codeplex.com/OfficeToolbox/Release/ProjectReleases.aspx?ReleaseId=15713"&gt;OfficeToolbox.SharePoint.Lists v1.0&lt;/A&gt; from Codeplex or at &lt;A href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sharepointtoolbox&amp;amp;ReleaseId=1326" target=_blank mce_href="https://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sharepointtoolbox&amp;amp;ReleaseId=1326"&gt;SharePoint Toolbox&lt;/A&gt; at MSDN Code. Unzip the archive and run Setup.exe on your Server box where you want to install or try. Go to "Central Admin &amp;gt; Application Management &amp;gt; Manage Web Application Features" and activate the Feature.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/image_2.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=376 alt=image src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/image_thumb.png" width=604 border=0 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Now go to your list settings of applicable lists on any site under the above web-application. Click "Form Settings".&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/image_6.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=408 alt=image src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/image_thumb_2.png" width=604 border=0 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/image_thumb_2.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;From settings page, you can show/hide fields across New, Edit, and Display forms. For Edit form, you can also mark selected fields as read-only... should you want to stop your users from editing some information. You can also decide the location of field's description - next to field Label or next to control itself (default).&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings2_2.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings2_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=626 alt="Form Settings" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings2_thumb.png" width=604 border=0 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings2_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Having selected above, you get following Edit form... for example.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings_2.png" mce_href="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=456 alt="Modified Form" src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings_thumb.png" width=604 border=0 mce_src="https://aspblogs.blob.core.windows.net/media/sharadkumar/WindowsLiveWriter/HowtoCustomizeSharePointFormsPart2_7100/FormSettings_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Above gives you significant control over specific fields on a form to better control the lifecycle of information of your lists, resulting in not on better quality of data (saving wrong edits) but better usability/adoption by being able to communicate that information isn't available for editing once created. (edit form: read only).&lt;/P&gt;
&lt;H3&gt;Advantages of server-side Form customizations&lt;/H3&gt;
&lt;P&gt;In my previous post in series, I suggested various approaches available to modify forms, either client-side or using SharePoint Designer. While the come with their limitations, server-side has various advantages.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Power to the users, no dependency on Developers - once implemented; better usability.&lt;/LI&gt;
&lt;LI&gt;Server-side implementation comes with advantages of managed code, SharePoint feature (roll-back, scoping etc), central manageability etc.&lt;/LI&gt;
&lt;LI&gt;No unghosting of forms, just in line with SharePoint APIs.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Speaking of disadvantages and future-scope, there are present limitations that there is no scope of forms/settings for individual SharePoint groups or audience. Flexibility of conditionally marking a field editable, while read-only by default. There can be various additional possibilities for enhancements, and I'm just hoping that we see far greater possibilities with forms in SharePoint 2009!!!&lt;/P&gt;
&lt;P&gt;That's all for now, hope you find it useful. Do send in your suggestions for improvements.&lt;/P&gt;
&lt;P&gt;-- Sharad&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Download&lt;/STRONG&gt;: &lt;A href="http://www.codeplex.com/OfficeToolbox/Release/ProjectReleases.aspx?ReleaseId=15713" target=_blank mce_href="http://www.codeplex.com/OfficeToolbox/Release/ProjectReleases.aspx?ReleaseId=15713"&gt;OfficeToolbox.SharePoint.Lists v1.0&lt;/A&gt; from Codeplex.&lt;/P&gt;</description><pubDate>Tue, 29 Jul 2008 05:00:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/sharadkumar/how-to-customize-sharepoint-forms-part-2</guid><category>Forms</category><category>SharePoint</category><category>SharePoint 2009</category><category>UI</category></item></channel></rss>