Development

Using the SharePoint SiteMapProvider

Did you ever wanted to create a Webpart for site navigation? Well, you can use the SPSiteMapProvider from SharePoint. In your Webpart you could use this code to access the SPSiteMapProvider. 1: SPSiteMapProvider sitemapProvider = (SPSiteMapProvider)SiteMap.Providers["SPSiteMapProvider"]; <pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none"><span style="color:#606060"> 2:</span> SiteMapDataSource datasource = <span style="color:#0000ff">new</span> SiteMapDataSource();</pre> <pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none"><span style="color:#606060"> 3:</span> datasource.Provider = sitemapProvider;</pre> This Datasource can be the datasource for a regular ASP.

Updated WikiWebpart + Tool to install it

I updated my WikiWebpart. You can now download it as a SharePoint Solution. Steps to install the solution: Install the solution via “stsadm -o addsolution -filename RH.WikiWebpart.wsp” Go to your "Central Administration > Operations" and deploy the solution 1. * * Active the Feature for your Sitecollection Go to “Site Actions > Site Settings > Site Collection Administration > Site collection features” and active the feature ##### Add the Webpart to your Wiki library

SharePointConsole

I wrote a Console application, which will allow you do some common tasks for your SharePoint environment. stsadm lacks some functionality like recyling all list items from a list… Just copy the exe to your SharePoint Server, and execute it with an account which has the appropriate rights on your farm. Usage: SharePointConsole http://siteurl[/weburl] Command [Parameter1 Parameter2] The SharePointConsole has the following parameters: EnumContentTypes CreateContentType RenameContentType DeleteContentType DeleteAllListItems ShowInNewForm ShowInEditForm ShowInDisplayForm DeleteAllVersions RecycleAllVersions SetTitleWithFilename SetSearchCenterUrl SystemUpdate FeatureManager EmptyRecycleBin EnumContentType:

HowTo create an object if you only have its type as string

Sometimes you have only the type of an object, which you want to create. Meaning you want to create an object dynamically. This is how you would achieve your goal: In my case I wanted to create a SPField from its typename. 1: string typename = “Microsoft.SharePoint.SPFieldText, Microsoft.SharePoint, “+ <span class=lnum> 2: </span> <span class=str>"Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"</span>; 3: Type t = Type.GetType(typename, true, true); <span class=lnum> 4: </span><span class=kwrd>object</span> newObject = System.

Create an audience which contains an Active Directory Group

In the SDK are examples on how to create an audience which adds a rule like: 1: AudienceRuleComponent r1 = new AudienceRuleComponent("FirstName", "Contains", "John"); But how do you create a rule which takes the membership of an Active Directory Group? Well, look at this: 1: string groupName = "CN=Users,CN=Builtin,DC=domain,DC=tld"; <pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none"><span style="color:#606060"> 2:</span> AudienceRuleComponent r1 = <span style="color:#0000ff">new</span> AudienceRuleComponent(<span style="color:#006080">"DL"</span>, <span style="color:#006080">"Member of"</span>, groupName);</pre> To get the ‘distinguishedName’ from a group, you can use ADSI Edit (open up a MMC and add the ADSI Edit Snap-In).

Display all my alerts

The "old" SharePoint Server 2003 offered the ability to display all alerts from a user on his/her MySite. MOSS and SharePoint 2010 lacks this functionality. So I wrote a Webpart, which will display all my alerts. Of course is multilingual. Currently there is English, German and Spanish language support included. And it will work on Windows SharePoint Services V3 as well ass SharePoint Foundation. You don’t need the Office Server / SharePoint Server 2010 for it 🙂

HowTo use the resource files from SharePoint

How about using the available resources from SharePoint to translate some basic words and sentences? Well, it is quite easy to use the available resources. You need the Microsoft.SharePoint.Intl.dll and some lines of code to use the already translated resources: // define yourself variables private readonly CultureInfo _Cult; private readonly Assembly _SharePoint_Intl_Assembly; private readonly ResourceManager _SharePoint_RM; private readonly ResourceManager _SharePoint_WebPartPage_RM; // initialize them in your constructor _SharePoint_Intl_Assembly = Assembly.Load("Microsoft.SharePoint.intl, Version=12.

Custom assemblies for the Reporting Services 2005

Even if the Reporting Services are very powerfull, you might get to the point where you have to extend the building functionality. So why not write your own custom assembly with some additional code? Create your assembly like this: 1: using System;<br> 2: using System.Security.Permissions;<br> 3: using Microsoft.SharePoint;<br> 4: <br> 5: public class MyNamespace<br> 6: {<br> 7: public class ReportingExtension<br> 8: {<br> 9: public ReportingExtension()<br> 10: {<br> 11: }<br> 12: <br> 13: public static string HelloWorld()<br> 14: {<br> 15: return "Hello World.

Updated Wiki Webpart

Please use my custom field type. It is more flexible –> http://www.hezser.de I updated my Wiki Webpart. For all of you who don’t know what it does: The normal Wiki Edit Form misses the ability to upload pictures. My Webpart, which has to be included to the EditForm.aspx, allows you to upload a picture. It also creates a link in your Wiki post, which displays the uploaded image. This release of the Webpart is multi lingual.

updated SDKs

The updated SDKs are now available for downloading. SharePoint Server 2007 SDK: Software Development Kit and Enterprise Content Management Starter Kit Windows SharePoint Services 3.0: Software Development Kit (SDK)

Get form Url from a list

Whenever you have an ID from a list item, you might want to create a link to its DispForm or EditForm. But how do you get the Url to the forms? 1: SPList list = something; <span class=lnum> 2: </span>list.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url;

Create an eventlog entry

For exception handling it is good practice to write errors to the eventlog.EventLog.WriteEntry(“SharePoint.Error”, errorText, EventLogEntryType.Error); Since SP1 for Windows Server 2003 “the normal user” is not allowed to write to the eventlog. James Kovacs wrote a great article about the problem. (Remember to create your eventlog source, if you have your own!) 1: if(!EventLog.SourceExists(“SharePoint.Error”, ".")) { <span class=lnum> 2: </span> EventLog.CreateEventSource(<span class=str>"SharePoint.Error"</span>, <span class=str>"Application"</span>, <span class=str>"."</span>); 3: }

How to get LookupField Information from a listItem

If you want the ID or the value form a LookupField, you can get it easily with this code snippet:SPListItem item = getitsomewhare… SPFieldLookupValue lf = (SPFieldLookupValue) item.ParentList.Fields.GetField(_FieldName).GetFieldValue( item.GetFormattedValue(_FieldName)); if you got the field, fetch its properties viaif (lf == null) { int itemID = lf.LookupId; string itemValue = lf.LookupValue; } Have fun ;-)

Get a listitem by ID

Fetching a listitem by ID will generate an error, if the a listitem with the ID does not exist. To avoid this exception, you can get a listitem by id by searching for it:private SPListItem GetListItem(SPList List, int ListItemID) { try { string defaultView = List.DefaultView.Title; SPQuery query = new SPQuery(List.Views[defaultView]); string caml = String.Format("{0}", ListItemID); query.Query = caml; SPListItemCollection results = List.GetItems(query); if (results.Count == 1) { return results[0]; } } catch (Exception ex) { _ErrorMessage +=