SharePoint

How to use the SharePoint Web Controls

SharePoint brings its own controls, which can be used to display list items. In this article I want to show you how to use them in a Webpart. It took me a while to figure this out, because the documentation is kind of incomplete L

OK. Lets start. First lets find out which SharePoint Web Control belongs to which data type in SharePoint.

 

 

 

 

 

SharePoint Web Control

SharePoint data type

Write a SPFieldUser

If you have a list which contains a SPFieldUser field (with multiple selection), you can add users too it with the following code:

using (SPSite site = new
SPSite(“http://site”))

{

using (SPWeb web = site.AllWebs[“Web”])

<span style="font-family:Consolas;font-size:10pt">    {<br /> </span>

   <span style="font-family:Consolas;font-size:10pt">    <span style="color:#2b91af">SPList</span> list = web.Lists[<span style="color:#a31515">"List"</span>];<br /> </span>

    <span style="font-family:Consolas;font-size:10pt">    <span style="color:#2b91af">SPListItem</span> item = list.Items[0];<br /> </span>

    <span style="font-family:Consolas;font-size:10pt">    <span style="color:#2b91af">SPFieldUserValueCollection</span> values = (<span style="color:#2b91af">SPFieldUserValueCollection</span>)item[<span style="color:#a31515">"Users"</span>];<br /> </span>

    <span style="font-family:Consolas;font-size:10pt">    <span style="color:#2b91af">SPUserCollection</span> users = web.AllUsers;<br /> </span>

    <span style="font-family:Consolas;font-size:10pt">    <span style="color:blue">foreach</span> (<span style="color:#2b91af">SPUser</span> user <span style="color:blue">in</span> users)<br /> </span>

    <span style="font-family:Consolas;font-size:10pt">    {<br /> </span>

        <span style="font-family:Consolas;font-size:10pt">        values.Add(<span style="color:blue">new</span><br /> <span style="color:#2b91af">SPFieldUserValue</span>(web, user.ID, user.Name));<br /> </span>

    <span style="font-family:Consolas;font-size:10pt">    }<br /> </span>

    <span style="font-family:Consolas;font-size:10pt">    item[<span style="color:#a31515">"Users"</span>] = values;<br /> </span>

    <span style="font-family:Consolas;font-size:10pt">    item.Update();<br /> </span>

<span style="font-family:Consolas;font-size:10pt">    }<br /> </span>

}

Ajax Webpart displays Webservice data

In this post I want to show how to create an Ajax Webpart, which receives its data from a Webservice – and until the data arrived – shows a status bar.

As base for the Webpart, I took the one from Mark Collins and his great article http://sharethispoint.com/archive/2006/11/15/Build-web-parts-with-ajax.aspx.

The approach is to render the Webpart with only a

, and let the client – after it finishes querying the Webservice – fill the data into the
previously created.

Webpart Development

Visual Studio Extensions

If you want to write your own Webpart, you can start from scratch with a Class Library, or use the templates from http://www.microsoft.com/downloads/details.aspx?FamilyID=19f21e5e-b715-4f0c-b959-8c6dcbdc1057&DisplayLang=en

The downside of this VS templates is, that they can only be used on a computer, which has SharePoint installed, and you cannot open a project created with the VS templates with a VS on which the templates are not installed.

Server side controls

Ishai Sagi wrote a great article about Webpart development. His article is about server side controls and data binding in Webparts.

Extend the simple Webpart

Now that we know how to create a simple Webpart, we want to add more functionality to it. Let us start with some Controls.

  1. Declare a Control as class variable
  2. Create it in CreateChildControls
  3. Modify the Control in OnPreRender
  4. Render the Control with its content

Declare a Control

public
class
simpleWebpart:WebPart

{

private
HtmlGenericControl _MyDiv;

CreateChildControls

This method creates the control. After the creation, we will be able to access the control from elsewhere, to modify its properties or its content.

Deploy and Debug a Webpart to your SharePoint Server

To deploy a Webpart to a SharePoint Installation, complete the 3 steps beneath:

  1. Copy the dll from your Webpart to the bin folder of a webapplication
  2. Register the dll in the web.config as safe
  3. Add the Webpart to the Webpartgallery of a sitecollection
  4. Debug the Webpart

Copy the dll from your Webpart to the bin folder of a webapplication

Copy your dll to the bin folder of your IIS virtual server directory. In my case this is “C:\Inetpub\wwwroot\wss\VirtualDirectories\45079\bin”.

Create a simple Webpart HOWTO

In this blog post, I want to show you how to create a simple Webpart. All you need is a Visual Studio 2005 (e.g. the express version) and of course SharePoint.

  1. Start your VS and create a new “Class Library”
    • Add a reference to the Microsoft.SharePoint.dll. We will create a SharePoint Webpart, to be able to add Properties.

      • To display some text, override the render method. You have to create a reference to the Microsoft.Web.dll, and type using System.Web.UI;
namespace simple_Webpart_HOWTO

{

Wiki mit Bildern Update

Falls bei der Benutzung des Webparts ein Fehler wie:

Fehler bei der Anforderung des Berechtigungstyps Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c.

auftritt, muss der Trustlevel in der web.config auf Full gesetzt werden.

Zum vollständigen Beitrag: http://www.hezser.de

Update 23. Apr 2008:

Ich habe eine neue Version bereitgestellt.

Sending Email from SharePoint

You can configure a task list, to send an email if you assign a task to somebody. This works fine if this somebody has an internal email address.

If you happen to have an account inside the environment of the SharePoint Server, and configure it to have an external email address, sending an email to this account might fail. In the SharePoint Logs there is an entry:

03/12/2007    14:40:42.29    OWSTIMER.EXE (0x059C)    0x14E8    Windows SharePoint Services    E-Mail    8gsf    High    #160009: Die E-Mail-Adresse ‘somebody@somewhere.tld’ ist unbekannt. (something like: the email address ‘somebody@somewhere.tld’ is unknown)

SharePoint Designer, default.master and access denied

If you want to modify the default.master masterpage in the root site of a sitecollection, you have to be a sitecollection owner. Otherwise you get an “access denied” error if you try to open, or check out the default.master.

SharePoint Event Handler

If you want to modify the current listitem, the OnAfterChange Event will trigger again.

You can avoid this by disabling the trigger before the update:

this.DisableEventFiring();
item.SystemUpdate(false);
this.EnableEventFiring();

Remove Server from Farm

After adding a new Server to the SharePoint farm, I removed the old one.

The central administration page was not accessible. It said “error 500” in the browser. By changing the admin port via “stsadm -o setadminport -port 12345” and back to the original port, I was able to regain access to the central administration page.

Testlink to Yvonne for EBE Tracking Test: http://yvonneharryman.wordpress.com/2009/06/28/sharepoint-beacon-is-the-new-home-for-my-blog-regarding-sharepoint/

Remove Server from Farm

After adding a new Server to the SharePoint farm, I removed the old one.

The central administration page was not accessible. It only said “error 500” in the browser. By changing the admin port via “stsadm -o setadminport -port 12345” and back to the original port, I was able to regain access to the central administration page.

Webpart, Properties and default value

If you write a Webpart with custom properties, you have to take care of the default value.

[WebBrowsable(true),
DefaultValue(“value”),
Personalizable(true),
WebDisplayName(“some property”),
WebDescription(“Description of the property”)]
public
string PropertyName
{
get { return _ PropertyName; }
set { _ PropertyName = value; }
}

Please do not specify a default value, which you might actually use. The default property value will not be saved, if you choose to configure it with the default value!