-
Notifications
You must be signed in to change notification settings - Fork 0
/
Default.aspx.vb
138 lines (114 loc) · 5.6 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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports DevExpress.Web
Imports DevExpress.Web.ASPxScheduler
Imports DevExpress.Web.ASPxScheduler.Internal
Imports DevExpress.XtraScheduler
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
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) 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 = Date.Today + TimeSpan.FromMinutes(rnd.Next(0, rangeInMinutes))
apt.EndTime = apt.StartTime.Add(TimeSpan.FromMinutes(rnd.Next(0, rangeInMinutes \ 4)))
apt.Status = status
apt.Label = label
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)
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))
appointments.Add(CreateCustomAppointment(subjPrefix & "travel", item.ResID, 3, 6))
appointments.Add(CreateCustomAppointment(subjPrefix & "phone call", item.ResID, 0, 10))
Next item
End If
Return appointments
End Function
Protected Sub ASPxScheduler1_BeforeExecuteCallbackCommand(ByVal sender As Object, ByVal e As DevExpress.Web.ASPxScheduler.SchedulerCallbackCommandEventArgs)
If e.CommandId = "CRTAPT" Then
e.Command = New CreateAppointmentCallbackCommand(DirectCast(sender, ASPxScheduler))
End If
End Sub
End Class
Public Class CreateAppointmentCallbackCommand
Inherits SchedulerCallbackCommand
Public Overrides ReadOnly Property Id As String
Get
Return "CRTAPT"
End Get
End Property
Private start_Renamed As Date
Protected Property Start() As Date
Get
Return start_Renamed
End Get
Set(ByVal value As Date)
start_Renamed = value
End Set
End Property
Public Sub New(ByVal control As ASPxScheduler)
MyBase.New(control)
End Sub
Protected Overrides Sub ParseParameters(ByVal parameters As String)
'base.ParseParameters(parameters);
Start = Date.Parse(parameters)
End Sub
Protected Overrides Sub ExecuteCore()
'base.ExecuteCore();
CreateAppointment()
End Sub
Protected Sub CreateAppointment()
Dim grid As ASPxGridView = CType(Me.Control.Page.FindControl("ASPxGridView1"), ASPxGridView)
Dim hf As ASPxHiddenField = CType(Me.Control.Page.FindControl("hf"), ASPxHiddenField)
Dim rowValues() As Object = CType(grid.GetRowValues(Convert.ToInt32(hf("row")), New String() { "Name", "TypeName" }), Object())
Dim apt As Appointment = Me.Control.Storage.CreateAppointment(AppointmentType.Normal)
apt.Subject = String.Format("{1} - {0}", rowValues(0), rowValues(1))
apt.Start = Start
apt.End = Start.AddHours(0.5)
apt.ResourceId = Convert.ToInt32(hf("res"))
Me.Control.Storage.Appointments.Add(apt)
Me.Control.ActiveView.SelectAppointment(apt)
End Sub
End Class
End Namespace