Archive
Whoami in SharePoint
One of the nicest things in SharePoint is that you can access it not only through the web interface, but through its web services as well. Combining this with AJAX, you can build pretty good user interfaces with a SharePoint backend.
When doing this you’ll definitely be interested in knowing who is currently logged in.
So if you are modifying a SharePoint generated page (like NewForm.aspx, EditForm.aspx or a page associated with a view) and add (D)HTML code to it, you can easily access the _spUserId
variable which holds the current logged in user ID in SharePoint.
From this point on if you’re interested in more details you just simply run a query against the user list using SharePoint web services.
If you want to have these information in a page of your own, you can simply run that query using the CAML tag UserID
.
<Query> <Where> <Eq> <FieldRef Name="ID"/> <Value Type="Integer"><UserID Type="Integer"/></Value> </Eq> </Where> </Query<
Just as a note, don’t forget to put Type="Integer"
in there.
If you wonder how I got over this, you should read my other article.
Discover CAML by examples
CAML is the SQL of SharePoint. If you will access SharePoint through its web services you will definately need to be familiar to a certain degree with CAML. You can read the documentation from MSDN, but I will tell you how to learn it through examples. And actually to create your own examples.
There are a few CAML builders out there, but if you know how to use SharePoint, you have a basic one hidden in there.
Let’s take it step by step.
- Go to your SharePoint
- Create a list
- Create a view for the list (for the sake of simplicity let’s name it
My View
) - Choose the conditions that you’re interested in for the query, let’s say all the items modified today, and save the view.
- Go to the list settings and save the list as a template
- Go to the template list library
- Download the template
- The template is actually a zip file. Rename it from
mylist.stp
tomylist.zip
and extract themanifest.xml
file from it. - Now open the XML file (with FireFox) and go to the element
/ListTemplate/UserLists/List/Metadata/Views/View[@DisplayName = 'My View']
(the first/ListTemplate/UserLists/List/Metadata/Views/View
for which the attributeDisplayName
isMy View
). Under this element you will find aQuery
element. This is what you need, your CAML query.
And that manifest.xml
file is also the source of some other useful stuff like the internal name of the fields (the StaticName
attribute of the /ListTemplate/UserLists/List/Metadata/Fields/Field
elements).