This repository has been archived by the owner on Dec 29, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Default.aspx.vb
118 lines (104 loc) · 4.94 KB
/
Default.aspx.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Namespace WebApplication1
Partial Public Class [Default]
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
End Sub
Private customFieldValues As New List(Of String)()
Protected Sub ObjectDataSourceResources_ObjectCreated(ByVal sender As Object, ByVal e As ObjectDataSourceEventArgs)
If Session("CustomResourceDataSource") Is Nothing Then
Session("CustomResourceDataSource") = New CustomResourceDataSource(GetCustomResources())
End If
e.ObjectInstance = Session("CustomResourceDataSource")
End Sub
Private Function GetCustomResources() As BindingList(Of CustomResource)
Dim resources As New BindingList(Of CustomResource)()
resources.Add(CreateCustomResource(1, "Max Fowler"))
resources.Add(CreateCustomResource(2, "Nancy Drewmore"))
resources.Add(CreateCustomResource(3, "Pak Jang"))
Return resources
End Function
Private Function CreateCustomResource(ByVal res_id As Integer, ByVal caption As String) As CustomResource
Dim cr As New CustomResource()
cr.ResID = res_id
cr.Name = caption
Return cr
End Function
Public RandomInstance As New Random()
Private Function CreateCustomAppointment(ByVal subject As String, ByVal resourceId As Object, ByVal status As Integer, ByVal label As Integer, ByVal fildIndex As Integer) As CustomAppointment
Dim apt As New CustomAppointment()
apt.Subject = subject
apt.OwnerId = resourceId
Dim rnd As Random = RandomInstance
Dim rangeInMinutes As Integer = 60 * 24
apt.StartTime = DateTime.Today.Add(TimeSpan.FromMinutes(rnd.Next(0, rangeInMinutes)))
apt.EndTime = apt.StartTime.Add(TimeSpan.FromMinutes(rnd.Next(0, rangeInMinutes \ 4)))
apt.Status = status
apt.Label = label
apt.CustomField = customFieldValues(fildIndex)
Return apt
End Function
Protected Sub ObjectDataSourceAppointment_ObjectCreated(ByVal sender As Object, ByVal e As ObjectDataSourceEventArgs)
If Session("CustomAppointmentDataSource") Is Nothing Then
Session("CustomAppointmentDataSource") = New CustomAppointmentDataSource(GetCustomAppointments())
End If
e.ObjectInstance = Session("CustomAppointmentDataSource")
End Sub
Private Function GetCustomAppointments() As BindingList(Of CustomAppointment)
For i As Integer = 0 To 4
customFieldValues.Add("Custom value " & i.ToString())
Next i
Dim appointments As New BindingList(Of CustomAppointment)()
Dim resources As CustomResourceDataSource = TryCast(Session("CustomResourceDataSource"), CustomResourceDataSource)
If resources IsNot Nothing Then
For Each item As CustomResource In resources.Resources
Dim subjPrefix As String = item.Name & "'s "
appointments.Add(CreateCustomAppointment(subjPrefix & "meeting", item.ResID, 2, 5, 1))
appointments.Add(CreateCustomAppointment(subjPrefix & "travel", item.ResID, 3, 6, 2))
appointments.Add(CreateCustomAppointment(subjPrefix & "phone call", item.ResID, 0, 10, 3))
Next item
End If
Return appointments
End Function
Protected Sub ASPxScheduler1_PopupMenuShowing(ByVal sender As Object, ByVal e As DevExpress.Web.ASPxScheduler.PopupMenuShowingEventArgs)
If e.Menu.MenuId = DevExpress.XtraScheduler.SchedulerMenuItemId.AppointmentMenu Then
e.Menu.ClientSideEvents.PopUp = "OnClientPopupMenuShowing"
Dim newItem As New DevExpress.Web.MenuItem()
newItem.Name = "CustomValues"
newItem.Text = "Custom values"
Dim i As Integer = 0
For Each customFieldValue As String In customFieldValues
Dim subMenuItem As New DevExpress.Web.MenuItem()
subMenuItem.Name = "Custom Item " & i.ToString()
i += 1
subMenuItem.GroupName = "CustomValues"
subMenuItem.Text = customFieldValue
subMenuItem.ClientEnabled = True
newItem.Items.Add(subMenuItem)
Next customFieldValue
e.Menu.Items.Add(newItem)
End If
End Sub
Protected Sub ASPxScheduler1_InitClientAppointment(ByVal sender As Object, ByVal args As DevExpress.Web.ASPxScheduler.InitClientAppointmentEventArgs)
args.Properties.Add("CustomFieldValue", args.Appointment.CustomFields("ApptCustomField"))
End Sub
Protected Sub ASPxScheduler1_CustomCallback(ByVal sender As Object, ByVal e As DevExpress.Web.CallbackEventArgsBase)
If ASPxScheduler1.SelectedAppointments.Count > 0 Then
ASPxScheduler1.SelectedAppointments(0).CustomFields("ApptCustomField") = e.Parameter.Replace("Item", "value")
End If
End Sub
Protected Sub ASPxScheduler1_InitAppointmentDisplayText(ByVal sender As Object, ByVal e As DevExpress.XtraScheduler.AppointmentDisplayTextEventArgs)
e.Text = e.Appointment.Subject
Dim customFieldValue As Object = e.Appointment.CustomFields("ApptCustomField")
If customFieldValue IsNot Nothing Then
e.Text &= " (custom field: " & customFieldValue.ToString() & ")"
End If
End Sub
End Class
End Namespace