Sonntag, 14. April 2013

Filtering a List by Userfield and Username

I recently had an requirement to get all Items of a List for a specific user. Usually that´s not that problem, using Server-side Code you could simply get the users SPUser-Object by SPWeb.EnsureUser and filter the list based on the SPUsers´ ID. However, I had to do that by using the Client Object Model (in detail, the Javascript API). Here the process of doing an async request to get the SPUser-Object and then do another async Request filtering by its ID didn´t make me happy at all, so I thought of another way doing that.

I found a solution by joining the List with the Hidden Userinfo-List, on that Join I was able to do a filter on the username.

Here´s the View-XML for doing that:

           <Join Type='INNER' ListAlias='User Information List'>  
                     <FieldRef Name='UserField' RefType='Id' />  
                     <FieldRef List='User Information List' Name='ID' />  
                     <FieldRef Name='MyUserName' />  
                     <Value Type='Text'>Domain\UserName</Value>  
           <Field Name='MyUserName' Type='Lookup' List='User Information List' ShowField='Name' />  

(Beware: You have to do a double-Backslash for between Domain and Username when setting the XML-String to the query, because it removes one of them)

Additionaly you can also set ViewFields, for minimizing the result for faster response

Keine Kommentare:

Kommentar veröffentlichen