View of a List to filter list items for the current logged in user
This has become a serious requirement in two of the projects we are dealing with, so I thought it is worth sharing with the community.
Let’s say, you have a list for which you want to display all the list items Created By the currently logged in user. There are two ways to do it:
A) Through web browser interface: List settings –> Filter –> Choose Created By field and make it equal to [Me]
B) If you want to put it in your site def, things are done a little bit differently.
First of all, the [Me] operator only works on lookup fields bound to the list “user information” and on the built-in system fields (i.e. “created by” OR “modified by”)
Secondly, at the end of the day [Me] is translated to an integer. In order to implement such a functionality you should locate the Schema.xml of the list or document library for which you wish to create this view for and follow these steps:
1) Open Schema.xml
2) Find views element
3) Either create a new view element or insert the following snippet into one of the existing views for which you want to implement the filter:
<Query>
<Where>
<Eq>
<FieldRef Name=”Author” />
<Value Type=”Integer”>
<UserID Type=”Integer” />
</Value>
</Eq>
</Where>
</Query>
This will turn out to an actual T-SQL with where clause and equal operator (
4) Save Schema.xml
5) Restart IIS
Now you have the view with a filter on the current logged in user. In next post I will show you how to implement the same functionality using content query web part (CQWP) which is awesome for cases of this kind.