Paul Galvin's (old) SharePoint space [SharePoint

Just another WordPress.com site

Sorting Calendar Items in the Calendar View

I’m using a calendar to track panel discussions on a given day.  I have two sessions: morning and afternoon.  I want to create a view that shows morning sessions only listed alphabetically via a session ID.  This is a little tricky to accomplish (unless I missed something real obvious).

I can easily create a filtered view showing just that day’s events.  The calendar will show all those events and if they all take place on the same hour, it lists them side by side in the hour slot.  That’s great.  The tricky part is that, by default, it wants to list them in ID format.  So, if I add "Session 02" and then "Session 01" to the calendar, it shows them in that order (i.e, Session 02 and then Session 01).  To list them in Session ID order, I thought to try these things:

  1. Configure the view using the web user interface.  No luck.  There are no options to sort items this way.

    Since that didn’t work, I am now hoping there’s a CAML query somewhere in there that will allow me to override the sort.  CQWP lets me make that kind of change, maybe calendar will as well?

  2. Edit the web part,  look for an "export" function and … BZZZT!  I can’t export its XML.  There is no export option.

    I’m still holding out hope that I can find and modify some CAML query.  Since I can’t export the web part, that leaves SharePoint Designer.

  3. I add the calendar web part to a sandbox site and open that site using SharePoint Designer.  I look at the markup for the web part and I find what I’m looking for.  It’s encoded madness, but it’s there: "<ListViewXml …. >encoded madness</ListViewXml>".  Specifically, there’s this gem:

<Query>
  <Where>
    <DateRangesOverlap>
      <FieldRef Name="EventDate"/>
      <FieldRef Name="EndDate"/>
      <FieldRef Name="RecurrenceID"/>
      <Value Type="DateTime">
        <Month/>
      </Value>
    </DateRangesOverlap>
  </Where>
  <OrderBy><FieldRef Name="Session_x0020_ID" /></OrderBy>
</Query>

(I’ve decoded the &lt;’s and &gt’s and split them out to multiple lines for clarity’s sake).

Add the <OrderBy> bit and now it sorts by Session ID, not the internal list item ID.

GIGANTIC tip o’ the hat to Becky Isserman for her comment to Isha Sagi’s blog post: http://www.sharepoint-tips.com/2008/07/caml-sorting-by-file-name.html.  I wouldn’t have put the <OrderBy> in the right place without her comment.

I hope to write this up more clearly with screen shots soon, but in case I never do, at least I did this much.

</end>

Advertisements

One response to “Sorting Calendar Items in the Calendar View

  1. L December 5, 2008 at 12:13 pm

    Thanks for the info. It works like a charm. I did a similar trick on a multi-field sort (3 fields). The only issue with editing the CAML is that if the view is modified, the changes are overwritten. But that is life!Thanks for posting!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: