Most of the time when you use repeater, you want to be able to cast the datasource/dataitem, you don’t really want to do DataBinder.Eval(e.Item.DataItem, “Description”) but you want to do row.Description. It’s not hard to do that, this is the snippet
Protected Sub rptEvents_Repeater(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) Handles rptEvents.ItemDataBound
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
'you need to cast eh dataitem into datarowview and cast them again to strongly type dataset
Dim view As DataRowView = DirectCast(e.Item.DataItem, DataRowView)
Dim row As tdsEvent.EventSummaryRow = DirectCast(view.Row, tdsEvent.EventSummaryRow)
If Not (row Is Nothing) Then
Dim lblVenue As Label = DirectCast(e.Item.FindControl("lblVenue"), Label)
Dim lblEvent As HyperLink = DirectCast(e.Item.FindControl("lblEvent"), HyperLink)
Dim lblState As Label = DirectCast(e.Item.FindControl("lblState"), Label)
Dim lblTime As Label = DirectCast(e.Item.FindControl("lblTime"), Label)
Dim lblType As Label = DirectCast(e.Item.FindControl("lblType"), Label)
Dim eventClass As String = row.ColorCode ' don't set free
' if event is not normal, set it...
If Not (row.IsVenueNull()) Then
lblVenue.Text = row.Venue
End If
If Not (row.IsEventNull()) Then
lblEvent.Text = Left(row.Event, 25) + "..."
lblEvent.NavigateUrl = String.Format("~/playpoker/view-event.aspx?EventID={0}&EventTypeID={1}", row.EventID.ToString(), row.EventTypeID.ToString())
End If
If Not (row.IsStateNull()) Then
lblState.Text = row.State
End If
If Not (row.IsEventTypeNull()) Then
lblType.Text = row.EventType
End If
If Not (row.IsRegistrationTimeNull()) Then
lblTime.Text = row.RegistrationTime.ToString("hh:mm tt")
End If
'bind all the data...
'set class's
If Not (String.IsNullOrEmpty(eventClass)) Then
lblVenue.CssClass = eventClass
lblEvent.CssClass = eventClass
lblState.CssClass = eventClass
lblTime.CssClass = eventClass
lblType.CssClass = eventClass
End If
End If
ElseIf (e.Item.ItemType = ListItemType.Header) Then
Dim lnk As LinkButton = DirectCast(e.Item.FindControl("lnkVenue"), LinkButton)
If Not (lnk Is Nothing) Then
lnk.CommandName = "SortCommand"
lnk.CommandArgument = "Venue"
End If
lnk = DirectCast(e.Item.FindControl("lnkEvent"), LinkButton)
If Not (lnk Is Nothing) Then
lnk.CommandName = "SortCommand"
lnk.CommandArgument = "Event"
End If
lnk = DirectCast(e.Item.FindControl("lnkState"), LinkButton)
If Not (lnk Is Nothing) Then
lnk.CommandName = "SortCommand"
lnk.CommandArgument = "State"
End If
lnk = DirectCast(e.Item.FindControl("lnkTime"), LinkButton)
If Not (lnk Is Nothing) Then
lnk.CommandName = "SortCommand"
lnk.CommandArgument = "lnkTime"
End If
lnk = DirectCast(e.Item.FindControl("lnkType"), LinkButton)
If Not (lnk Is Nothing) Then
lnk.CommandName = "SortCommand"
lnk.CommandArgument = "EventType"
End If
End If
End Sub