<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-948216771623611945</atom:id><lastBuildDate>Mon, 30 Jan 2012 12:41:33 +0000</lastBuildDate><category>Visual Studio</category><category>WebService</category><category>BCS</category><category>Powershell</category><category>Event Handler</category><category>SilverLight</category><category>BDC</category><category>.Net</category><category>Deployment</category><category>Bug</category><category>Webpart</category><category>Query String</category><category>STSADM</category><category>Integration</category><category>Security</category><category>Look and Feel</category><category>Codeplex</category><category>Testing</category><category>Administration</category><category>Configuration</category><category>Ribbon</category><category>Best Practice</category><category>Code</category><category>JQuery</category><category>Excel Services</category><category>Backup</category><category>ActiveX</category><category>Sharepoint 2010</category><category>MOSS</category><category>Error</category><category>Virtualization</category><category>SSP</category><category>Record Management</category><category>Hotfix</category><category>Reports</category><category>Script</category><category>XSLT</category><category>Publishing</category><category>Governance</category><category>Javascript</category><category>Project Server 2007</category><category>Office</category><category>MVC2</category><category>Migration</category><category>Controls</category><category>SharePoint</category><category>Learn</category><category>Logging</category><category>Web.config</category><category>Workflow</category><category>Basics</category><category>Tips</category><category>CAML</category><category>Search</category><category>Service Application</category><category>Client Object Model</category><category>Issue</category><category>User Profile</category><category>Timer</category><category>Sharepoint Designer</category><category>WCF</category><category>Comparision</category><category>Database</category><category>WishList</category><category>Data View Webpart</category><category>Authentication</category><category>Tools</category><category>Checklist</category><category>Debug</category><category>Audience</category><category>MySites</category><category>ASP.Net</category><category>Training</category><category>Tricks</category><category>Installation</category><category>Audit</category><category>InfoPath</category><title>SharePoint Sandeep</title><description>&amp;lt;/Sandeep K Nahta&amp;gt;</description><link>http://snahta.blogspot.com/</link><managingEditor>noreply@blogger.com (Sandeep K Nahta)</managingEditor><generator>Blogger</generator><openSearch:totalResults>539</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/sandeepnahta" /><feedburner:info uri="sandeepnahta" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-981262942769504462</guid><pubDate>Wed, 18 Jan 2012 19:21:00 +0000</pubDate><atom:updated>2012-01-18T14:29:50.750-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Look and Feel</category><title>Styles not working in custom forms</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;I am sure this worked in MOSS 2007. Applying OOTB styles gives perfect look and feel for custom forms. But when I applied OOTB styles in SP2010 Visual Web part , I didn't get the right styles.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;After few comparison I realized SharePoint loads different style sheet files on different pages. So for a custom form to get the same styles as OOTB forms, there was a missing stylesheet.&lt;br /&gt;Add the following statement in your Visual Webpart to fix it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code:&lt;/strong&gt;&lt;pre name="code" class="html"&gt;&amp;lt;link rel="stylesheet" type="text/css" href="/_layouts/1033/styles/Themable/forms.css" /&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-981262942769504462?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/4FUer9siXh8/styles-not-working-in-custom-forms.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2012/01/styles-not-working-in-custom-forms.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-8205307525008604625</guid><pubDate>Wed, 18 Jan 2012 06:40:00 +0000</pubDate><atom:updated>2012-01-18T01:48:10.659-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><title>SharePoint Error activating feature</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;Got an error while activating feature.&lt;br /&gt;&lt;span style="color:red"&gt;Object reference not set to an instance.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Also break point was not hitting the Feature Receiver code while debugging.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;Few things I tried before I found the real cause.&lt;br /&gt;&lt;br /&gt;1. Commented the code and tried, still same error&lt;br /&gt;&lt;br /&gt;2. Removed the Element manifest and tried, still same error&lt;br /&gt;&lt;br /&gt;3. Checked the feature dependency. This was the culprit. Remove feature dependency resolved the issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-8205307525008604625?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/xWPgn7bxUOs/sharepoint-error-activating-feature.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2012/01/sharepoint-error-activating-feature.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-4806898640010284303</guid><pubDate>Sun, 15 Jan 2012 14:58:00 +0000</pubDate><atom:updated>2012-01-15T10:08:04.415-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">Tips</category><category domain="http://www.blogger.com/atom/ns#">Reports</category><title>Microsoft.Reporting.WebForms.ReportViewer is not compatible</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;While integrating ReportViewer 10.0.0.0 with SP2010 I faced an old issue&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red" &gt;The base class includes the field 'ReportViewer1', but its type (Microsoft.Reporting.WebForms.ReportViewer) is not compatible with the type of control (Microsoft.Reporting.WebForms.ReportViewer).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As I hate to get into same problem again. Here's a list of things I tried to make it work.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;To understand the issue its a version mismatch issue. Check what's the latest version of ReportViewer ( Microsoft.Reporting.WebForms.dll) you have. On SP2010, its 10.0.0.0&lt;br /&gt;&lt;br /&gt;If you are using any lower version i.e. 8.0.0.0 or 9.0.0.0 then you need to update it all places to avoid this.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;br /&gt;1. Check to make sure you don't have @Register directive pointing to old version. This you can do by searching '9.0.0.0' or '8.0.0.0' in complete project.&lt;br /&gt;&lt;br /&gt;2. Clean the VS2010 solution and rebuild&lt;br /&gt;&lt;br /&gt;3. Remove binary reference from Visual Studio project and add it again. Try Building it again&lt;br /&gt;&lt;br /&gt;4. Check web.config to find you don't have entries pointing to old versions.&lt;br /&gt;&lt;br /&gt;5. Sometime closing Project and opening it again helps&lt;br /&gt;&lt;br /&gt;6. IISReset to ensure there are no caching issues with old versions&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-4806898640010284303?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/-FN_1DbbcTk/microsoftreportingwebformsreportviewer.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2012/01/microsoftreportingwebformsreportviewer.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-7801516377319328842</guid><pubDate>Sat, 14 Jan 2012 14:31:00 +0000</pubDate><atom:updated>2012-01-16T04:39:32.253-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tips</category><category domain="http://www.blogger.com/atom/ns#">Webpart</category><category domain="http://www.blogger.com/atom/ns#">Sharepoint 2010</category><category domain="http://www.blogger.com/atom/ns#">Look and Feel</category><title>SharePoint TextArea Auto resize</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;Client wanted to have all the multi-line text-boxes to adjust width automatically like Facebook.&lt;br /&gt;&lt;br /&gt;And I love SharePoint for its great flexibility where you can use all great jQuery plugin's of the world within SharePoint ( with small tweaks )&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;I have used the Elastic project , jQuery plugin.&lt;br /&gt;You can download files here &lt;a href='http://www.unwrongest.com/projects/elastic/'&gt;Elastic&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code:&lt;/strong&gt;&lt;br /&gt;&lt;pre name="code" class="html"&gt;&amp;lt;script type="text/javascript" src="/_layouts/ClientFolder/jquery-1.7.1.min.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="/_layouts/ClientFolder/jquery.elastic.source.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&amp;gt;&lt;br /&gt;    _spBodyOnLoadFunctionNames.push("AdjustTextArea");&lt;br /&gt;&lt;br /&gt;    function AdjustTextArea() {&lt;br /&gt;&lt;br /&gt;        jQuery.noConflict();&lt;br /&gt;&lt;br /&gt;        jQuery('textarea').elastic();&lt;br /&gt;        jQuery('textarea').trigger('update');&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:TextBox ID="txtComments" runat="server" TextMode="MultiLine" Rows="6" Width="100%" /&amp;gt;&lt;/pre&gt;&lt;strong&gt;Found a Bug:&lt;/strong&gt;&lt;br /&gt;As I was trying to use it with SP2010, I applied a CssClass="ms-long" and got a weird behavior of text box restricting to show only 29-30 lines. So removed it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-7801516377319328842?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/FBcVbYoEwXU/sharepoint-textarea-auto-resize.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2012/01/sharepoint-textarea-auto-resize.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-3082457986815787313</guid><pubDate>Thu, 05 Jan 2012 01:23:00 +0000</pubDate><atom:updated>2012-01-04T20:35:10.879-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Issue</category><category domain="http://www.blogger.com/atom/ns#">Configuration</category><category domain="http://www.blogger.com/atom/ns#">Bug</category><category domain="http://www.blogger.com/atom/ns#">Sharepoint 2010</category><title>SharePoint Issues with HTML files</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;I have migrated few HTML files from MOSS Document Libraries to SP2010 Document Libraries. On click of these HTML files , I am getting a download file prompt.&lt;br /&gt;&lt;br /&gt;In MOSS , there is no such issue. Click HTML file renders the file.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reason:&lt;/strong&gt;&lt;br /&gt;SP2010 has restrictions on displaying or opening some files. This was not the case in MOSS 2007.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solutions:&lt;/strong&gt;&lt;br /&gt;Revisit HTML files and try converting them to ASPX pages. This is highly recommended.&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;From Central administration &gt; Web Application General Settings &gt; Check the "Browser File Handling" to "Permissive" for that web application. This does open some holes. Recommended only in intranet type scenario's.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Article:&lt;/strong&gt;&lt;br /&gt;&lt;a href='http://www.pdfsharepoint.com/sharepoint-2010-and-pdf-integration-series-part-1/' &gt; Understand permissive option&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-3082457986815787313?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/Y5jMyy63GUg/sharepoint-issues-with-html-files.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>1</thr:total><feedburner:origLink>http://snahta.blogspot.com/2012/01/sharepoint-issues-with-html-files.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-646056485262428522</guid><pubDate>Thu, 05 Jan 2012 01:07:00 +0000</pubDate><atom:updated>2012-01-04T20:14:50.536-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Bug</category><category domain="http://www.blogger.com/atom/ns#">Sharepoint Designer</category><title>Sharepoint workflow changes missing</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;Recently I developed a Sharepoint designer workflow and it worked fine, now after few days i made small changes to it but it didn't apply the changes in the site collection.&lt;br /&gt;&lt;br /&gt;1. Opening WF in SharePoint Designer shows all the new changes &lt;br /&gt;2. Workflow was published without any errors&lt;br /&gt;3. Tried creating new items and ran WF but still see the missing changes&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;After searching about this issue, I found some valuable information&lt;br /&gt; &lt;br /&gt;http://blogs.msdn.com/sharepointdesigner/archive/2007/03/27/tip-clearing-the-spd-workflow-assembly-cache.aspx&lt;br /&gt;&lt;br /&gt;If you are building a workflow activity on WSS/SharePoint Foundation for SPD you may have to update your activity DLL regularly (say to fix bugs or alter behaviors).  Sometimes when you do this, SPD won't recognize your changes to the activity and instead appear to be using the 'old' DLL.  Depending on what you've changed in the activity on the server, SPD may not allow you to use this activity at all.  This is due to a mismatch between the server's activity and the SPD client's cached activity.  To fix this problem its a good idea to clear your SPD activity cache whenever you update your activities DLL on the server.&lt;br /&gt;&lt;br /&gt;To clear the SPD activity cache:&lt;br /&gt;&lt;br /&gt;1. Close SPD.&lt;br /&gt;&lt;br /&gt;2. Open "My Computer".&lt;br /&gt;&lt;br /&gt;3. Go to %System Drive%\Documents and Settings\%user%\Local Settings\Application Data\Microsoft\WebSiteCache (If you are running Vista, that path is different - look for %System Drive%\Users\%user%\AppData\Local\Microsoft\WebSiteCache).&lt;br /&gt;&lt;br /&gt;4. Go to a directory that looks similar to the name of the website you were connecting to. (Alternatively, you can just delete all these directories and everything should work when you boot SPD).&lt;br /&gt;&lt;br /&gt;5. Delete the assembly with the name similar to the one you are changing.&lt;br /&gt;&lt;br /&gt;6. Boot SPD.&lt;br /&gt;&lt;br /&gt;7. You can now work with your updated activity. Once done publish to see the new changes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-646056485262428522?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/dBRFEsua9Rk/sharepoint-workflow-changes-missing.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2012/01/sharepoint-workflow-changes-missing.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-6442304565703050788</guid><pubDate>Mon, 12 Dec 2011 15:55:00 +0000</pubDate><atom:updated>2011-12-16T14:04:31.144-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Search</category><category domain="http://www.blogger.com/atom/ns#">Deployment</category><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">Powershell</category><title>Powershell and search metadata properties</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;While working with one of client we created a quick script for creating / recreating metadata properties for search. Thought of sharing :)&lt;br /&gt;&lt;br /&gt;This script will drop exiting property with same name [ if exist ] and create it again. Also I have provided samples of different field types. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code:&lt;/strong&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;#####################################################################&lt;br /&gt;# Main Function&lt;br /&gt;#####################################################################&lt;br /&gt;&lt;br /&gt;function PromptUser {param($message)&lt;br /&gt;&lt;br /&gt;write-host -f Red $message&lt;br /&gt;&lt;br /&gt;write-host -f Red "Press enter to continue ... and N to exit"&lt;br /&gt;&lt;br /&gt;$keyentered = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")&lt;br /&gt;&lt;br /&gt; If ($keyentered.VirtualKeyCode -eq 78)&lt;br /&gt; {&lt;br /&gt;  exit&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function DropMetadataProperties {param ($ServiceApplicationName, $MetadataPropertyName)&lt;br /&gt;&lt;br /&gt; $category = Get-SPEnterpriseSearchMetadataCategory –Identity "Business Data" -SearchApplication $searchapp&lt;br /&gt;&lt;br /&gt; If (Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity  $MetadataPropertyName -ea "silentlycontinue") &lt;br /&gt; {&lt;br /&gt;  write-host -f Green "MetaProperty already exists, we delete it so it can be reacreated."&lt;br /&gt;  $prop = Get-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Identity $MetadataPropertyName&lt;br /&gt;  $prop.DeleteAllMappings()&lt;br /&gt;  $prop.Delete()&lt;br /&gt;  $searchapp.Update()&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; if (!$?)&lt;br /&gt; {&lt;br /&gt;  PromptUser("An error has occurred")&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function CreateMetadataProperties {param ( $ServiceApplicationName, $MetadataPropertyName, $CrawledProperty, $VariantType, $Type, $HasMultipleValues, $IsSortable)&lt;br /&gt;&lt;br /&gt; $category = Get-SPEnterpriseSearchMetadataCategory –Identity "Business Data" -SearchApplication $searchapp&lt;br /&gt;&lt;br /&gt; $crawledproperty = Get-SPEnterpriseSearchMetadataCrawledProperty -SearchApplication $searchapp -Category $category -VariantType $VariantType -Name $CrawledProperty&lt;br /&gt; If (!($crawledproperty -eq $null))&lt;br /&gt; {&lt;br /&gt;  $managedproperty = New-SPEnterpriseSearchMetadataManagedProperty -SearchApplication $searchapp -Name $MetadataPropertyName -Type $Type&lt;br /&gt;&lt;br /&gt;  If ($IsSortable -eq $True)&lt;br /&gt;  {  &lt;br /&gt;   $managedproperty.MaxCharactersInPropertyStoreIndex = 64&lt;br /&gt;   $managedproperty.Update()&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  If ($HasMultipleValues -eq $True)&lt;br /&gt;  {  &lt;br /&gt;   $managedproperty.HasMultipleValues = $true &lt;br /&gt;   $managedproperty.Update()&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  New-SPEnterpriseSearchMetadataMapping -SearchApplication $searchapp -ManagedProperty $managedproperty -CrawledProperty $crawledproperty&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt;  write-host -f Red "Crawl property is missing, you might need to recrawl your content source to get it."&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; if (!$?)&lt;br /&gt; {&lt;br /&gt;  PromptUser("An error has occurred")&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;###################################################################################&lt;br /&gt;# Drop metadata properties&lt;br /&gt;###################################################################################&lt;br /&gt;&lt;br /&gt;$searchapp = Get-SPEnterpriseSearchServiceApplication&lt;br /&gt;if (!$?)&lt;br /&gt;{&lt;br /&gt; PromptUser("Could not find a valid Search Service Application.")&lt;br /&gt; EXIT&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$searchAppName =  $searchapp.Name&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Client Metadata properties&lt;br /&gt;DropMetadataProperties $searchAppName "xxClientName"&lt;br /&gt;&lt;br /&gt;###################################################################################&lt;br /&gt;# Create metadata properties&lt;br /&gt;###################################################################################&lt;br /&gt;&lt;br /&gt;# VariantType = (31 for string , 20 for integer , 11 for boolean , 64 for datetime )&lt;br /&gt;# Type = (1 for string , 2 for integer , 5 for Yes/No , 4 for datetime )&lt;br /&gt;&lt;br /&gt;### Text Field&lt;br /&gt;DropMetadataProperties $searchAppName "xxClientName"&lt;br /&gt;CreateMetadataProperties $searchAppName "xxClientName" "Client.ClientName" 31 1 $False $True&lt;br /&gt;&lt;br /&gt;### Integer Field&lt;br /&gt;DropMetadataProperties $searchAppName "xxClientID" &lt;br /&gt;CreateMetadataProperties $searchAppName "xxClientID" "Clients.ClientID" 20 2 $False $False&lt;br /&gt;&lt;br /&gt;### YES/No Field&lt;br /&gt;DropMetadataProperties $searchAppName "xxIsActive" &lt;br /&gt;CreateMetadataProperties $searchAppName "xxIsActive" "Clients.IsActive" 11 5 $False $False&lt;br /&gt;&lt;br /&gt;### Date Field&lt;br /&gt;DropMetadataProperties $searchAppName "xxEndDate" &lt;br /&gt;CreateMetadataProperties $searchAppName "xxEndDate" "Clients.EndDate" 64 4 $False $False&lt;/pre&gt;Please do leave comments on if it worked for you or any suggestion to improve it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-6442304565703050788?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/SCpQf2Kizyw/powershell-and-search-metadata.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>1</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/12/powershell-and-search-metadata.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-4443817433258916629</guid><pubDate>Fri, 09 Dec 2011 09:25:00 +0000</pubDate><atom:updated>2011-12-09T04:34:54.061-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Event Handler</category><category domain="http://www.blogger.com/atom/ns#">Code</category><title>Blocking updates for document library</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;For one of the new requirement we needed to block all updates to documents in document library&lt;br /&gt;&lt;br /&gt;1. User should able to upload a new document&lt;br /&gt;2. User should not be able to upload a document with the same file name as existing document&lt;br /&gt;3. User should not be able to edit metadata once it has been entered.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;Simple event receiver did the trick but as always with some learning / gotta's.&lt;br /&gt;&lt;br /&gt;Assuming 2 different situations&lt;br /&gt;1. Simple document library with no extra metadata columns : In this we will need ItemAdded event to update the event once.&lt;br /&gt;&lt;br /&gt;2. Document library with extra properties : We dont need ItemAdded event and code can be commented.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code:&lt;/strong&gt;&lt;pre name="code" class="csharp"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;using Microsoft.SharePoint;&lt;br /&gt;&lt;br /&gt;namespace SKN&lt;br /&gt;{&lt;br /&gt;    class EventHandler1 : SPItemEventReceiver&lt;br /&gt;    {   &lt;br /&gt;        public override void ItemAdded (SPItemEventProperties properties)&lt;br /&gt;        {&lt;br /&gt;            base.ItemAdded(properties);&lt;br /&gt;&lt;br /&gt;            //DisableEventFiring();&lt;br /&gt;            //properties.ListItem.Update();&lt;br /&gt;            //EnableEventFiring();&lt;br /&gt;        }    &lt;br /&gt;&lt;br /&gt;        public override void ItemUpdating (SPItemEventProperties properties)&lt;br /&gt;        {&lt;br /&gt;            base.ItemUpdating(properties);&lt;br /&gt;&lt;br /&gt;            if (!string.Equals(properties.ListItem["Created"], properties.ListItem["Modified"]))&lt;br /&gt;            {&lt;br /&gt;                properties.Cancel = true;&lt;br /&gt;                properties.ErrorMessage = "no update";&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-4443817433258916629?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/EWi8PELybpE/blocking-updates-for-document-library.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/12/blocking-updates-for-document-library.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-9038061825262507503</guid><pubDate>Sun, 04 Dec 2011 17:17:00 +0000</pubDate><atom:updated>2011-12-04T12:39:53.131-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tips</category><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">Code</category><title>SharePoint reading version programatically</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;Recently doing a new project we needed to display version information of a list but we decided to make it more generic to support both document library and lists. There were lot of learning , I would say.. so I thought of sharing as always&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lesson Learned:&lt;/strong&gt;&lt;br /&gt;1. List version information + current version information can easily be retrieved using 'SPListItemVersionCollection' class&lt;br /&gt;&lt;br /&gt;2. List version doesn't support version comment&lt;br /&gt;&lt;br /&gt;3. SPListItemVersionCollection class is sorted by version number &lt;br /&gt;&lt;br /&gt;4. Library version information can retrieved using 'SPFileVersionCollection' class but this will not return current version information.&lt;br /&gt;&lt;br /&gt;5. Library version does support a version comment if same name file is uploaded. No comment is supported if 'Edit Properties' feature is used.&lt;br /&gt;&lt;br /&gt;6. For Library , SPFileVersionCollection class is not guaranteed to be sorted by version number. So additional headache need to be taken to sort them. &lt;br /&gt;&lt;br /&gt;7. For Library , Title column  information/changes are stored in "vti_title" column. &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;About Helper Class Code:&lt;/strong&gt;&lt;br /&gt;Helper class below supports &lt;br /&gt;&lt;br /&gt;1. Retrieving versions information for list/library&lt;br /&gt;&lt;br /&gt;2. Retrieving all the changes for one particular field only&lt;br /&gt;&lt;br /&gt;3. Support returning all versions / only versions which have changes for a particular field.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Helper Class Code:&lt;/strong&gt;&lt;pre name="code" class="csharp"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Web;&lt;br /&gt;using Microsoft.SharePoint;&lt;br /&gt;using Microsoft.SharePoint.Utilities;&lt;br /&gt;&lt;br /&gt;namespace SKN&lt;br /&gt;{&lt;br /&gt;    public static class SharePointHelper&lt;br /&gt;    {       &lt;br /&gt;        /// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// Adds columns to the table.&lt;br /&gt;        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="dtVersions"&amp;gt;Version History Columns.&amp;lt;/param&amp;gt;&lt;br /&gt;        public static void AddColumns (DataTable dtVersions)&lt;br /&gt;        {&lt;br /&gt;            dtVersions.Columns.Add("Source");&lt;br /&gt;            dtVersions.Columns.Add("Item");&lt;br /&gt;            dtVersions.Columns.Add("ColumnOldValue");&lt;br /&gt;            dtVersions.Columns.Add("ColumnValue");&lt;br /&gt;&lt;br /&gt;            dtVersions.Columns.Add("Version");&lt;br /&gt;            dtVersions.Columns.Add("Modified");&lt;br /&gt;            dtVersions.Columns.Add("Modified By");&lt;br /&gt;            dtVersions.Columns.Add("Comments");&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        /// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// Redirection method for list\library&lt;br /&gt;        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="dtVersions"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="web"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="listName"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="fieldName"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="showOnlyChanges"&amp;gt;Show only rows which have changes&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        public static DataTable GetAllVersions (SPWeb web, string listName, string fieldName, bool showOnlyChanges)&lt;br /&gt;        {&lt;br /&gt;            DataTable dtVersions = new DataTable();&lt;br /&gt;            AddColumns(dtVersions);&lt;br /&gt;&lt;br /&gt;            SPList spList = web.Lists[listName];&lt;br /&gt;            {&lt;br /&gt;                if (spList.BaseTemplate == SPListTemplateType.DocumentLibrary)&lt;br /&gt;                {&lt;br /&gt;                    return GetAllLibraryVersions(dtVersions, web, listName, fieldName, showOnlyChanges);&lt;br /&gt;                }&lt;br /&gt;                else&lt;br /&gt;                {&lt;br /&gt;                    return GetAllListVersions(dtVersions, web, listName, fieldName, showOnlyChanges);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        /// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// Show all versions of a list&lt;br /&gt;        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="dtVersions"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="web"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="listName"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="columnName"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="showOnlyChanges"&amp;gt;Show only rows which have changes&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        public static DataTable GetAllListVersions (DataTable dtVersions, SPWeb web, string listName, string columnName, bool showOnlyChanges)&lt;br /&gt;        {&lt;br /&gt;            SPList spList = web.Lists[listName];&lt;br /&gt;            SPListItemCollection listItemColl = spList.Items;&lt;br /&gt;            &lt;br /&gt;            // for each item&lt;br /&gt;            foreach (SPListItem listItem in listItemColl)&lt;br /&gt;            {&lt;br /&gt;                string columnOldValue = "NULL";&lt;br /&gt;                bool relavantRow = true;&lt;br /&gt;&lt;br /&gt;                SPListItemVersionCollection versionColl = listItem.Versions;&lt;br /&gt;                for (int i = versionColl.Count - 1; i &amp;gt;= 0; i--)&lt;br /&gt;                {&lt;br /&gt;                    try&lt;br /&gt;                    {&lt;br /&gt;                        DataRow dr = dtVersions.NewRow();&lt;br /&gt;                        dr["Source"] = listName;&lt;br /&gt;                        dr["Item"] = listItem.Title;&lt;br /&gt;&lt;br /&gt;                        dr["Version"] = versionColl[i].VersionLabel;&lt;br /&gt;                        dr["Modified By"] = versionColl[i].CreatedBy.User.Name;&lt;br /&gt;                        dr["Modified"] = GetDateDisplay(web, versionColl[i].Created);&lt;br /&gt;                        &lt;br /&gt;                        dr["Comments"] = string.Empty;&lt;br /&gt;&lt;br /&gt;                        dr["ColumnOldValue"] = columnOldValue;&lt;br /&gt;&lt;br /&gt;                        if (null != versionColl[i][columnName])&lt;br /&gt;                        {&lt;br /&gt;                            dr["ColumnValue"] = versionColl[i][columnName];&lt;br /&gt;                        }&lt;br /&gt;                        else&lt;br /&gt;                        {&lt;br /&gt;                            dr["ColumnValue"] = "NULL";&lt;br /&gt;                        }&lt;br /&gt;                        if (showOnlyChanges)&lt;br /&gt;                        {&lt;br /&gt;                            relavantRow = !string.Equals(columnOldValue, dr["ColumnValue"].ToString(), StringComparison.InvariantCultureIgnoreCase);&lt;br /&gt;                        }&lt;br /&gt;                        columnOldValue = dr["ColumnValue"].ToString();&lt;br /&gt;&lt;br /&gt;                        if (relavantRow)&lt;br /&gt;                        {&lt;br /&gt;                            dtVersions.Rows.InsertAt(dr, 0);&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    catch&lt;br /&gt;                    {&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return dtVersions;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        /// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// Show all versions of a document library&lt;br /&gt;        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="dtVersions"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="web"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="listName"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="columnName"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="showOnlyChanges"&amp;gt;Show only rows which have changes&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        public static DataTable GetAllLibraryVersions (DataTable dtVersions, SPWeb web, string listName, string columnName, bool showOnlyChanges)&lt;br /&gt;        {&lt;br /&gt;            SPList spList = web.Lists[listName];&lt;br /&gt;            SPListItemCollection listItemColl = spList.Items;            &lt;br /&gt;&lt;br /&gt;            foreach (SPListItem doc in listItemColl)&lt;br /&gt;            {&lt;br /&gt;                string columnOldValue = "NULL";&lt;br /&gt;                bool relavantRow = true;&lt;br /&gt;                string updatedColumnName = columnName;&lt;br /&gt;&lt;br /&gt;                if (columnName.Equals("Title"))&lt;br /&gt;                {&lt;br /&gt;                    updatedColumnName = "vti_title";&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                SPFileVersionCollection versionColl = doc.File.Versions;&lt;br /&gt;                Dictionary&amp;lt;int, string&amp;gt; myDict = new Dictionary&amp;lt;int, string&amp;gt;();&lt;br /&gt;            &lt;br /&gt;                for (int i = 0; i &amp;lt; versionColl.Count; i++)&lt;br /&gt;                {&lt;br /&gt;                    myDict.Add(i,versionColl[i].VersionLabel);                &lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                var sortedDict = (from entry in myDict orderby entry.Value ascending select entry).ToDictionary(pair =&amp;gt; pair.Key, pair =&amp;gt; pair.Value);&lt;br /&gt;&lt;br /&gt;                foreach(var k in  sortedDict)&lt;br /&gt;                {&lt;br /&gt;                    try&lt;br /&gt;                    {&lt;br /&gt;                        DataRow dr = dtVersions.NewRow();&lt;br /&gt;                        dr["Source"] = doc.File.ParentFolder;&lt;br /&gt;                        dr["Item"] = doc.File.Name;&lt;br /&gt;                        dr["Version"] = versionColl[k.Key].VersionLabel;&lt;br /&gt;                        dr["Modified By"] = versionColl[k.Key].Properties["vti_modifiedby"];&lt;br /&gt;                        dr["Modified"] = GetDateDisplay(web, versionColl[k.Key].Properties["vti_timelastmodified"]); &lt;br /&gt;                        &lt;br /&gt;                        dr["ColumnOldValue"] = columnOldValue;&lt;br /&gt;&lt;br /&gt;                        if (null != versionColl[k.Key].Properties[updatedColumnName])&lt;br /&gt;                        {&lt;br /&gt;                            dr["ColumnValue"] = versionColl[k.Key].Properties[updatedColumnName].ToString();&lt;br /&gt;                        }&lt;br /&gt;                        else&lt;br /&gt;                        {&lt;br /&gt;                            dr["ColumnValue"] = "NULL";&lt;br /&gt;                        }&lt;br /&gt;&lt;br /&gt;                        if (showOnlyChanges)&lt;br /&gt;                        {&lt;br /&gt;                            relavantRow = !string.Equals(columnOldValue, dr["ColumnValue"].ToString(), StringComparison.InvariantCultureIgnoreCase);&lt;br /&gt;                        }&lt;br /&gt;&lt;br /&gt;                        columnOldValue = dr["ColumnValue"].ToString();&lt;br /&gt;&lt;br /&gt;                        if (null != versionColl[k.Key].Properties["vti_sourcecontrolcheckincomment"])&lt;br /&gt;                        {&lt;br /&gt;                            dr["Comments"] = versionColl[k.Key].Properties["vti_sourcecontrolcheckincomment"];&lt;br /&gt;                        }&lt;br /&gt;&lt;br /&gt;                        if (relavantRow)&lt;br /&gt;                        {&lt;br /&gt;                            dtVersions.Rows.InsertAt(dr, 0);&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;                    catch&lt;br /&gt;                    {&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                DataRow drLatestVersion = dtVersions.NewRow();&lt;br /&gt;                drLatestVersion["Source"] = doc.File.ParentFolder;&lt;br /&gt;                drLatestVersion["Item"] = doc.File.Name;&lt;br /&gt;                drLatestVersion["Modified By"] = doc.File.ModifiedBy;&lt;br /&gt;                drLatestVersion["Modified"] = DateTime.Parse(doc["Modified"].ToString()).GetDateTimeFormats()[43];&lt;br /&gt;&lt;br /&gt;                if (null != doc["Version"])&lt;br /&gt;                {&lt;br /&gt;                    drLatestVersion["Version"] = doc["Version"];&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                if (null != doc["_CheckinComment"])&lt;br /&gt;                {&lt;br /&gt;                    drLatestVersion["Comments"] = doc["_CheckinComment"].ToString().Split('#')[1];&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                // Old Value from stored variable&lt;br /&gt;                drLatestVersion["ColumnOldValue"] = columnOldValue;&lt;br /&gt;&lt;br /&gt;                // Checking for new value &lt;br /&gt;                if (null != doc[columnName])&lt;br /&gt;                {&lt;br /&gt;                    drLatestVersion["ColumnValue"] = doc[columnName].ToString();&lt;br /&gt;                }&lt;br /&gt;                else&lt;br /&gt;                {&lt;br /&gt;                    drLatestVersion["ColumnValue"] = "NULL";&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                if (showOnlyChanges )&lt;br /&gt;                {&lt;br /&gt;                    relavantRow = !string.Equals(columnOldValue, drLatestVersion["ColumnValue"].ToString(), StringComparison.InvariantCultureIgnoreCase);&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;                columnOldValue = drLatestVersion["ColumnValue"].ToString();&lt;br /&gt;&lt;br /&gt;                if (relavantRow)&lt;br /&gt;                {&lt;br /&gt;                    dtVersions.Rows.InsertAt(drLatestVersion, 0);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return dtVersions;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static string GetDateDisplay (SPWeb web, object p)&lt;br /&gt;        {&lt;br /&gt;            return SPUtility.FormatDate(web, DateTime.Parse(p.ToString()), SPDateFormat.DateTime).ToString();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-9038061825262507503?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/gFfyH66SnL8/sharepoint-reading-version.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/12/sharepoint-reading-version.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-6339148261045688528</guid><pubDate>Wed, 16 Nov 2011 11:54:00 +0000</pubDate><atom:updated>2011-11-16T07:01:05.315-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">SilverLight</category><category domain="http://www.blogger.com/atom/ns#">Tips</category><title>Microsoft.Silverlight.CSharp.targets was not found</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;Opened an old silverlight project and got following error.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red" &gt;The imported project "C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.CSharp.targets" was not found. Confirm that the path in the &amp;lt;import&amp;gt; declaration is correct, and that the file exists on disk.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;1. Download &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=18149"&gt;Silverlight4_Tools&lt;/a&gt; from MS Web site and install it &lt;br /&gt;&lt;br /&gt;2. Close VS 2010 and start again to load the project&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-6339148261045688528?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/0VQtGA9J96E/microsoftsilverlightcsharptargets-was.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>2</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/11/microsoftsilverlightcsharptargets-was.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-100473500268014586</guid><pubDate>Wed, 16 Nov 2011 11:08:00 +0000</pubDate><atom:updated>2011-12-16T14:37:54.378-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">Issue</category><title>SharePoint sending email to random people</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;I have noticed a small data corruption in out farm. SharePoint is sending email to random people in some cases. &lt;br /&gt;&lt;br /&gt;Steps to reproduce&lt;br /&gt;&lt;br /&gt;1. Create a new task list&lt;br /&gt;2. Edit the "Assigned To" to support multiple users ( By default only one user can be assigned a particular task )&lt;br /&gt;3. Create a new task – Now assign say User 1 , User 2 &lt;br /&gt;4. Email will be sent to both the users&lt;br /&gt;5. Edit the task and change the assign to say User1,User 3&lt;br /&gt;6. When you inspected the email received by User1/User 3 , it has some random names also &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;MS recommend one hotfix described by KB 948945, or a later cumulative update or SP.  In the meantime, the defined workaround is:&lt;br /&gt;&lt;br /&gt;Turn off the multiple selection option &lt;br /&gt;Or &lt;br /&gt;Install the hotfix from Microsoft.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;KB article description:&lt;/strong&gt;&lt;br /&gt;On a SharePoint Server 2007 site, you modify a task in a task list. When you do this, users other than the users who are assigned to the task receive the notification e-mail message for the change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-100473500268014586?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/qoUr2drBfFE/sharepoint-sending-email-to-random.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/11/sharepoint-sending-email-to-random.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-2749930130020032173</guid><pubDate>Tue, 15 Nov 2011 03:44:00 +0000</pubDate><atom:updated>2011-11-14T23:15:23.165-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tips</category><category domain="http://www.blogger.com/atom/ns#">Checklist</category><title>Validating sharepoint site server down</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;We work with an external environment and once in a while it goes down. As we don't really have access to login we inform our admin's to help us regain access. &lt;br /&gt;&lt;br /&gt;But it can be a false positive also. So here's are quick steps before we conclude site is really down / in-accessible.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Check for home page [ if 404/broken, try next step ]&lt;br /&gt;   http://intranet.contoso.com/SitePages/Home.aspx&lt;br /&gt;&lt;br /&gt;2. Check for any layouts page in the site collection [ if 404/broken, try next step ]&lt;br /&gt;   http://intranet.contoso.com/_layouts/settings.aspx&lt;br /&gt;&lt;br /&gt;3. Check for Site Pages library if team site [ if 404/broken, try next step ]&lt;br /&gt;   http://intranet.contoso.com/SitePages/Forms/AllPages.aspx&lt;br /&gt;   &lt;br /&gt;   3a. If you can see all pages validate Entry page exist with no issues&lt;br /&gt;&lt;br /&gt;4. Check for Pages library if publishing site [ if 404/broken, try next step ] &lt;br /&gt;   http://intranet.contoso.com/Pages/Forms/AllPages.aspx&lt;br /&gt;&lt;br /&gt;   4a. If you can see all pages validate Entry page exist with no issues&lt;br /&gt;&lt;br /&gt;5. If you had access to any other site collection / web application. Try steps 1-4 for new url.&lt;br /&gt;&lt;br /&gt;6. Ping the box to make sure server itself is not down.&lt;br /&gt;&lt;br /&gt;Other things to keep in mind : &lt;br /&gt;&lt;br /&gt;Usually any page marked as Home Page can't be deleted. But just in case you see it missing. Check Recycle bin once to validate if page is not deleted by some one.&lt;br /&gt;http://intranet.contoso.com/_layouts/recyclebin.aspx&lt;br /&gt;&lt;br /&gt;In case page is accessible but broken with weird error and if you have owner rights, you can look into webpart maintenance page to get some insite &lt;br /&gt;http://intranet.contoso.com/SitePages/Home.aspx?contents=1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-2749930130020032173?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/Ltw6VJGBvoc/validating-sharepoint-site-server-down.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/11/validating-sharepoint-site-server-down.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-5095848199482021089</guid><pubDate>Tue, 08 Nov 2011 07:13:00 +0000</pubDate><atom:updated>2011-11-08T02:19:13.473-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code</category><title>SP2010 : Validating file name before uploading in code</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;I wrote another blog post &lt;a href='http://snahta.blogspot.com/2009/01/file-name-and-folder-name-restriction.html'&gt;file name and folder name restriction&lt;/a&gt; in sharepoint.&lt;br /&gt;&lt;br /&gt;and how can you clean a file name &lt;a href='http://snahta.blogspot.com/2009/06/cleaning-up-file-names-for-uploading-to.html'&gt;cleaning-up-file-names-for-uploading&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With a new client we had similar requirement and I discovered a new way to validate filename in SP2010. Also there are many other helpful methods.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;pre name="code" class="csharp"&gt;SPUrlUtility.IsLegalFileName(filename);&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-5095848199482021089?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/o-qLyWS_DPE/sp2010-validating-file-name-before.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/11/sp2010-validating-file-name-before.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-110892214466895585</guid><pubDate>Mon, 31 Oct 2011 17:13:00 +0000</pubDate><atom:updated>2011-12-16T14:20:03.515-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Tips</category><category domain="http://www.blogger.com/atom/ns#">Checklist</category><category domain="http://www.blogger.com/atom/ns#">Integration</category><title>Data loading from excel to list - lesson learnt</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;Client wanted to move his data from old system to SharePoint lists. We didn't have direct access to the external system but administrator was able to dump all the information in Excel sheet. So we were suppose to load that in SP Lists.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Lesson Learnt:&lt;/strong&gt;&lt;br /&gt;Excel is very powerful as it provides filtering , bulk edit , pivot and many more features. So massage the data in excel as much as you can before you attempt to load it to SharePoint.&lt;br /&gt;&lt;br /&gt;On the other side we had DataSheet View which is almost excel , so copying multiple records is easier that way.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Create a mapping document as it will be helpful to identify columns in excel &gt; columns in SP List &lt;br /&gt;&lt;br /&gt;2. Identify any missing columns&lt;br /&gt;&lt;br /&gt;3. Identify required fields in SP List and using excel filter make sure that column doesn't contain Blank / None values&lt;br /&gt;&lt;br /&gt;4. Visit List setting &gt; column setting to check default values of columns. While copying SharePoint will assign Default value to these columns , which you may not like. &lt;br /&gt;&lt;br /&gt;5. Create a datasheet view with columns in same sequence ( Left to Right ) as they are in excel. This will be helpful in copying data quickly.&lt;br /&gt;&lt;br /&gt;6. Text Columns - Usually its easy to copy data but make sure length of text is max. 255 &lt;br /&gt;&lt;br /&gt;7. Choice Columns ( Single Selection )- This is tricky. Either have all the possible choices pre-configured , other wise data will not be copied properly. Other option which I will recommend is to have a text column and copy over data into it. Once done , convert text column to Choice Column&lt;br /&gt;&lt;br /&gt;8. Choice Columns ( Multi-Selection ) - SharePoint uses '#;' as separator for multi-select values + Another issue is it doesn't like separator if there is only one option selected. So make sure you have proper text in excel before you attempt to copy.&lt;br /&gt;&lt;br /&gt;9. Lookup Columns ( Single Selection )- This is tricky. Either have all the possible option in look-up list , other wise data will not be copied properly. &lt;br /&gt;&lt;br /&gt;10. Lookup Columns ( Multi-Selection ) - SharePoint uses '#;' as separator for multi-select values. So make sure you have proper text in excel before you attempt to copy.&lt;br /&gt;&lt;br /&gt;11. Yes / No Columns - Make sure that you dont have 'None'/NA etc in source excel for this columns. Yes / No / Blank are only allowed values.&lt;br /&gt;&lt;br /&gt;12. We had 20+ columns and 10,000+ rows. Moving all the data in one shot was not possible because of clipboard limitations and other issues. I will recommend copying 1 column fully &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Validations:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. You can check item count from 'View All Content' , each list will show list of items. &lt;br /&gt;&lt;br /&gt;2. If you have some Choice column / Look-up Column, you can export the SharePoint list in excel and do a pivot to see same number of item exist in original excel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-110892214466895585?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/s1kK4TyF4mc/data-loading-from-excel-to-list-lesson.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/10/data-loading-from-excel-to-list-lesson.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-7293289178268536383</guid><pubDate>Mon, 31 Oct 2011 16:32:00 +0000</pubDate><atom:updated>2011-12-16T14:25:30.788-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">Deployment</category><category domain="http://www.blogger.com/atom/ns#">Powershell</category><title>Error in Activate Features from Visual Studio</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;I was re-deploying a solution from Visual Studio. My solution had custom Fields / Content Type declarations and was getting deployed to an existing site collection.&lt;br /&gt;&lt;br /&gt;I noticed following errors :&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red"&gt;Error occurred in deployment step 'Activate Features': The field with Id {GUID} defined in feature {GUID} was found in the current site collection or in a subsite.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;OR&lt;br /&gt;&lt;br /&gt;&lt;span style="color:red"&gt;Error occurred in deployment step 'Activate Features': The content type with Id {GUID} defined in feature {GUID} was found in the current site collection or in a subsite.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reason:&lt;/strong&gt;&lt;br /&gt;First of all this is not a problem with Solution. As if you use STSADM / Powershell to deploy and activate features, it will work fine.&lt;br /&gt;&lt;br /&gt;Actually there is something going on with VSSPHost4 process.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;There are 2 solutions to this issue.&lt;br /&gt;&lt;br /&gt;1. Close the Visual Studio and start again :)&lt;br /&gt;&lt;br /&gt;2. Kill VSSPHost4 process. This can be done from SharePoint Powershell Management shell command prompt &lt;pre name="code" class="csharp"&gt;stop-process -processname vssphost4 -force&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-7293289178268536383?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/GAXXK1upwSU/error-in-activate-features-from-visual.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>1</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/10/error-in-activate-features-from-visual.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-9123014082879214064</guid><pubDate>Fri, 30 Sep 2011 06:24:00 +0000</pubDate><atom:updated>2011-09-30T03:07:01.796-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SharePoint</category><category domain="http://www.blogger.com/atom/ns#">Code</category><title>Deleting all items from lists</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;Often during data migration we need to do clean up list data. I had something similar but there were multiple lists and each list with 5000-10000 records.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;Quick console application did the trick of cleaning all the lists.&lt;br /&gt; &gt;&gt; Create a new console application and add reference to Microsoft.SharePoint.dll&lt;br /&gt; &gt;&gt; Use the below code.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code: [ Applies To : WSS3.0 / Sharepoint 2010 Foundation ]&lt;/strong&gt;&lt;pre class="csharp" name="code"&gt;using System;&lt;br /&gt;using Microsoft.SharePoint;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;&lt;br /&gt;namespace SKN.CleanSPLists&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main (string[] args)&lt;br /&gt;        {&lt;br /&gt;            string webUrl = "http://ws2003";&lt;br /&gt;            bool deleteFromRecycleBin = true;&lt;br /&gt;            List&amp;lt;string&amp;gt; listNames = new List&amp;lt;string&amp;gt;();&lt;br /&gt;            listNames.Add("List Title 1");&lt;br /&gt;            listNames.Add("List Title 2");&lt;br /&gt;            listNames.Add("List Title 3");&lt;br /&gt;            listNames.Add("List Title 4");&lt;br /&gt;&lt;br /&gt;            using (SPSite site = new SPSite(webUrl))&lt;br /&gt;            {&lt;br /&gt;                using (SPWeb web = site.OpenWeb())&lt;br /&gt;                {&lt;br /&gt;                    foreach (var listName in listNames)&lt;br /&gt;                    {&lt;br /&gt;                        SPList list = web.Lists[listName];&lt;br /&gt;&lt;br /&gt;                        Console.WriteLine("Purging list: " + list.Title);&lt;br /&gt;                        Console.WriteLine("Base Type: " + list.BaseType.ToString()); &lt;br /&gt;                        &lt;br /&gt;                        StringBuilder sbDelete = BuildBatchDeleteCommand(list);&lt;br /&gt;                        web.ProcessBatchData(sbDelete.ToString());&lt;br /&gt;&lt;br /&gt;                        Console.WriteLine("Done cleaning list : Presss a key to continue with next list."); &lt;br /&gt;Console.WriteLine("");&lt;br /&gt;                        Console.ReadKey();&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;                    if (deleteFromRecycleBin)&lt;br /&gt;                    {&lt;br /&gt;                       Console.WriteLine("Cleaning Recycle bin");&lt;br /&gt;   web.RecycleBin.DeleteAll();&lt;br /&gt;                        site.RecycleBin.DeleteAll();&lt;br /&gt;                      Console.WriteLine("Done cleaning Recycle bin");&lt;br /&gt;                      Console.ReadKey();&lt;br /&gt;                    }                 &lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;        /// &amp;lt;summary&amp;gt;&lt;br /&gt;        /// Builds a batch string with a list of all the items that are to be deleted.&lt;br /&gt;        /// &amp;lt;/summary&amp;gt;&lt;br /&gt;        /// &amp;lt;param name="spList"&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;        /// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;        private static StringBuilder BuildBatchDeleteCommand (SPList spList)&lt;br /&gt;        {&lt;br /&gt;            StringBuilder sbDelete = new StringBuilder();&lt;br /&gt;            sbDelete.Append("&amp;lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&amp;gt;&amp;lt;Batch&amp;gt;");&lt;br /&gt;            string command = "&amp;lt;Method&amp;gt;&amp;lt;SetList Scope=\"Request\"&amp;gt;" + spList.ID +&lt;br /&gt;                "&amp;lt;/SetList&amp;gt;&amp;lt;SetVar Name=\"ID\"&amp;gt;{0}&amp;lt;/SetVar&amp;gt;&amp;lt;SetVar Name=\"Cmd\"&amp;gt;Delete&amp;lt;/SetVar&amp;gt;&amp;lt;/Method&amp;gt;";&lt;br /&gt;&lt;br /&gt;            foreach (SPListItem item in spList.Items)&lt;br /&gt;            {&lt;br /&gt;                sbDelete.Append(string.Format(command, item.ID.ToString()));&lt;br /&gt;            }&lt;br /&gt;            sbDelete.Append("&amp;lt;/Batch&amp;gt;");&lt;br /&gt;            return sbDelete;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;strong&gt;Article:&lt;/strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc404818(v=office.12).aspx"&gt; Batch command&lt;/a&gt; , &lt;a href="http://archive.msdn.microsoft.com/SharePointListDelete"&gt; SP List Delete&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-9123014082879214064?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/QyK0MHMZ8kg/deleting-all-items-from-lists.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>5</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/09/deleting-all-items-from-lists.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-8725097898403075588</guid><pubDate>Sun, 28 Aug 2011 18:32:00 +0000</pubDate><atom:updated>2011-10-31T12:50:13.905-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Ribbon</category><category domain="http://www.blogger.com/atom/ns#">Sharepoint 2010</category><category domain="http://www.blogger.com/atom/ns#">CAML</category><title>Print button for Custom list with Infopath form</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;We wanted to extend the Ribbon to have a Print button for Custom list with Infopath form.&lt;br /&gt;&lt;br /&gt;While I found so many articles to extend Ribbon UI, most of them are for a regular list / library. In SP2010, now we do have an option to use a Infopath for a custom list which uses a brand new Ribbon Tab/Grouping and I found nothing much on Web.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;Use the following Element manifest.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code:&lt;/strong&gt;&lt;pre name="code" class="csharp"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;Elements xmlns="http://schemas.microsoft.com/sharepoint/"&amp;gt;&lt;br /&gt; &amp;lt;CustomAction&lt;br /&gt; Id="InfopathformPrintButton"&lt;br /&gt; Location="CommandUI.Ribbon" Rights="ViewListItems"&amp;gt;&lt;br /&gt;  &amp;lt;CommandUIExtension&amp;gt;&lt;br /&gt;   &amp;lt;CommandUIDefinitions&amp;gt;&lt;br /&gt;    &amp;lt;CommandUIDefinition&lt;br /&gt;     Location="Ribbon.Tabs.InfoPathListDisplayTab.Manage.Controls._children"&amp;gt;&lt;br /&gt;     &amp;lt;Button Id="Ribbon.Tabs.InfoPathListDisplayTab.Manage.Controls.Print"&lt;br /&gt;      Command="CallPrint"&lt;br /&gt;      Sequence="1"&lt;br /&gt;      Description="Print the infopath form"&lt;br /&gt;       Image16by16="/_layouts/images/placeholder32x32.png"&lt;br /&gt;       Image32by32="/_layouts/images/placeholder32x32.png"&lt;br /&gt;      LabelText="Print"&lt;br /&gt;      TemplateAlias="o1"/&amp;gt;&lt;br /&gt;    &amp;lt;/CommandUIDefinition&amp;gt;&lt;br /&gt;   &amp;lt;/CommandUIDefinitions&amp;gt;&lt;br /&gt;   &amp;lt;CommandUIHandlers&amp;gt;&lt;br /&gt;    &amp;lt;CommandUIHandler&lt;br /&gt;     Command="CallPrint"&lt;br /&gt;     CommandAction="javascript:function processPrint(){window.print()};processPrint();" /&amp;gt;&lt;br /&gt;   &amp;lt;/CommandUIHandlers&amp;gt;&lt;br /&gt;  &amp;lt;/CommandUIExtension&amp;gt;&lt;br /&gt; &amp;lt;/CustomAction&amp;gt;&lt;br /&gt;&amp;lt;/Elements&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-8725097898403075588?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/cFCdyp9d6mE/print-button-for-custom-list-with.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>4</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/08/print-button-for-custom-list-with.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-1244934453892952301</guid><pubDate>Tue, 26 Jul 2011 12:36:00 +0000</pubDate><atom:updated>2011-12-16T14:25:40.110-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">Tools</category><category domain="http://www.blogger.com/atom/ns#">Workflow</category><title>Failed to associate this workflow template with a Microsoft Office SharePoint list</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;I have been building and deploying my Sharepoint Sequential Workflow  with no issues.&lt;br /&gt;&lt;br /&gt;Now I started to get following error: output details are as below&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;Successfully installed this assembly into the global assembly cache: CustomWF.dll.&lt;br /&gt;Successfully restarted Internet Information Services (IIS).&lt;br /&gt;Successfully copied workflow.xml to C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\CustomWF\workflow.xml.&lt;br /&gt;Successfully copied feature.xml to C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES\CustomWF\feature.xml.&lt;br /&gt;Successfully installed the workflow template to Microsoft Office SharePoint Server.&lt;br /&gt;Failed to associate this workflow template with a Microsoft Office SharePoint list. Object reference not set to an instance of an object.&lt;br /&gt;Failed to deploy the workflow template to Microsoft Office SharePoint Server.&lt;br /&gt;========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========&lt;br /&gt;========== Deploy: 0 succeeded, 1 failed, 0 skipped ==========&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;While I was not to totally find the real cause of the issue but did a workaround to move forward.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;br /&gt;1. Created folder structure 12\TEMPLATE\FEATURES\CustomWF&lt;br /&gt;2. Moved the feature.xml inside the folder&lt;br /&gt;3. Moved the element.xml inside the folder&lt;br /&gt;4. Build WSP using WSPBuilder&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Article:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://social.msdn.microsoft.com/Forums/en-US/sharepointworkflow/thread/79ae7884-8c49-4203-bb85-1551b69ca2ce"&gt;Open issue&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-1244934453892952301?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/726Nrn3ZWFw/failed-to-associate-this-workflow.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/07/failed-to-associate-this-workflow.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-6826281380374857903</guid><pubDate>Wed, 01 Jun 2011 12:20:00 +0000</pubDate><atom:updated>2011-06-01T08:24:50.134-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Webpart</category><category domain="http://www.blogger.com/atom/ns#">Code</category><title>Displaying paged discussion board</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;We were working on to display item from a discussion list from a paged result set.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;While I am still not 100% convinced why someone need to fetch all records from 1 to last record of the page you want to display. &lt;br /&gt;&lt;br /&gt;Here's the code which worked. Once can use this to work with cache object to make performance faster.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code:&lt;/strong&gt;&lt;pre name="code" class="csharp"&gt;  public override void RenderControl (System.Web.UI.HtmlTextWriter writer)&lt;br /&gt;        {&lt;br /&gt;            writer.WriteLine("============================");&lt;br /&gt;&lt;br /&gt;            if (null != HttpContext.Current.Request.QueryString["pageno"])&lt;br /&gt;            {            &lt;br /&gt;                int pageno = 1;            &lt;br /&gt;                int.TryParse(HttpContext.Current.Request.QueryString["pageno"].ToString(), out pageno);&lt;br /&gt;&lt;br /&gt;                SPWeb oWebsite = SPContext.Current.Web;&lt;br /&gt;                SPList oList = oWebsite.Lists["Team Discussion"];&lt;br /&gt;&lt;br /&gt;                SPQuery oQuery = new SPQuery();&lt;br /&gt;                oQuery.RowLimit = 2;&lt;br /&gt;                oQuery.Query = "&amp;lt;OrderBy Override='TRUE'&amp;gt;" +&lt;br /&gt;                    "&amp;lt;FieldRef Name='Modified' Ascending='FALSE' /&amp;gt;&amp;lt;/OrderBy&amp;gt;";&lt;br /&gt;&lt;br /&gt;                int intIndex = 1;&lt;br /&gt;&lt;br /&gt;                do&lt;br /&gt;                {&lt;br /&gt;                    writer.WriteLine("Page: " + intIndex );&lt;br /&gt;                  &lt;br /&gt;                    SPListItemCollection collListItems = oList.GetItems(oQuery);&lt;br /&gt;&lt;br /&gt;                    if (intIndex == pageno)&lt;br /&gt;                    {&lt;br /&gt;                        foreach (SPListItem oListItem in collListItems)&lt;br /&gt;                        {&lt;br /&gt;                            writer.WriteLine(SPEncode.HtmlEncode(oListItem["Title"].ToString()) );&lt;br /&gt;                        }&lt;br /&gt;&lt;br /&gt;                        break; &lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    oQuery.ListItemCollectionPosition = collListItems.ListItemCollectionPosition;&lt;br /&gt;                    if (null != collListItems.ListItemCollectionPosition)&lt;br /&gt;                      &lt;br /&gt;                    intIndex++;&lt;br /&gt;&lt;br /&gt;                } while (oQuery.ListItemCollectionPosition != null);&lt;br /&gt;&lt;br /&gt;                writer.Write("=================================");&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            base.RenderControl(writer);&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;strong&gt;Article:&lt;/strong&gt;&lt;a href='http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitemcollectionposition.aspx' &gt; SPListItemCollectionPosition &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-6826281380374857903?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/IAvieKsAjxE/displaying-paged-discussion-board.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/06/displaying-paged-discussion-board.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-4925653029639413739</guid><pubDate>Wed, 25 May 2011 18:18:00 +0000</pubDate><atom:updated>2011-05-25T23:13:08.602-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">MySites</category><category domain="http://www.blogger.com/atom/ns#">Tips</category><title>MySite Quick access menu</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;I was working with Ashish and he wanted to turn 'off' the mysite quick access navigation as shown below.&lt;br /&gt;&lt;br /&gt;&lt;img src='http://rw6pyg.blu.livefilestore.com/y1ppY6E6OW6Us4q9jpu_gdLyjYSl9g5unjtBhRd5eOQ3RvdnHj7LP28hAdGi_orp3B9cdL27OoG48A9EpPZXxaAJwOApj0L30y5/MySiteTopNav.JPG?psid=1' alt='mysite' /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;I remember doing it in past by de-activating feature but I guess forgot to blog :)&lt;br /&gt;Quick check revealed the hidden Web level feature details&lt;br /&gt;&lt;br /&gt;&lt;img src='http://public.blu.livefilestore.com/y1pr43RUT91mZu5fHtf9Gt22fBFAKlYHRYy6Op6o-8jIGFWLrsrhvzaPnLc7H8ogdZSYZUrkrk7NADxJMZ7WeBz_Q/FeatureDetail.JPG?psid=1' alt='feature' /&gt;&lt;br /&gt;&lt;br /&gt;I ran the following command to get rid of it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Powershell:&lt;/strong&gt;&lt;pre name="code" class="csharp"&gt;Disable-SPFeature -Identity 6adff05c-d581-4c05-a6b9-920f15ec6fd9 -Url http://intranet/my&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-4925653029639413739?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/RCJKji9DLhs/mysite-quick-access-menu.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/05/mysite-quick-access-menu.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-4497936963662583328</guid><pubDate>Fri, 20 May 2011 11:07:00 +0000</pubDate><atom:updated>2011-05-20T07:31:27.531-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Error</category><category domain="http://www.blogger.com/atom/ns#">Bug</category><title>Missing values of one column in list item</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;Today working on MOSS 2007 project, Adil - my team member mentioned that he is facing a weird behaviour with OOTB sharepoint list. One of the column in the list is not showing value, even though value does exist for that column.&lt;br /&gt;&lt;br /&gt;He was getting blank in Display mode and also in ListView mode. &lt;br /&gt;Values are showing up for Admin user but for all other users it's showing blank.&lt;br /&gt;&lt;br /&gt;Strange, isn't it ?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Analysis:&lt;/strong&gt;&lt;br /&gt;I started analyzing whats so different with this list and I realized we had so many number columns. Is that an issue ?? &lt;br /&gt;&lt;br /&gt;Yes , that can be.&lt;br /&gt;&lt;br /&gt;As we know SharePoint database is not simple and uses a big table to store all the values. When we create a new column , say type Number , it will look into the datarow and allocate a number column to it , i.e. numbercolumn1. Now there is a limited number of columns in datarow for each type. If we already consumed all the columns for other fields then only way to accomodate it is 'Row-wrap'. &lt;br /&gt;Yes , you are right. It will book an another row for each item u create.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;All that is fine but how it is connected to above issue ??&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I opened SharePoint manager to checked the details of each field. While all the fields which are working file had RowOrdinal="0" , the field showing blank had RowOrdinal="1". &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conculsion:&lt;/strong&gt;&lt;br /&gt;SharePoint is limited by design and sometime not able to pull the information back from wrapped rows/columns.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Workarounds:&lt;/strong&gt;&lt;br /&gt;1. Just like good DB normalization technique, split the data in 2 lists.&lt;br /&gt;2. Look for columns you really don't need. If 'Row-wrap' is because of 1-2 columns, you might be able to remove them to ensure you don't cross columns maximum limitation.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Article:&lt;/strong&gt;&lt;br /&gt;Check out &lt;br /&gt;&lt;a href='http://sharepointking.blogspot.com/2008/11/number-of-columns-limitation-for-each.html'&gt;Column Limitation for MOSS 2007 &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-4497936963662583328?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/cGrOCWToq2o/missing-values-of-one-column-in-list.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/05/missing-values-of-one-column-in-list.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-6902999378655546046</guid><pubDate>Thu, 19 May 2011 10:15:00 +0000</pubDate><atom:updated>2011-06-10T03:22:54.205-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Code</category><title>Discussion board multiple item threaded view</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;Discussion board has a great 'Threading' view , but limited to display only one time.&lt;br /&gt;We had a requirement to display multiple items in threaded view. I searched a lot but nothing helpful.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;Wrote a quick console application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Code:&lt;/strong&gt;&lt;pre name="code" class="csharp"&gt;using System;&lt;br /&gt;using System.Data;&lt;br /&gt;using Microsoft.SharePoint;&lt;br /&gt;using Microsoft.SharePoint.WebPartPages;&lt;br /&gt;&lt;br /&gt;namespace SPSandeep.ConsoleApplication&lt;br /&gt;{&lt;br /&gt;    class Program&lt;br /&gt;    {&lt;br /&gt;        public static DataTable dt = null;&lt;br /&gt;&lt;br /&gt;        static void Main (string[] args)&lt;br /&gt;        {&lt;br /&gt;            using (SPSite site = new SPSite("http://ws2003/credit"))&lt;br /&gt;            {&lt;br /&gt;                using (SPWeb web = site.OpenWeb())&lt;br /&gt;                {&lt;br /&gt;                    SPList mainList = web.Lists["Team Discussion"];&lt;br /&gt;&lt;br /&gt;                    foreach (SPListItem folder in mainList.Folders)&lt;br /&gt;                    {&lt;br /&gt;                        Console.WriteLine("Folder Name: " + folder.Name);&lt;br /&gt;                        Console.WriteLine("Folder ID: " + folder.ID);&lt;br /&gt;&lt;br /&gt;                        // Read body of attachment  &lt;br /&gt;                        Console.WriteLine("Body: " + folder.Fields["Body"].GetFieldValueAsText(folder["Body"]));&lt;br /&gt;                        Console.WriteLine("Threading: " + folder.Fields["Threading"].GetFieldValueAsText(folder["Threading"]).Length);&lt;br /&gt;                        Console.WriteLine("=============================");&lt;br /&gt;&lt;br /&gt;                        RenderAllReponses(mainList, folder.ID);&lt;br /&gt;&lt;br /&gt;                        Console.WriteLine("=============================");&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            Console.ReadKey();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static void RenderAllReponses (SPList mainList, int parentID)&lt;br /&gt;        {&lt;br /&gt;            SPQuery query = new SPQuery();&lt;br /&gt;            query.Query = string.Format("&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name='ParentFolderId' /&amp;gt;&amp;lt;Value Type='Number'&amp;gt;{0}&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;", parentID.ToString());&lt;br /&gt;            query.ViewFields = @"&amp;lt;FieldRef Name='ows_ParentFolderId' /&amp;gt;&amp;lt;FieldRef Name='Threading' /&amp;gt;&amp;lt;FieldRef Name='Title' /&amp;gt;&amp;lt;FieldRef Name='ID' /&amp;gt;&amp;lt;FieldRef Name='Body' /&amp;gt;";&lt;br /&gt;            query.ViewAttributes = "Scope='RecursiveAll'";&lt;br /&gt;            dt = mainList.GetItems(query).GetDataTable();&lt;br /&gt;&lt;br /&gt;            if (null != dt)&lt;br /&gt;            {&lt;br /&gt;                foreach (DataRow listItem in dt.Rows)&lt;br /&gt;                {&lt;br /&gt;                    if (listItem["Threading"].ToString().Length == 56)&lt;br /&gt;                    {&lt;br /&gt;                        RenderResponse(listItem, 56);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static void RenderResponse (DataRow listItem1, int length)&lt;br /&gt;        {&lt;br /&gt;            DataRow[] listItems = dt.Select(string.Format("Threading Like '{0}*' AND LEN(Threading)={1}", listItem1["Threading"], length));&lt;br /&gt;&lt;br /&gt;            foreach (DataRow item in listItems)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine("Item DisplayName: " + item["Title"]); // Returns Title of Discussion   &lt;br /&gt;                Console.WriteLine("List ID: " + item["ID"] );&lt;br /&gt;                //Console.WriteLine("List Folder ID: " + listItem["ParentFolderId"] + "&amp;lt;BR&amp;gt;"); // Returns ID of Parent Discussion   &lt;br /&gt;                Console.WriteLine("Body: " + item["Body"]);&lt;br /&gt;                Console.WriteLine("Threading: " + item["Threading"].ToString().Length );&lt;br /&gt;                int newLength = length + 10;&lt;br /&gt;                RenderResponse(item, newLength);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }  &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-6902999378655546046?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/gfSRc66gGn8/discussion-board-multiple-item-threaded.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/05/discussion-board-multiple-item-threaded.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-3853207610428504268</guid><pubDate>Tue, 17 May 2011 07:52:00 +0000</pubDate><atom:updated>2011-05-19T04:01:52.460-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Javascript</category><category domain="http://www.blogger.com/atom/ns#">JQuery</category><category domain="http://www.blogger.com/atom/ns#">Tips</category><title>SP2010 : Color coded Calendar</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;I have used color coded calendar in MOSS 2007 but using it in SP2010 was little tricky. Here's some of the things which can make you life easier.&lt;br /&gt;&lt;br /&gt;&lt;img src='http://rw6pyg.blu.livefilestore.com/y1pgpVjvQomGhAqukNq_21DWBInMULvR_KYa5cQGUi8TlX2Z69Oybbb_DsSjlGiX5aprMfyMxKdeMFtB_qKT6oCkMiu_MAXBDrC/ColorCalendar.PNG?psid=1' alt='colorcal' /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;br /&gt;1. Create or open a calendar with some data &lt;br /&gt;&lt;br /&gt;2. Add a new column named "Color" of "Choice" type with some color choices.&lt;a href='http://www.html-color-names.com/color-chart.php' &gt; Color selection available &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Add a new column named "CalendarText" &lt;br /&gt;&gt;&gt;&gt;&gt; Column Type is Calculated&lt;br /&gt;&gt;&gt;&gt;&gt; Insert Column Field value should be 'Color' (created in the step 2).&lt;br /&gt;&gt;&gt;&gt;&gt; Data type returned = single line of text.&lt;br /&gt;&gt;&gt;&gt;&gt; Formula is: ="&amp;lt;span style='color:white;background-color:"&amp;Color&amp;"'&amp;gt;"&amp;Title&amp;"&amp;lt;/span&amp;gt;"&lt;br /&gt;&lt;br /&gt;4. Modify the existing view, or create a new view of 'Calendar View' type.&lt;br /&gt;&lt;br /&gt;5. Change the field used for the Month View Title, Day View Title and Week View Title to "CalendarText".&lt;br /&gt;&lt;br /&gt;6. Save and exit (The HTML for "&amp;lt;span" will now be displayed. &lt;br /&gt;&lt;br /&gt;Some JavaScript/Jquery will be needed to fix the HTML tags.&lt;br /&gt;&lt;br /&gt;7. &lt;a href='http://cid-8e5fd1f390a12a8b.office.live.com/self.aspx/BloggerFiles/ColoredCalendar.txt' &gt;Download this text file &lt;/a&gt; &lt;br /&gt;&lt;br /&gt;8. &lt;a href='http://cid-8e5fd1f390a12a8b.office.live.com/self.aspx/BloggerFiles/ColorCodedCalendarWP.dwp' &gt;Download this DWP file &lt;/a&gt; &lt;br /&gt;&lt;br /&gt;9. Save the text file in Shared Documents library. ( as of now this is hard-coded location ).If you uploading it to a different location , you will need to open DWP file and change text file location accordingly.&lt;br /&gt;&lt;br /&gt;10. Navigate to the calendar view and edit page&lt;br /&gt;&lt;br /&gt;11. Import the DWP webpart BELOW the calendar WP. You are all set now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-3853207610428504268?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/R2JJ8SwonPA/sp2010-color-coded-calendar.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/05/sp2010-color-coded-calendar.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-4156896256552927389</guid><pubDate>Mon, 16 May 2011 18:05:00 +0000</pubDate><atom:updated>2011-05-18T23:20:54.747-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Sharepoint Designer</category><category domain="http://www.blogger.com/atom/ns#">Record Management</category><title>Restricting edit on approved items after approval</title><description>&lt;strong&gt;Scenario:&lt;/strong&gt;&lt;br /&gt;I got this question again , on how to ensure a form / document is locked after it has been approved. ( After some sort of workflow is done ).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;One of the solution is to declare the item as a record. This can be done in many ways but easiest no code solution is using 'SharePoint Designer Workflow'. As it support an activity to declare an item as record as shown.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://public.blu.livefilestore.com/y1p1RZJiFDnRcjz9s0XA_pVaEqemkUkGG2zsUB-nJ7STNFIrnT8GH_Y7DnStRTxhP7Ps6ErGKS-qtG3FkKXJSAHTA/DeclareRecordWFAction.JPG?psid=1" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;Note : You can define record declaration settings at the top-level site in your site collection. Record declaration settings govern how records are treated, such as whether they can be edited or deleted, what metadata is applied to the record, and what a record’s retention policy is. Record declaration settings specify restrictions that should apply after an item is declared as a record, user roles allowed to declare records and if record declaration is available to all site users.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;br /&gt;Step 1 : Ensure Site Collection level feature 'In-place record management' is activated.&lt;div&gt;&lt;br /&gt;&lt;img src="http://rw6pyg.blu.livefilestore.com/y1pJ2A23gSggG9YT3dhRSyGiI54BvDXgCYdVeHSjdUYBvD_Qr06vxq1Z0pbmnw2gWHj5kyouLXm9_hD8jqqnRLTgHpyfrA3yi1G/InPlaceRecordFeature.JPG?psid=1" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 2 : Navigate to site collection settings and check for 'Record Setting' link.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://public.blu.livefilestore.com/y1pylLBngyfYEJaymHzwfK9fwRSC_qRSNqbghd-dXGZPUVzO4HHcXK608q0ur0jleMo136c4dA2QYS6Sj8Xgj4Cvw/RecordSetting.JPG?psid=1" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;Step 3 : Here's default settings , but you can opt for the one you want and save.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img src="http://public.blu.livefilestore.com/y1p7MYrFJLTgolfZW8f0gU-4rW-4ORv83X9HeZERm_UREg779iNT5OY6TS2k9kGso7cY75PYpFzzJV7pNPKChpm8g/SiteCollectionRecordSetting.JPG?psid=1" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;Step 4 : Once In-place record management is enabled @ root level , you can navigate to list/library setting to modify it @ list/library level.&lt;/div&gt;&lt;div&gt;&lt;img src="http://public.blu.livefilestore.com/y1pIu_zAhox9T6JRtDn0y5sinRRfzhAoeVjMddOe74C4ZemTluV0prVM2Zxl84T7kaEHFDFSN4yFE9W8AoO8iMuOg/ListRecordSetting.JPG?psid=1" alt="" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-4156896256552927389?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/YENWbDvVxXc/restricting-edit-on-approved-items.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/05/restricting-edit-on-approved-items.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-948216771623611945.post-299980838246288690</guid><pubDate>Sat, 14 May 2011 17:22:00 +0000</pubDate><atom:updated>2011-12-16T14:33:45.596-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Learn</category><title>SP2010 Business Intelligence Solutions review</title><description>Today its not about a scenario :). Its about my latest read. &lt;br /&gt;&lt;br /&gt;&lt;img src='http://rw6pyg.blu.livefilestore.com/y1p2yRW2z5EYuL00BcGXi_A_S1btBLwShOOutR2OEbEYtbxhxhHpqJ0ilOFt3eMSmwbLK_QrToNdUl470UrwX8h5AUczhnIhim_/srinibook.jpg?psid=1' alt='book' /&gt;&lt;br /&gt;&lt;br /&gt;Extremely well written, highly exhaustive, and very much in detailed. I started reading it and couldn't resist finishing.&lt;br /&gt;&lt;br /&gt;Here's what I really liked about the book&lt;br /&gt;&lt;br /&gt;#1: Book's layout:&lt;br /&gt;&lt;br /&gt;One of the best! Each chapter provides information on how to setup a service/feature and then talk about how to best use it.&lt;br /&gt;&lt;br /&gt;As BI features are mostly new in SP2010, this was a great help.&lt;br /&gt;&lt;br /&gt;#2: Best Practice / Other examples:&lt;br /&gt;&lt;br /&gt;At various stages author has given pointers about best practice / other possible uses and is certainly helpful as it's like food for thought.&lt;br /&gt;&lt;br /&gt; I was able to use it in my projects bases on ideas listed in book.&lt;br /&gt;&lt;br /&gt;#3: Authors:&lt;br /&gt;&lt;br /&gt;This book is from Sahil Malik / Srini Sistla / Steve Wright. These guys are extremely well known for their command in SharePoint space.&lt;br /&gt;&lt;br /&gt;As all of them are very know speakers, I found language used in the book easy to understand and digest right away.&lt;br /&gt;&lt;br /&gt;#4: Code Bits:&lt;br /&gt;&lt;br /&gt;This helped me a lot as I was able to try all the examples in parallel without copying lines from the book.&lt;br /&gt;&lt;br /&gt;I highly recommend this book to anyone who was explore the width-height-breadth of BI features in SharePoint.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.amazon.com/SharePoint-2010-Business-Intelligence-Solutions/dp/1430232854/ref=sr_1_1?ie=UTF8&amp;qid=1305397202&amp;sr=8-1' &gt; Amazon &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/948216771623611945-299980838246288690?l=snahta.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/sandeepnahta/~3/-WLhrlDSIiU/sp2010-business-intelligence-solutions.html</link><author>noreply@blogger.com (Sandeep K Nahta)</author><thr:total>0</thr:total><feedburner:origLink>http://snahta.blogspot.com/2011/05/sp2010-business-intelligence-solutions.html</feedburner:origLink></item></channel></rss>

