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

<channel>
	<title>Dom Cosgrove Blog &#187; Development</title>
	<atom:link href="http://blog.domcosgrove.com/tag/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.domcosgrove.com</link>
	<description>Dom&#039;s views on the SharePoint World</description>
	<lastBuildDate>Tue, 18 Oct 2011 12:59:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Example of how to get the URL to SharePoint 2007 Form Pages</title>
		<link>http://blog.domcosgrove.com/example-of-how-to-get-the-url-to-sharepoint-2007-form-pages/</link>
		<comments>http://blog.domcosgrove.com/example-of-how-to-get-the-url-to-sharepoint-2007-form-pages/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 19:50:07 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/example-of-how-to-get-the-url-to-sharepoint-2007-form-pages/</guid>
		<description><![CDATA[You can use the following syntax to get the fully qualified URL to a Form for a SharePoint List / Library. SPList list = SPContext.Current.List; SPListItem item = list[0]; item.Web.Url + &#34;/&#34; + item.ParentList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url + &#34;?ID=&#34; + item.ID &#160; PAGETYPE is an enumeration of the SharePoint Forms: PAGE_DEFAULTVIEW Default view. Value=0. PAGE_DIALOGVIEW File dialog box [...]]]></description>
			<content:encoded><![CDATA[<p>You can use the following syntax to get the fully qualified URL to a Form for a SharePoint List / Library. </p>
<pre>SPList list = SPContext.Current.List;

SPListItem item = list[0];

item.Web.Url + &quot;/&quot; + item.ParentList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url + &quot;?ID=&quot; + item.ID
</pre>
<p>&#160;</p>
<p><a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.pagetype.aspx">PAGETYPE</a> is an enumeration of the SharePoint Forms: </p>
<p><table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_DEFAULTVIEW</b></p>
</td>
<td valign="top" width="61%">
<p>Default view. Value=0. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_DIALOGVIEW</b></p>
</td>
<td valign="top" width="61%">
<p>File dialog box view. Value=2. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_DISPLAYFORM</b></p>
</td>
<td valign="top" width="61%">
<p>Display form for list items. Value=4. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_DISPLAYFORMDIALOG</b></p>
</td>
<td valign="top" width="61%">
<p>Display form for a file dialog box. Value=5. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_EDITFORM</b></p>
</td>
<td valign="top" width="61%">
<p>Edit form for list items. Value=6. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_EDITFORMDIALOG</b></p>
</td>
<td valign="top" width="61%">
<p>Edit form for a file dialog box. Value=7. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_INVALID</b></p>
</td>
<td valign="top" width="61%">
<p>Not used. Value= -1. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_MAXITEMS</b></p>
</td>
<td valign="top" width="61%">
<p>Not used. Value=11. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_NEWFORM</b></p>
</td>
<td valign="top" width="61%">
<p>New form for list items. Value=8</p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_NEWFORMDIALOG</b></p>
</td>
<td valign="top" width="61%">
<p>New form for a file dialog box. Value=9. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_NORMALVIEW</b></p>
</td>
<td valign="top" width="61%">
<p>Normal view. Value=1. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_SOLUTIONFORM</b></p>
</td>
<td valign="top" width="61%">
<p>Solution form. Value=10. </p>
</td>
</tr>
<tr>
<td valign="top" width="38%">
<p><b>PAGE_VIEW</b></p>
</td>
<td valign="top" width="61%">
<p>View, including both default view and normal view. Value=3.</p>
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/example-of-how-to-get-the-url-to-sharepoint-2007-form-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS Loopback adapter</title>
		<link>http://blog.domcosgrove.com/ms-loopback-adapter/</link>
		<comments>http://blog.domcosgrove.com/ms-loopback-adapter/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 16:52:27 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/ms-loopback-adapter/</guid>
		<description><![CDATA[If you need to browse your SharePoint site or for that matter any site, hosted on your VPC while you are not connected to a network, read on. If you are not connected to a network the VPC does not get an IP address issued hence why you cannot browse hosted sites. The solution to [...]]]></description>
			<content:encoded><![CDATA[<p>If you need to browse your SharePoint site or for that matter any site, hosted on your VPC while you are not connected to a network, read on. If you are not connected to a network the VPC does not get an IP address issued hence why you cannot browse hosted sites. The solution to this is the MS Loopback Adapter. The following shows you how to set up your loopback adapter.</p>
<h4>Add Loopback adapter</h4>
<ol>
<li>Click <strong>Start</strong>, and then click <strong>Control Panel. </strong>Then click <strong>Add Hardware</strong>:       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image17.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb17.png" width="300" height="209" /></a> </li>
<li>Select <strong>Yes, I have already connected the hardware</strong>:       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image18.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb18.png" width="244" height="188" /></a> </li>
<li>From the list of devices select <strong>Add a new hardware device</strong>:       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image19.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb19.png" width="244" height="187" /></a> </li>
<li>Select <strong>Install the hardware that I manually select from list (Advanced)</strong>:       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image20.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb20.png" width="244" height="187" /></a> </li>
<li>From the list of hardware types select <strong>Network Adapter</strong>:       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image21.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb21.png" width="244" height="187" /></a> </li>
<li>From the list of Manufactures select <strong>Microsoft</strong> and from the list of Network Adapters select<strong> Microsoft Loopback Adapter</strong>:       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image22.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb22.png" width="244" height="187" /></a> </li>
<li>Click <strong>Finish</strong> once the adapter is installed. </li>
<li>The Loopback Adapter will now appear in you list of <strong>Network Connections</strong>:       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image23.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb23.png" width="240" height="81" /></a> </li>
</ol>
<h4>Configure Loopback Adapter</h4>
<ol>
<li>In the <strong>Network Connections</strong> right mouse click on the newly created Loopback Adapter and select <strong>Properties;</strong> </li>
<li>From the <strong>Properties</strong> select <strong>Internet Protocol (TCP/IP)</strong> and click <strong>Properties</strong>:       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image24.png"><strong><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb24.png" width="202" height="244" /></strong></a><strong> </strong></li>
<li>In the <strong>Properties</strong> add the IP address as follows:       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image25.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb25.png" width="221" height="244" /></a>&#160; </li>
<li>Click <strong>OK </strong>to commit the changes. </li>
</ol>
<h4>Configure VPC Network Adapter</h4>
<ol>
<li>On Virtual PC (VPC) Console click <strong>Settings</strong>;       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image26.png"><strong><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb26.png" width="244" height="169" /></strong></a><strong> </strong></li>
<li>On the settings dialog box select <strong>Networking</strong> and then select <strong>Microsoft Loopback Adapter</strong> as the 1st Adapter. Click <strong>OK</strong>;       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image27.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb27.png" width="244" height="173" /></a> </li>
<li>On the VPC click the Network icon in the task bar or navigate to the <strong>Network Connections</strong> through the control panel. The network icon may display a warning message “Limited or no connectivity”. Don’t worry about this at the moment;       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image28.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb28.png" width="240" height="131" /></a> </li>
<li>On the <strong>Network Connections </strong>window, right mouse click on the <strong>Local Area Connection</strong> and click <strong>Properties</strong>;       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image29.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb29.png" width="240" height="159" /></a> </li>
<li>On the <strong>TCP/IP</strong> settings for the Network adapter enter the following details. Click <strong>OK</strong><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image30.png">;<img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb30.png" width="221" height="244" /></a> </li>
<li>You will notice that the network icon on the desktop task bar no-longer displays the warning message; </li>
<li>On the VPC, launch the <strong>Command Prompt</strong> and type <strong>IPConfig</strong> you should see that the VPC now has the IP address, subnet and gateway that you just entered;       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image31.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb31.png" width="244" height="82" /></a> </li>
<li>From the VPC Command prompt ping <strong>192.168.5.10</strong> to confirm connectivity to the host;       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image32.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb32.png" width="244" height="88" /></a>&#160; </li>
<li>Ensure that you don’t have any network connectivity on your host computer, then from the Command Prompt ping the VPC <strong>192.168.5.11</strong> to confirm connectivity to the VPC; </li>
</ol>
<h4>Configure Host File</h4>
<p>If your SharePoint (or website) uses <strong>Host Headers</strong> then you’ll need to edit your <strong>Host file</strong>:</p>
<ol>
<li>&#160; Open your <strong>Host </strong>file C:\Windows\System32\Drivers\etc\host;       <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image33.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb33.png" width="240" height="137" /></a> </li>
<li>In the host file put the IP address of your VPC <strong>192.168.5.11</strong> and set the host in my case that is scratch;       <br />&#160;<a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image34.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb34.png" width="244" height="191" /></a> </li>
<li>You should now be able to browse your SharePoint (Web Site) hosted on a VPC even if you do not have connection to a network;      <br /><a href="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image35.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.domcosgrove.com/wp-content/uploads/2009/11/image_thumb35.png" width="240" height="192" /></a>&#160; </li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/ms-loopback-adapter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top SharePoint Dev Productivity Apps</title>
		<link>http://blog.domcosgrove.com/top-sharepoint-dev-utility-apps/</link>
		<comments>http://blog.domcosgrove.com/top-sharepoint-dev-utility-apps/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 21:36:00 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/top-sharepoint-dev-utility-apps/</guid>
		<description><![CDATA[Ok, so there are loads of these sort of blogs already out there, but hey thought I’d let you know the suite of tools that I’ve added to my arsenal. All these tools should help make your SharePoint life allot easier… they definitely save me a load of headaches over the years. Thanks to all [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Ok, so there are loads of these sort of blogs already out there, but hey thought I’d let you know the suite of tools that I’ve added to my arsenal. All these tools should help make your SharePoint life allot easier… they definitely save me a load of headaches over the years. Thanks to all the community folks for developing these tools, with out them our lives would be a lot harder.</p>
<table border="0" cellspacing="0" cellpadding="2" width="601">
<tbody>
<tr>
<td valign="top" width="187"><a href="http://spi.codeplex.com/" target="_blank">SharePoint Inspector</a></td>
<td valign="top" width="412">
<p align="justify">SharePoint Inspector is a free tool to browse your SharePoint 2007 farm.            </p>
<p align="justify">You can see objects composing its structure, get their properties by reflection, which can be very useful when you want to check if your code does what it should do.            <br />You can use also some advanced features like activate/deactivate SharePoint features, add/remove event receivers, manage your recycle bin. Thanks to Gaetan Bouveret great utility.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://code.msdn.microsoft.com/camlintellisense/Release/ProjectReleases.aspx?ReleaseId=2212" target="_blank">CAML.NET IntelliSense</a></td>
<td valign="top" width="412">
<p align="justify">The purpose of this project is to extend the raw WSS xsd to include annotated documentation taken from the <a href="http://msdn.microsoft.com/en-us/library/ms550992.aspx">SharePoint SDK</a> so that developers don&#8217;t have to break their train of thought while they go searching for information about each element. Thanks to <a href="http://johnholliday.net/post/2009/01/18/Feed-your-CAML-some-IntelliSense-so-it-doesnt-bite-you-in-the-you-know-what!.aspx" target="_blank">John Holliday</a> for providing this.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.u2u.be/Res/Tools/CamlQueryBuilder.aspx" target="_blank">U2U CAML Query Builder</a></td>
<td valign="top" width="412">
<p align="justify">The tool will help you build, test and execute your CAML Queries. This version of the tool only let you build CAML queries for execution against lists. Thanks to those Belgium guys at <a href="http://www.u2u.net/Default.aspx" target="_blank">U2U</a>.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.red-gate.com/products/reflector/" target="_blank">.Net Reflector</a></td>
<td valign="top" width="412">
<p align="justify">This is something that should be in any .Net developer tool box. .NET Reflector enables you to easily view, navigate, and search through, the class hierarchies of .NET assemblies, even if you don&#8217;t have the code for them. With it, you can decompile and analyze .NET assemblies in C#, Visual Basic, and IL.</p>
</td>
</tr>
<tr>
<td valign="top" width="187">
<p align="justify"><a href="http://www.lightningtools.com/bdc-meta-man/default.aspx" target="_blank">BDC Meta Man</a></p>
</td>
<td valign="top" width="412">
<p align="justify">BDC Meta Man is the first Business Data Catalog tool for all SharePoint Developers and Administrators interested in line of business data integration with SharePoint. Without writing a single line of code you can be viewing and searching across your business data through Microsoft Office SharePoint Server 2007 in minutes.            </p>
<p>This is a great tool provided by the guys from Lightening Tools. The free to download version gives you some limited functionality.             </p>
<p>Nick Swan and Brett Lonsdale the cofounders of Lightening tools have also produced a great book on the BDC “<a href="http://www.manning.com/lonsdale/" target="_blank">SharePoint 2007 Developer’s Guide to Business Data Catalog</a>”. They can also be heard on the Excellent <a href="http://www.sharepointpodshow.com/" target="_blank">SharePoint Pod Show</a> with co-host Rob Foster. Definitely check it out.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://wspbuilder.codeplex.com/" target="_blank">WSPBuilder</a></td>
<td valign="top" width="412">
<p>A SharePoint Solution Package (WSP) creation tool for WSS 3.0 &amp; MOSS 2007            <br />- No more manually creating the manifest.xml file.             <br />- No more manually specifying the DDF file.             <br />- No more using the makecab.exe application.</p>
<p><a href="http://keutmann.blogspot.com/" target="_blank">Carsten Keutmann</a> you’re a legend… what more can I say!</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://spm.codeplex.com/" target="_blank">SharePoint Manager 2007</a></td>
<td valign="top" width="412">
<p align="justify">The SharePoint Manager 2007 is a SharePoint object model explorer. It enables you to browse every site on the local farm and view every property. It also enables you to change the properties (at your own risk). This is a very powerful tool for developers that like to know what the SharePoint holds of secrets. Another great tool from <a href="http://keutmann.blogspot.com/" target="_blank">Carsten Keutmann</a>.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.fiddler2.com/fiddler2/" target="_blank">Fiddler</a></td>
<td valign="top" width="412">
<p align="justify">Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP(S) traffic, set breakpoints, and &quot;fiddle&quot; with incoming or outgoing data.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.harbar.net/articles/apm.aspx" target="_blank">AppPool Manager</a></td>
<td valign="top" width="412">Neat little tool from <a href="http://www.harbar.net/" target="_blank">Spencer Harbar</a>.</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://spsource.codeplex.com/" target="_blank">SPSource</a></td>
<td valign="top" width="412">
<p align="justify">SPSource is a tool for SharePoint developers to assist in the creation of WSS Solution Packages (WSPs) allowing for the use SharePoint Designer and the SharePoint web UI to make quick changes to items, then push those items into Visual Studio for later compilation into a WSP. Thanks to <a href="http://wss.made4the.net/default.aspx" target="_blank">Jeremy Thake</a>.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://stsadm.blogspot.com/2009/02/downloads.html" target="_blank">STSAdm Extensions</a></td>
<td valign="top" width="412">A must have suite of STSAdm commands from <a href="http://stsadm.blogspot.com" target="_blank">Gary Lapointe</a>. Great for those SharePoint Administrators out there.</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://sptraceview.codeplex.com/" target="_blank">SPTraceView</a></td>
<td valign="top" width="412">
<p align="justify">SPTraceView analyses in real time the ULS trace messages coming from all MOSS components and can notify you using a balloon-style tray bar messages when something of interest happens.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://code.msdn.microsoft.com/SPDisposeCheck" target="_blank">SP Dispose Checker Tool</a></td>
<td valign="top" width="412">
<p align="justify">SPDisposeCheck is a tool to help you to check your assemblies that use the SharePoint API so that you can build better code. It provides assistance in correctly disposing of certain SharePoint objects to help you follow published best practice.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.codeplex.com/sharepointinstaller" target="_blank">SharePoint Installer</a></td>
<td valign="top" width="412">
<p align="justify">This project is a Windows application for an eased and more user friendly installation and deployment of SharePoint 2007 solution files to a SharePoint server farm. Distribute your SharePoint solution files with this installation program instead of a raw script using STSADM.EXE to install and deploy the solution.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.codeplex.com/SharePointSearchServ" target="_blank">SharePoint Search Service Tool</a></td>
<td valign="top" width="412">
<p align="justify">The SharePoint Search Service Tool is a rich web service client that allows a developer to explore the scopes and managed properties of a given SharePoint Search SSP, build queries in either Keyword or SQL Syntax, submit those queries and examine the raw web service results. This tool can be useful in troubleshooting and verifying the behaviour and configuration of a SharePoint environment.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/" target="_blank">CodeRush</a></td>
<td valign="top" width="412">
<p align="justify">CodeRush for Visual Studio® .NET will help you create sophisticated code blocks in seconds and extend code templates instantly. CodeRush will complete identifiers as you type and expand or contract selections logically. With CodeRush, you will be able to instantly place selected code inside Try/Catch blocks, Regions and your own custom wrappers with ease.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.jetbrains.com/resharper/index.html#" target="_blank">ReSharper</a></td>
<td valign="top" width="412">
<p align="justify">ReSharper provides solution-wide error highlighting on the fly, instant solutions for found errors, over 30 advanced code refactorings, superior unit testing tools, handy navigation and search features, single-click code formatting and cleanup, automatic code generation and templates, and a lot more productivity features for C#, VB.NET, ASP.NET, XML, and XAML.</p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.elumenotion.com/Blog/Lists/Posts/Post.aspx?ID=94" target="_blank">SharePoint Skinner</a></td>
<td valign="top" width="412">Helps you define the theme css for your custom SharePoint sites.</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=119F3477-DCED-41E3-A0E7-D8B5CAE893A3&amp;displaylang=en" target="_blank">Visual Round Trip Analyser</a></td>
<td valign="top" width="412">
<p align="justify">The Visual Round Trip Analyzer tool helps web developers and testers visualize the download of their page, identify best practices and changes that improve web performance. The network Round-Trip between the client and server(s) is the single biggest impact to web page performance – much greater than server response time. </p>
</td>
</tr>
<tr>
<td valign="top" width="187"><a href="http://developer.yahoo.com/yslow/" target="_blank">YSlow</a></td>
<td valign="top" width="412">YSlow analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages. </td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/top-sharepoint-dev-utility-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Feature Scopes</title>
		<link>http://blog.domcosgrove.com/sharepoint-feature-scopes/</link>
		<comments>http://blog.domcosgrove.com/sharepoint-feature-scopes/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 15:09:00 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/sharepoint-feature-scopes/</guid>
		<description><![CDATA[This is a useful reference to determine the scope of your features: Web (Web site) Site (site collection) Control Custom Action Custom Action Group Hide Custom Action List Instance List Template Module Receiver Content Type Content Type Binding Control Custom Action Custom Action Group Feature/Site Template Association Field Hide Custom Action List Template Module Workflow [...]]]></description>
			<content:encoded><![CDATA[<p>This is a useful reference to determine the scope of your features:</p>
<table border="0" cellspacing="0" cellpadding="2" width="598">
<tbody>
<tr>
<td valign="top" width="301">
<p><strong><font color="#004080" size="2">Web (Web site) </font></strong></p>
</td>
<td valign="top" width="295">
<p><strong><font color="#004080"><font size="2">Site (site collection)</font> </font></strong></p>
</td>
</tr>
<tr>
<td valign="top" width="301">
<p><a href="http://msdn.microsoft.com/en-us/library/ms463169.aspx" target="_blank">Control</a>             <br /><a href="http://msdn.microsoft.com/en-us/library/ms458635.aspx" target="_blank">Custom Action</a>             <br /><a href="http://msdn.microsoft.com/en-us/library/ms438085.aspx" target="_blank">Custom Action Group</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms414790.aspx" target="_blank">Hide Custom Action</a>             <br /><a href="http://msdn.microsoft.com/en-us/library/ms469947.aspx" target="_blank">List Instance</a>             <br /><a href="http://msdn.microsoft.com/en-us/library/ms434306.aspx" target="_blank">List Template</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms462994.aspx" target="_blank">Module</a>             <br /><a href="http://msdn.microsoft.com/en-us/library/ms475328.aspx" target="_blank">Receiver</a></p>
</td>
<td valign="top" width="295">
<p><a href="http://msdn.microsoft.com/en-us/library/ms454431.aspx" target="_blank">Content Type</a>             <br /><a href="http://msdn.microsoft.com/en-us/library/aa543598.aspx" target="_blank">Content Type Binding</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms463169.aspx" target="_blank">Control</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms458635.aspx" target="_blank">Custom Action</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms438085.aspx" target="_blank">Custom Action Group</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/aa544294.aspx" target="_blank">Feature/Site Template Association</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms426306.aspx" target="_blank">Field</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms414790.aspx" target="_blank">Hide Custom Action</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms434306.aspx" target="_blank">List Template</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms462994.aspx" target="_blank">Module</a>            <br /><a href="http://msdn2.microsoft.com/en-us/library/ms442247.aspx" target="_blank">Workflow</a></p>
</td>
</tr>
<tr>
<td valign="top" width="301">
<p><font color="#004080" size="2"><strong>Web Application (Web application) </strong></font></p>
</td>
<td valign="top" width="295">
<p><strong><font color="#004080"><font size="2">Farm (farm)</font>&#160;</font></strong></p>
</td>
</tr>
<tr>
<td valign="top" width="301">
<p><a href="http://msdn2.microsoft.com/en-us/library/ms463169.aspx" target="_blank">Control</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms458635.aspx" target="_blank">Custom Action</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms438085.aspx" target="_blank">Custom Action Group</a>             <br /><a href="http://msdn.microsoft.com/en-us/library/aa979484.aspx" target="_blank">Document Converter</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/aa544294.aspx" target="_blank">Feature/Site Template Association</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms414790.aspx" target="_blank">Hide Custom Action</a> </p>
</td>
<td valign="top" width="295">
<p><a href="http://msdn2.microsoft.com/en-us/library/ms463169.aspx" target="_blank">Control</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms458635.aspx" target="_blank">Custom Action</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms438085.aspx" target="_blank">Custom Action Group</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/aa544294.aspx" target="_blank">Feature/Site Template Association</a>             <br /><a href="http://msdn2.microsoft.com/en-us/library/ms414790.aspx" target="_blank">Hide Custom Action</a></p>
</td>
</tr>
</tbody>
</table>
<p><strong>Source:</strong> <a title="http://msdn.microsoft.com/en-us/library/ms454835.aspx" href="http://msdn.microsoft.com/en-us/library/ms454835.aspx">http://msdn.microsoft.com/en-us/library/ms454835.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/sharepoint-feature-scopes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to add a SharePoint WebPart to a group other than Miscellaneous</title>
		<link>http://blog.domcosgrove.com/how-to-add-a-sharepoint-webpart-to-a-group-other-than-miscellaneous/</link>
		<comments>http://blog.domcosgrove.com/how-to-add-a-sharepoint-webpart-to-a-group-other-than-miscellaneous/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 08:29:47 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/?p=38</guid>
		<description><![CDATA[By default, SharePoint web parts are always put into a web part group called “Miscellaneous”. All you need to do is locate your Feature Element Manifest XML file and add a Property Element called Group and assign it a value. This is normally the XML file that is in your WebPart Folder. Nice and easy [...]]]></description>
			<content:encoded><![CDATA[<p>By default, SharePoint web parts are always put into a web part group called “Miscellaneous”.</p>
<p>All you need to do is locate your Feature Element Manifest XML file and add a Property Element called Group and assign it a value. This is normally the XML file that is in your WebPart Folder.</p>
<p>Nice and easy hey… enjoy <img src='http://blog.domcosgrove.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/how-to-add-a-sharepoint-webpart-to-a-group-other-than-miscellaneous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get SharePoint Installation Directory Path</title>
		<link>http://blog.domcosgrove.com/get-sharepoint-installation-directory-path/</link>
		<comments>http://blog.domcosgrove.com/get-sharepoint-installation-directory-path/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 13:29:23 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/?p=260</guid>
		<description><![CDATA[If you need to get the SharePoint Installation Directory Path then you can use the SPUtility.GetGenericSetupPath method. For instance if you needed to get the path to a features directory to load some XML you could use the following syntax: string FeaturesPath = SPUtility.GetGenericSetupPath(@&#8221;TEMPLATE\FEATURES\&#8221; + FeatureName) The SPUtility Class is full of static methods for [...]]]></description>
			<content:encoded><![CDATA[<p>If you need to get the SharePoint Installation Directory Path then you can use the <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.getgenericsetuppath.aspx">SPUtility.GetGenericSetupPath</a> method. For instance if you needed to get the path to a features directory to load some XML you could use the following syntax:</p>
<p>string FeaturesPath = SPUtility.GetGenericSetupPath(@&#8221;TEMPLATE\FEATURES\&#8221; + FeatureName)</p>
<p>The <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.utilities.sputility.aspx">SPUtility Class</a> is full of static methods for assisting you in your SharePoint Development.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/get-sharepoint-installation-directory-path/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SPDisposeCheck</title>
		<link>http://blog.domcosgrove.com/spdisposecheck/</link>
		<comments>http://blog.domcosgrove.com/spdisposecheck/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 16:42:13 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Trouble Shooting]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/?p=281</guid>
		<description><![CDATA[Every SharePoint Developer should have SPDisposeCheck Tool in there arsnel! This tool, developed by the guys on the SharePoint Team will intergoate your compiled .dll&#8217;s to ensure that you are correctly disposing of SharePoint objects, primarily SPSite and SPWeb. Why do we need to dispose of SharePoint object, well from the horses mouth as such [...]]]></description>
			<content:encoded><![CDATA[<p>Every SharePoint Developer should have <a title="SPDisposeCheck Tool" href="http://code.msdn.microsoft.com/SPDisposeCheck" target="_blank">SPDisposeCheck Tool</a> in there arsnel! This tool, developed by the guys on the SharePoint Team will intergoate your compiled .dll&#8217;s to ensure that you are correctly disposing of SharePoint objects, primarily SPSite and SPWeb. Why do we need to dispose of SharePoint object, well from the horses mouth as such :</p>
<p><em>&#8220;Several of the Windows SharePoint Services objects, primarily the <a id="ctl00_MainContent_ctl03" onclick="javascript:Track('ctl00_MainContent_ctl00|ctl00_MainContent_ctl03',this);" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsite.aspx">SPSite</a> class and <a id="ctl00_MainContent_ctl04" onclick="javascript:Track('ctl00_MainContent_ctl00|ctl00_MainContent_ctl04',this);" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.aspx">SPWeb</a> class objects, are created as managed objects. However, these objects use unmanaged code and memory to perform the majority of their work. The managed part of the object is much smaller than the unmanaged part. Because the smaller managed part does not put memory pressure on the garbage collector, the garbage collector does not release the object from memory in a timely manner. The object&#8217;s use of a large amount of unmanaged memory can cause some of the unusual behaviors described earlier. Calling applications that work with <strong>IDisposable</strong> objects in Windows SharePoint Services must dispose of the objects when the applications finish using them. You should not rely on the garbage collector to release them from memory automatically.&#8221;</em></p>
<p>Roger Lamb has an excellent blog article -<a href="http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx#SPDisposeCheckID_130" target="_blank"> SharePoint 2007 and WSS 3.0 Dispose Patterns by Example</a></p>
<p><strong>Add SPDisposeCheck to Visual Studio</strong></p>
<p>Visual Studio IDE allows you to add External Tools such as SPDisposeCheck. The follow steps explain how:</p>
<p>1. In Visual Studio select <strong>Tools | External Tools</strong></p>
<p>2. Add the following settings:</p>
<p><strong>Title</strong>:  SPDisposeCheck<br />
<strong>Command</strong>: C:\Program Files\Microsoft\SharePoint Dispose Check\SPDisposeCheck.exe<br />
<strong>Arguements</strong>: $(TargetName)$(TargetExt)<br />
<strong>Initial Directory</strong>: $(TargetDir)<br />
<strong>Use Output Window</strong>: Checked</p>
<p><em></p>
<div id="attachment_282" class="wp-caption alignnone" style="width: 310px"><em><img class="size-medium wp-image-282" title="SPDisposeCheck_ExternalTools" src="http://blog.domcosgrove.com/wp-content/uploads/2010/02/SPDisposeCheck_ExternalTools-300x296.png" alt="SP Dispose Check External Tools" width="300" height="296" /></em><p class="wp-caption-text">SP Dispose Check External Tools</p></div>
<p></em><strong>Reference</strong><em></em></p>
<p><a href="http://msdn.microsoft.com/en-us/library/aa973248.aspx" target="_blank">Introduction to Using Disposable Windows SharePoint Services Objects</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/spdisposecheck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint ServerTemplate ID’s</title>
		<link>http://blog.domcosgrove.com/sharepoint-servertemplate-id%e2%80%99s/</link>
		<comments>http://blog.domcosgrove.com/sharepoint-servertemplate-id%e2%80%99s/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 08:23:51 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/?p=28</guid>
		<description><![CDATA[This is a quick reference for all the SharePoint Server Template IDs. 100 Generic list   101 Document library 102 Survey   103 Links list 104 Announcements list   105 Contacts list 106 Events list   107 Tasks list 108 Discussion board   109 Picture library 110 Data sources   111 Site template gallery 112 [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>This is a quick reference for all the SharePoint Server Template IDs.</p>
<table border="0" cellspacing="0" cellpadding="2" width="609">
<tbody>
<tr>
<td width="45" valign="top"><strong>100</strong></td>
<td width="215" valign="top">Generic list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>101</strong></td>
<td width="265" valign="top">Document library</td>
</tr>
<tr>
<td width="45" valign="top"><strong>102</strong></td>
<td width="215" valign="top">Survey</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>103</strong></td>
<td width="265" valign="top">Links list</td>
</tr>
<tr>
<td width="45" valign="top"><strong>104</strong></td>
<td width="215" valign="top">Announcements list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>105</strong></td>
<td width="265" valign="top">Contacts list</td>
</tr>
<tr>
<td width="45" valign="top"><strong>106</strong></td>
<td width="215" valign="top">Events list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>107</strong></td>
<td width="265" valign="top">Tasks list</td>
</tr>
<tr>
<td width="45" valign="top"><strong>108</strong></td>
<td width="215" valign="top">Discussion board</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>109</strong></td>
<td width="265" valign="top">Picture library</td>
</tr>
<tr>
<td width="45" valign="top"><strong>110</strong></td>
<td width="215" valign="top">Data sources</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>111</strong></td>
<td width="265" valign="top">Site template gallery</td>
</tr>
<tr>
<td width="45" valign="top"><strong>112</strong></td>
<td width="215" valign="top">User Information list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>113</strong></td>
<td width="265" valign="top">Web Part gallery</td>
</tr>
<tr>
<td width="45" valign="top"><strong>114</strong></td>
<td width="215" valign="top">List template gallery</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>115</strong></td>
<td width="265" valign="top">XML Form library</td>
</tr>
<tr>
<td width="45" valign="top"><strong>116</strong></td>
<td width="215" valign="top">Master pages gallery</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>117</strong></td>
<td width="265" valign="top">No-Code Workflows</td>
</tr>
<tr>
<td width="45" valign="top"><strong>118</strong></td>
<td width="215" valign="top">Custom Workflow Process</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>119</strong></td>
<td width="265" valign="top">Wiki Page library</td>
</tr>
<tr>
<td width="45" valign="top"><strong>120</strong></td>
<td width="215" valign="top">Custom grid for a list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>130</strong></td>
<td width="265" valign="top">Data Connection library</td>
</tr>
<tr>
<td width="45" valign="top"><strong>140</strong></td>
<td width="215" valign="top">Workflow History</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>150</strong></td>
<td width="265" valign="top">Gantt Tasks list</td>
</tr>
<tr>
<td width="45" valign="top"><strong>200</strong></td>
<td width="215" valign="top">Meeting Series list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>201</strong></td>
<td width="265" valign="top">Meeting Agenda list</td>
</tr>
<tr>
<td width="45" valign="top"><strong>202</strong></td>
<td width="215" valign="top">Meeting Attendees list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>204</strong></td>
<td width="265" valign="top">Meeting Decisions list</td>
</tr>
<tr>
<td width="45" valign="top"><strong>207</strong></td>
<td width="215" valign="top">Meeting Objectives list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>210</strong></td>
<td width="265" valign="top">Meeting text box</td>
</tr>
<tr>
<td width="45" valign="top"><strong>211</strong></td>
<td width="215" valign="top">Meeting Things To Bring list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>212</strong></td>
<td width="265" valign="top">Meeting Workspace Pages list</td>
</tr>
<tr>
<td width="45" valign="top"><strong>300</strong></td>
<td width="215" valign="top">Portal Sites list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>301</strong></td>
<td width="265" valign="top">Blog Posts list</td>
</tr>
<tr>
<td width="45" valign="top"><strong>302</strong></td>
<td width="215" valign="top">Blog Comments list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>303</strong></td>
<td width="265" valign="top">Blog Categories list</td>
</tr>
<tr>
<td width="45" valign="top"><strong>850</strong></td>
<td width="215" valign="top">Page Library</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>1100</strong></td>
<td width="265" valign="top">Issue tracking</td>
</tr>
<tr>
<td width="45" valign="top"><strong>1200</strong></td>
<td width="215" valign="top">Administrator tasks list</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"><strong>2002</strong></td>
<td width="265" valign="top">Personal document library</td>
</tr>
<tr>
<td width="45" valign="top"><strong>2003</strong></td>
<td width="215" valign="top">Private document library</td>
<td width="37" valign="top"> </td>
<td width="45" valign="top"> </td>
<td width="265" valign="top"> </td>
</tr>
</tbody>
</table>
<p>You can get the List Templates using <strong><em><a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.listtemplates.aspx">SPWeb.ListTemplates</a></em></strong></p>
<p><strong>References:</strong></p>
<p><a title="http://msdn.microsoft.com/en-us/library/ms415091.aspx" href="http://msdn.microsoft.com/en-us/library/ms415091.aspx">http://msdn.microsoft.com/en-us/library/ms415091.aspx</a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/sharepoint-servertemplate-id%e2%80%99s/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting the value of a BDC field Programmatically</title>
		<link>http://blog.domcosgrove.com/setting-the-value-of-a-bdc-field-programmatically/</link>
		<comments>http://blog.domcosgrove.com/setting-the-value-of-a-bdc-field-programmatically/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 08:24:33 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[BDC]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/?p=30</guid>
		<description><![CDATA[You cannot set the value of a BDC (Business Data Catalog) field in the same way that you set standard fields in SharePoint e.g: SPListItem item = myList.Items.Add(); item["Title"] = "Product Information"; Instead you must use the EncodeEntityInstanceId method of the EntityInstanceIdEncoder class of the  Microsoft.Office.Server.ApplicationRegistry.Infrastructure class library. First you can detect if your field [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>You cannot set the value of a BDC (Business Data Catalog) field in the same way that you set standard fields in SharePoint e.g:</p>
<div style="line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: gray 1px solid; padding: 4px;">
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">SPListItem item = myList.Items.Add();
item[<span style="color: #006080;">"Title"</span>] = <span style="color: #006080;">"Product Information"</span>;</pre>
</div>
<p>Instead you must use the EncodeEntityInstanceId method of the EntityInstanceIdEncoder class of the  Microsoft.Office.Server.ApplicationRegistry.Infrastructure class library. First you can detect if your field is a BDC field by:</p>
<div style="line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: gray 1px solid; padding: 4px;">
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #0000ff;">if</span>(item.Fields[<span style="color: #006080;">"MyField"</span>].TypeAsString == <span style="color: #006080;">"BusinessData"</span>)</pre>
</div>
<p>You then need to:</p>
<div style="line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: gray 1px solid; padding: 4px;">
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"><span style="color: #008000;">//Get a reference to the field</span>
SPField myField = spItem.Fields[<span style="color: #006080;">"EmployeeID];

//Get the entity Name for the field
XmlDocument xmlData = new XmlDocument();
xmlData.LoadXml(myField.SchemaXml);
String entityName = xmlData.FirstChild.Attributes["</span>RelatedFieldWssStaticName<span style="color: #006080;">"].Value;

//Set the Entity Instance value
spItem[entityName] = EntityInstanceIdEncoder.EncodeEntityInstanceId(new object[] { "</span>123456<span style="color: #006080;">" });

//Set the field display value
spItem["</span>EmployeeID<span style="color: #006080;">"] = "</span>123456;</pre>
</div>
</div>
<div>1 comments <span> </span>Saturday, January 24, 2009 <span><a title="Edit Post" href="http://www.blogger.com/post-edit.g?blogID=2398837868960473579&amp;postID=5266961404946009785"></a></span></div>
<div><a name="4939642700629188219"></a></p>
<h2><a href="http://spdom.blogspot.com/2009/01/connected-webparts-no-filtered.html">Connected WebParts – No Filtered Parameters</a></h2>
<p><span>Posted by <span>Dominick Cosgrove</span> </span>at <abbr title="2009-01-21T21:05:00Z">9:05 PM</abbr> Labels: <a rel="tag" href="http://spdom.blogspot.com/search/label/Development">Development</a>, <a rel="tag" href="http://spdom.blogspot.com/search/label/SharePoint">SharePoint</a></div>
<div>
<p>OK this may be obvious but it caught me out and god knows it caused me to tear my hair out for a while.</p>
<p>I was creating a custom consumer WebPart that I wanted to connect to a URL and BDC Filter WebParts. There are loads of examples out there of how to do this. Basically Windows SharePoint Services makes use of the connection framework and provides additional interfaces called <strong>IFilterValues</strong> and <strong>IItransformableFilterValues</strong> to make it easy to create Web Part connections for filtering scenarios.</p>
<p>The issue I had was once I implement the code as per the various examples on the web, there were no filter parameters available to when you configure the connection.</p>
<p><a href="http://lh4.ggpht.com/_iiSGaNIff2A/SXeN-TPPNHI/AAAAAAAAACc/JaOyvdISTeg/s1600-h/image4.png"><img style="display: inline; border-width: 0px;" title="image" src="http://lh6.ggpht.com/_iiSGaNIff2A/SXeN-51vgFI/AAAAAAAAACg/utTnleDtkLw/image_thumb2.png?imgmax=800" border="0" alt="image" width="318" height="163" /></a></p>
<p>The problem lies with the <strong>ConsumerParameterCapabilities </strong>Enumeration<strong>,</strong> which is used by a consumer Web part to indicate supported filter parameter capabilities. The samples on the web all seem to use:</p>
<p>ConsumerParameterCapabilities.SupportsMultipleValues</p>
<p><em><strong><span style="font-size: medium;">and</span></strong></em></p>
<p>ConsumerParameterCapabilities.SupportsAllValue</p>
<p>Unfortunately this did not seem sufficient for the BDC and URL filter WebParts, after some trail and error I established that the minimum required is:</p>
<p>ConsumerParameterCapabilities.SupportsAllValue</p>
<p><span style="font-size: medium;"><strong><em>or</em></strong></span></p>
<p>ConsumerParameterCapabilities.SupportsEmptyValue</p>
<p>How ever it does work if you specify all ConsumerParameterCapabilites. The ConsumerParameter method allows you to have or statements so you can effectively set the parameters like this:</p>
<div style="line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: gray 1px solid; padding: 4px;">
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">parameters.Add(<span style="color: #0000ff;">new</span> ConsumerParameter(
                    <span style="color: #006080;">"Personnel Number"</span>,
                    ConsumerParameterCapabilities.SupportsAllValue
                    |
                    ConsumerParameterCapabilities.SupportsEmptyValue
                    )</pre>
</div>
<p><strong><em><span style="font-size: medium;">or </span></em></strong></p>
<div style="line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: consolas, 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: gray 1px solid; padding: 4px;">
<pre style="line-height: 12pt; background-color: #f4f4f4; margin: 0em; width: 100%; font-family: consolas, 'Courier New', courier, monospace; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;">parameters.Add(<span style="color: #0000ff;">new</span> ConsumerParameter(
                    <span style="color: #006080;">"Personnel Number"</span>,
                    ConsumerParameterCapabilities.SupportsAllValue
                    |
                    ConsumerParameterCapabilities.SupportsEmptyValue
                    |
                    ConsumerParameterCapabilities.SupportsMultipleValues
                    |
                    ConsumerParameterCapabilities.SupportsSingleValue
                    )
                );</pre>
</div>
<p>So to summaries, make sure you are using the correct ConsumerParameterCapabilities for your provider webpart or else you will not see the parameters you are expecting to see.</p>
<p><strong>References</strong></p>
<p><a href="http://msdn.microsoft.com/en-us/library/ms569191.aspx">Writing a Simple Filter Consumer Web Part Sample</a></p>
<p><a href="http://www.sharepointblogs.com/tonstegeman/archive/2007/09/21/moss-2007-filter-webparts-part-1-create-your-own-provider-and-consumer.aspx">MOSS 2007 Filter webparts part 1 &#8211; create your own provider and consumer</a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/setting-the-value-of-a-bdc-field-programmatically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Query Child Content Types in your CAML Query</title>
		<link>http://blog.domcosgrove.com/query-child-content-types-in-your-caml-query/</link>
		<comments>http://blog.domcosgrove.com/query-child-content-types-in-your-caml-query/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 08:25:21 +0000</pubDate>
		<dc:creator>Dominick Cosgrove</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[CAML]]></category>

		<guid isPermaLink="false">http://blog.domcosgrove.com/?p=32</guid>
		<description><![CDATA[The Content Query Web Part that ships with MOSS and is enabled with the Publishing Feature has an option to include the child content types of that content type in filtering the data. I wanted to replicate this functionality in my own WebPart that utilized the SPSiteDataQuery to query the site. The SPSiteDataQuery accepts a [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>The Content Query Web Part that ships with MOSS and is enabled with the Publishing Feature has an option to include the child content types of that content type in filtering the data. I wanted to replicate this functionality in my own WebPart that utilized the SPSiteDataQuery to query the site. The SPSiteDataQuery accepts a CAML query to filter the results.</p>
<p><a href="http://lh6.ggpht.com/_iiSGaNIff2A/SW9EYGfG--I/AAAAAAAAACM/obG6YiFH9Pw/s1600-h/image%5B18%5D.png"><img style="display: inline; border-width: 0px;" title="image" src="http://lh4.ggpht.com/_iiSGaNIff2A/SW9EY9GxhyI/AAAAAAAAACQ/258r65welnQ/image_thumb%5B10%5D.png?imgmax=800" border="0" alt="image" width="197" height="322" /></a></p>
<p>It is easy enough to query for all documents in a site that are of content type x:</p>
<p>&lt;Where&gt;<br />
  &lt;Eq&gt;<br />
    &lt;FieldRef Name=’ContentType’/&gt;<br />
    &lt;Value Type=’Text’&gt;HR Document&lt;/Value&gt;<br />
  &lt;/Eq&gt;<br />
&lt;/Where&gt;</p>
<p>But what happens if you want to query all children of content type x. In this example if you had CV, Application Form e.t.c. which all inherited from HR Document how do you build your query. You can add each additional Content Type into the WHERE clause of the CAML query, but this is an convoluted approach as any time you add a new child content type you’ll have to modify your CAML query.</p>
<p>The answer lies with how the ContentTypeID is constructed in SharePoint. The ContentTypeID is a concatenation of parent child ContentTypeIDs, this is to say that a ContentTypeID is composed of its parent ContentTypeID post fixed with a  it’s own identifier.</p>
<table border="1" cellspacing="0" cellpadding="2" width="652">
<tbody>
<tr>
<td width="135" valign="top"><strong>Content Type</strong></td>
<td width="173" valign="top"><strong>Parent Content Type</strong></td>
<td width="342" valign="top"><strong>Content Type ID</strong></td>
</tr>
<tr>
<td width="135" valign="top">System</td>
<td width="171" valign="top"> </td>
<td width="344" valign="top">0x</td>
</tr>
<tr>
<td width="134" valign="top">Item</td>
<td width="170" valign="top">System</td>
<td width="346" valign="top">0&#215;01</td>
</tr>
<tr>
<td width="134" valign="top">Document</td>
<td width="169" valign="top">Item</td>
<td width="347" valign="top">0&#215;0101</td>
</tr>
<tr>
<td width="133" valign="top">HR Document</td>
<td width="169" valign="top">Document</td>
<td width="348" valign="top">0x0101002C3431777FFD0742A58D02ABC9C5FA62</td>
</tr>
<tr>
<td width="133" valign="top">CV</td>
<td width="169" valign="top">HR Document</td>
<td width="348" valign="top">0x0101002C3431777FFD0742A58D02ABC9C5FA6201</td>
</tr>
<tr>
<td width="133" valign="top">Application Form</td>
<td width="169" valign="top">HR Document</td>
<td width="349" valign="top">0x0101002C3431777FFD0742A58D02ABC9C5FA6202</td>
</tr>
</tbody>
</table>
<p>Knowing this you can construct a CAML query that uses the &lt;BeginsWith&gt; select statement.</p>
<p>To return all Documents you can use the following query:</p>
<p>&lt;Where&gt;<br />
   &lt;BeginsWith&gt;<br />
     &lt;FieldRef Name=&#8217;ContentTypeId&#8217;/&gt;<br />
     &lt;Value Type=&#8217;Text&#8217;&gt;0&#215;0101&lt;/Value&gt;<br />
   &lt;/BeginsWith&gt;<br />
&lt;/Where&gt;</p>
<p>To return all HR Documents you can use the following query:</p>
<p>&lt;Where&gt;<br />
   &lt;BeginsWith&gt;<br />
     &lt;FieldRef Name=&#8217;ContentTypeId&#8217;/&gt;<br />
     &lt;Value Type=&#8217;Text&#8217;&gt;0x0101002C3431777FFD0742A58D02ABC9C5FA62&lt;/Value&gt;<br />
   &lt;/BeginsWith&gt;<br />
&lt;/Where&gt;</p>
<p>You can find the ContentTypeID by going to Site Actions | Site Settings | Site Content Types, and select the parent content type you are interested in. In the URL you will see the ContentTypeID in the page URL. For example:</p>
<p><a href="http://lh3.ggpht.com/_iiSGaNIff2A/SW9EZlY9g9I/AAAAAAAAACU/0BdV9YJ2EkU/s1600-h/image%5B5%5D.png"><img style="display: inline; border-width: 0px;" title="image" src="http://lh5.ggpht.com/_iiSGaNIff2A/SW9EamkzjvI/AAAAAAAAACY/yZP7hCL5kw0/image_thumb%5B3%5D.png?imgmax=800" border="0" alt="image" width="519" height="305" /></a></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.domcosgrove.com/query-child-content-types-in-your-caml-query/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

