Development

Issues in WSS V2

Responses to items in an Issue list (SPListIssue) are new version in WSS V3. WSS V2 lacks the ability to use versions for lists. So what did Microsoft do that an Issue list behaves like it is using versions? In WSS V2 items in a single “thread” all have different ItemIDs. To group them together, all have the same IssueID. This is the ItemID from the original item. A single issue in WSS V2 could look like this:

Custom Field – Upload Files and Images

If you know my WikiWebpart or DiscussionListUploader, you know that there are some occasions where you want to upload a file, and place a link to it to another field. The above solutions are only for the certain list type. My new custom field can be used on every list or library! Just add the field to one of your lists/libraries: It will automatically try to find local libraries for documents and images to store the uploaded files and images.

How to use the SharePoint Web Controls – Update

My post How to use the SharePoint Web Controls has been updated. It now shows how to use a generic control for each SPField, instead of picking the corresponding SharePoint Web Control. 1: BaseFieldControl webControl = field.FieldRenderingControl; <span class=lnum> 2: </span>webControl.ListId = list.ID; 3: webControl.ItemId = item.ID; <span class=lnum> 4: </span>webControl.FieldName = field.Title; 5: webControl.ID = GetControlID(field); <span class=lnum> 6: </span>webControl.ControlMode = mode; Thanks for all the great comments and ideas!

SharePoint Dispose Checker Tool

As I posted earlier, MS was working on a tool which will analyze your code if you are coding against SharePoint. Here is a short description: It provides assistance in correctly disposing of certain SharePoint objects to help you follow published best practice. This tool may not show all memory leaks in your code. Further investigation is advised if you continue to experience issues. SPDisposeCheck.exe takes the path to a managed .

Coding with SharePoint? Things you should not do

Often there are multiple ways to get what you want. E.g. if you want to get a listitem, you could user list.GetItemById() or list.Items[x]. sowmyancs has posted an excellent article about performance for certain tasks –> Best Practices: SharePoint Object Model for Performance TuningTechnorati Tags: SharePoint,Performance,Object Model

Visual Studio 2008 extensions for SharePoint v1.3

As you can read on the Microsoft SharePoint Team Blog, a new version of the Visual Studio extensions have been released. This version is Community Technology Preview. And wow… yes… finally… x64 support! The download is available here. The final release of VSeWSS 1.3 is planned for the North American Spring of 2009.Technorati Tags: SharePoint,VSeWSS

Modify blog post categories

If you plan to use the CKS:EBE (Enhanced Blog Edition), you might want to update the categories of your posts, because the EBE supports multiple categories for a post. I’ve created a Windows Forms Application, which will help you with this task. Features: Update categories for blog posts Select multiple categories Remove categories from blog post Add categories to the categories list Modify the blog posts, without changing the modified date Requirements:

Is the current user anonymous?

If you want to find out if the current visitor is anonymous or logged on, you can use the context to get that information.bool anonymous = Context.User.Identity.IsAuthenticated == false; If you just go for SPWeb.Current.Web.CurrentUser, you will get logged on automatically to retrieve the current user.Technorati Tags: SharePoint,Context

Upload documents/pictures to a discussion lists

You might already know my Wiki Webpart, which allows you to upload pictures and documents to a Wiki while editing it. What is it? With this Solution you can upload images and documents from the new/edit form into existing picture/document libraries. After the file has been uploaded, a link will be inserted into the Body. This is either a or a tag, depending on the uploaded file. How does it work?

Anonymous access and elevated privileges

Accessing a SharePoint site or web with elevated privileges can be achieved in two ways. By passing a SPUserToken or with RunWithElevatedPrivileges. string currentWebUrl = SPContext.Current.Web.Url; SPSite _siteElevated; SPSecurity.RunWithElevatedPrivileges(delegate { _siteElevated = new SPSite(currentWebUrl); }); _siteElevated = new SPSite(currentWebUrl, SPContext.Current.Site.SystemAccount.UserToken); <p> As anonymous visitor you will not be able to access SPContext.Current.Site.SytemAccount.UserToken. So use SPSecurity to get elevated objects if you have anonymous access enabled. </p> Technorati Tags: SharePoint  

SPQuery, ViewFields and empty fields

If you want your query to return empty columns, you have to add Nullable=’TRUE’ to the viewfields. If you do not add the Nullable attribute, accessing the results of the query like this: oListItemAvailable[“Field1”] will give an Exception. I’ve made posted a comment about this on the page in the MSDN http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spquery.viewfields.aspx

Cancel the activation of a SPFeature

If you have ever created a SPFeatureReceiver class, you might have noticed, that there is no “FeatureActivating”. So what do you do to cancel an activation of your feature? Just throw an exception within FeatureActivated. This will cancel the activation process, and not activate the feature.throw new SPException(“The feature could not be activated."); Technorati Tags: SharePoint,SPFeature

Supported field types as source for Lookup Fields

Lookup fields are great. They can show information from other lists. I have never noticed before, that the only two supported field types for lookups are SPFieldText and SPFieldCalculated. All other field types can not be used as source for lookup fields.Technorati Tags: SharePoint,SPFieldLookup,SPFieldText,SPFieldCalculated

Webpart to show Sitecollections/Subwebs

This Webpart will show Sitecollections from the current Webapplication or Subwebs from the current web. In the Webpart properties you can choose what the Webpart will show. It uses the Logo URL of websites, if they are specified. The description of the website will show up as tooltip. I am using the RepeatedControls class to build the items. This class really makes it easy to add entries by moving the layout functionality into an own class.