Quantcast
Channel: SharePoint 2010 - Development and Programming forum
Viewing all articles
Browse latest Browse all 11571

Displaying a SharePoint List in a ListView Control with Grouping by Date

$
0
0

Dear All

I have created a ListView to display items from a SharePoint list:

<asp:ListView ID="UpAndComingEventsLV" runat="server"><LayoutTemplate><ul><li id="itemPlaceholder" runat="server" /></ul></LayoutTemplate><ItemTemplate><li id="Li1" runat="server"><asp:Literal ID="CurrentDate" runat="server" /><%#Eval("Title")%> <%#Eval("Event_x0020_Category")%> <%#Eval("EventDate", "{0:HH:mm}")%></li></ItemTemplate></asp:ListView>

To perform the binding and then display the date I'm doing the following:

            Using oSiteCollection As New SPSite(_ListPath)
                Using web As SPWeb = oSiteCollection.OpenWeb()
                    List = web.GetList(_ListPath)
                End Using
            End Using

            Dim Query As New SPQuery
            Query.Query = "<Where><And><Eq><FieldRef Name='Status' /><Value Type='Choice'>Approved</Value></Eq><Geq><FieldRef Name='EventDate' /><Value Type='DateTime'><Today Offset='4' /></Value></Geq></And></Where><OrderBy><FieldRef Name='EventDate' /></OrderBy>"
            'Query.RowLimit = 1
            Query.ViewFields = "<FieldRef Name='Event_x0020_Category' /><FieldRef Name='Title' /><FieldRef Name='EventDate' /></ViewFields>"

            Dim ItemColl As SPListItemCollection = List.GetItems(Query)
            UpAndComingEventsLV.DataSource = ItemColl.GetDataTable
            UpAndComingEventsLV.DataBind()

dfgdfgfg

I would like to group my events by date though, rather than display the date against each row. To make things even more complicated, I would like to use friendly names like Today, Tomorrow, Monday, Tuesday instead of dates:

TODAY

  • Event number one
  • Event number two
  • Event number three

TOMORROW

  • Event number 4
  • Event number 5

MONDAY

  • Event number 6
  • Event number 7

At the moment, I've created a ItemDataBound event on the ListView control and I have been able to display the Today, Tomorrow, Monday etc bit but I can't figure out the best way to perform the grouping. Incidentally, I only want to group on the date not on time:

    Private Sub UpAndComingEventsLV_ItemDataBound(sender As Object, e As Web.UI.WebControls.ListViewItemEventArgs) Handles UpAndComingEventsLV.ItemDataBound

        If e.Item.ItemType = Web.UI.WebControls.ListViewItemType.DataItem Then

            'Retrieve data item
            Dim DataItem As ListViewDataItem = DirectCast(e.Item, ListViewDataItem)
            Dim RowView As DataRowView = DirectCast(DataItem.DataItem, DataRowView)
            Dim EventDate As DateTime = RowView("EventDate")

            'Get literal control
            Dim CurrentDate As Literal = e.Item.FindControl("CurrentDate")

            'Display friendly date
            If Not IsNothing(CurrentDate) Then
                Select Case EventDate.Date
                    Case Is = Now.Date
                        CurrentDate.Text = "Today"
                    Case Is = Now.Date.AddDays(1)
                        CurrentDate.Text = "Tomorrow"
                    Case Is = Now.Date.AddDays(2)
                        CurrentDate.Text = Now.Date.AddDays(2).DayOfWeek.ToString
                    Case Is = Now.Date.AddDays(3)
                        CurrentDate.Text = Now.Date.AddDays(3).DayOfWeek.ToString
                    Case Is = Now.Date.AddDays(4)
                        CurrentDate.Text = Now.Date.AddDays(4).DayOfWeek.ToString
                    Case Is = Now.Date.AddDays(5)
                        CurrentDate.Text = Now.Date.AddDays(5).DayOfWeek.ToString
                    Case Is = Now.Date.AddDays(6)
                        CurrentDate.Text = Now.Date.AddDays(6).DayOfWeek.ToString
                End Select
            Else
                CurrentDate.Text = "-"
            End If

        End If
    End Sub

Please could you help me understand the best way to perform the grouping by date?

Any help or advice is greatly appreciated!

Many thanks

Daniel


Viewing all articles
Browse latest Browse all 11571

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>