function onUnitNodeChecked(sender, eventArgs){
var node = eventArgs.get_node();
var childNodes = node.get_nodes();
if (childNodes.get_count() == 0) {return;}
var tree= $find("<%= tvUnits.ClientID %>");
tree.trackChanges();
if (node.get_checked()){
checkAllNodes(childNodes, true);
} else {
checkAllNodes(childNodes, false);
}
tree.commitChanges();
}
function checkAllNodes(nodes, check){
for (var i=0; i<nodes.get_count(); i++){
var node = nodes.getNode(i);
if (check){
node.set_checked(true);
node.set_enabled(false);
} else {
node.set_enabled(true);
node.set_checked(false);
}
checkAllNodes(node.get_nodes(), check);
}
}

<telerik:RadSplitter id="RadSplitter1" runat="server">
<telerik:RadPane id="kv_left" runat="server" Width="200px" Height="400px">
<div>
This is a test<br />
This is a test<br />
</div>
</telerik:RadPane>
<telerik:RadSplitBar id="RadSplitbar1" runat="server" collapsemode="Forward"></telerik:RadSplitBar>
<telerik:RadPane ContentUrl="test.aspx" id="kv_right" runat="server"></telerik:RadPane>
</telerik:RadSplitter>
| public class CalendarProvider : SchedulerProviderBase |
| { |
| private const string DateFormatString = "yyyy-MM-ddTHH:mmZ"; |
| private ICalendarService _calendarService; |
| private Guid _clientID; |
| private String _userName; |
| private SecurityToken _securityToken; |
| public CalendarProvider(Page page) |
| { |
| _calendarService = ServiceManager.Locate<ICalendarService>("calendar.service"); |
| _clientID = SecurityHelper.GetClientID(page); |
| _securityToken = SecurityHelper.GetUserToken(page); |
| _userName = SecurityHelper.GetUserName(page); |
| } |
| public override bool SupportsMultipleResourceValues |
| { |
| get |
| { |
| return true; |
| } |
| } |
| public override IEnumerable<Appointment> GetAppointments(RadScheduler owner) |
| { |
| List<Appointment> appointments = new List<Appointment>(); |
| IList<CalendarItem> items = _calendarService.FindCalendarItemsByClient(_clientID, _securityToken); |
| foreach (CalendarItem item in items) |
| { |
| Appointment apt = new Appointment(); |
| apt.Owner = owner; |
| apt.ID = item.CalendarItemID; |
| apt.Subject = item.Subject; |
| apt.Start = DateTime.SpecifyKind(item.StartDate, DateTimeKind.Utc); |
| apt.End = DateTime.SpecifyKind(item.EndDate, DateTimeKind.Utc); |
| apt.RecurrenceRule = item.RecurrenceRule; |
| apt.RecurrenceParentID = item.RecurrenceParentID; |
| if (apt.RecurrenceParentID != null) |
| { |
| apt.RecurrenceState = RecurrenceState.Exception; |
| } |
| else if (apt.RecurrenceRule != string.Empty) |
| { |
| apt.RecurrenceState = RecurrenceState.Master; |
| } |
| LoadUsers(apt); |
| apt.Attributes.Add("Location", item.Location); |
| appointments.Add(apt); |
| } |
| return appointments; |
| } |
| private void LoadUsers(Appointment apt) |
| { |
| IList<User> users = _calendarService.FindUsersByCalendarItem(new Guid(apt.ID.ToString()), _securityToken); |
| foreach (User u in users) |
| { |
| Resource student = apt.Owner.Resources.GetResource("User", u.UserID); |
| apt.Resources.Add(student); |
| } |
| } |
| public override IEnumerable<ResourceType> GetResourceTypes(RadScheduler owner) |
| { |
| ResourceType[] types = new ResourceType[1]; |
| types[0] = new ResourceType("User", true); |
| return types; |
| } |
| public override IEnumerable<Resource> GetResourcesByType(RadScheduler owner, string resourceType) |
| { |
| if (resourceType.Equals("User")) |
| { |
| IList<Resource> resources = new List<Resource>(); |
| IList<User> users = ServiceManager.Locate<IClientService>("client.service").FindUsersByClient(_clientID, null); |
| foreach (User u in users) |
| { |
| Resource res = new Resource("User", u.UserID, u.UserName); |
| resources.Add(res); |
| } |
| return resources; |
| } |
| else |
| { |
| throw new InvalidOperationException("Unknown resource type: " + resourceType); |
| return null; |
| } |
| } |
| public override void Insert(RadScheduler owner, Appointment aptInsert) |
| { |
| Guid? RecurrenceID = null; |
| if (aptInsert.RecurrenceParentID != null) |
| { |
| RecurrenceID = new Guid(aptInsert.RecurrenceParentID.ToString()); |
| } |
| Guid AptID; |
| if (aptInsert.ID != null) |
| { |
| AptID = new Guid(aptInsert.ID.ToString()); |
| } |
| else |
| { |
| AptID = Guid.NewGuid(); |
| } |
| string Recurrence = String.Empty; |
| if (aptInsert.RecurrenceRule != null) |
| { |
| Recurrence = aptInsert.RecurrenceRule; |
| } |
| try |
| { |
| CalendarItem item = new CalendarItem(AptID, RecurrenceID, aptInsert.Start, aptInsert.End, |
| aptInsert.Subject, aptInsert.Attributes["Location"] , Recurrence); |
| //AT THIS POINT EVEN THOUGH USERS HAVE BEEN SELECTED, RESOURCES ARE EMPTY. |
| foreach (Resource res in aptInsert.Resources.GetResourcesByType("User")) |
| { |
| item.Resources.Add(new UserCalendarItem((Guid)res.Key, AptID)); |
| } |
| _calendarService.Create(item, _securityToken); |
| } |
| catch |
| { |
| //Show message: Unable to create Calendar Event. |
| } |
| } |
| public override void Update(RadScheduler owner, Appointment aptUpdate) |
| { |
| Guid? RecurrenceID = null; |
| if (aptUpdate.RecurrenceParentID != null) |
| { |
| RecurrenceID = new Guid(aptUpdate.RecurrenceParentID.ToString()); |
| } |
| Guid AptID; |
| if (aptUpdate.ID != null) |
| { |
| AptID = new Guid(aptUpdate.ID.ToString()); |
| } |
| else |
| { |
| AptID = Guid.NewGuid(); |
| } |
| string Recurrence = String.Empty; |
| if (aptUpdate.RecurrenceRule != null) |
| { |
| Recurrence = aptUpdate.RecurrenceRule; |
| } |
| try |
| { |
| CalendarItem item = new CalendarItem(AptID, RecurrenceID, aptUpdate.Start, aptUpdate.End, |
| aptUpdate.Subject, aptUpdate.Attributes["Location"], Recurrence); |
| //AT THIS POINT EVEN THOUGH USERS HAVE BEEN SELECTED, RESOURCES ARE EMPTY. |
| foreach (Resource res in aptInsert.Resources.GetResourcesByType("User")) |
| { |
| item.Resources.Add(new UserCalendarItem((Guid)res.Key, AptID)); |
| } |
| _calendarService.Update(item, _securityToken); |
| } |
| catch |
| { |
| //Show message: Unable to create Calendar Event. |
| } |
| } |
| public override void Delete(RadScheduler owner, Appointment aptDelete) |
| { |
| _calendarService.Remove(new Guid(aptDelete.ID.ToString()), _securityToken); |
| } |
| } |
| <rad3:RadScheduler runat="server" ID="RadScheduler1" Width="700px" Height="564px" |
| SelectedView="WeekView" TimeZoneOffset="03:00:00" SelectedDate="2008-02-01" DayStartTime="08:00:00" |
| DayEndTime="18:00:00" ReadOnly="false" RadControlsDir="~/App_Themes/RadControls/" |
| CustomAttributeNames="Location" EnableCustomAttributeEditing="true" StartEditingInAdvancedForm="true" |
| OnAppointmentCreated="RadScheduler_AppointmentCreated" OnAppointmentInsert="RadScheduler_AppointmentInserted" |
| Skin="Office2007" OnClientAppointmentContextMenu="appointmentContextMenu" OnClientTimeSlotContextMenu="timeSlotContextMenu"> |
| <AppointmentTemplate> |
| <asp:Label runat="server" ID="Subject" Font-Bold="true" /> |
| <br /> |
| <asp:Label runat="server" ID="Location" ForeColor="Gray" /> |
| </AppointmentTemplate> |
| <ResourceTypes> |
| <rad3:ResourceType Name="Users" AllowMultipleValues="true" /> |
| </ResourceTypes> |
| </rad3:RadScheduler> |
| protected void Page_Load(object sender, EventArgs e) |
| { |
| //Provide Client ID and user token |
| RadScheduler1.Provider = new CalendarProvider(this); |
| if (!IsPostBack) |
| { |
| RadScheduler1.SelectedView = SchedulerViewType.WeekView; |
| RadScheduler1.StartInFullTime = false; |
| RadScheduler1.TimeZoneOffset = new TimeSpan(3,0,0); |
| RadScheduler1.SelectedDate = System.DateTime.Now.Date; |
| RadCalendar1.SelectedDate = RadScheduler1.SelectedDate; |
| RadCalendar1.FocusedDate = RadScheduler1.SelectedDate; |
| } |
| } |
| protected override void OnPreRender(EventArgs e) |
| { |
| base.OnPreRender(e); |
| RadCalendar1.SelectedDate = RadScheduler1.SelectedDate; |
| } |
| protected void RadCalendar1_SelectionChanged(object sender, SelectedDatesEventArgs e) |
| { |
| if (RadCalendar1.SelectedDates.Count > 0) |
| { |
| RadScheduler1.SelectedDate = RadCalendar1.SelectedDate; |
| } |
| } |
| protected void RadScheduler_AppointmentInserted(object sender, SchedulerCancelEventArgs e) |
| { |
| //AT THIS POINT RESOURCES ARE ALSO EMPTY. |
| } |
| protected void OnCreateEvent(object sender, EventArgs e) |
| { |
| if (RadCalendar1.SelectedDates.Count > 0) |
| { |
| RadScheduler1.ShowAdvancedInsertForm(RadCalendar1.SelectedDates[0].Date); |
| } |
| } |
| protected void RadScheduler_AppointmentCreated(object sender, AppointmentCreatedEventArgs e) |
| { |
| String subject = e.Appointment.Subject; |
| if (subject != null) |
| { |
| Label label = (Label)e.Container.FindControl("Subject"); |
| label.Text = subject; |
| } |
| string location = e.Appointment.Attributes["Location"]; |
| if (location != null && location != string.Empty) |
| { |
| Label label = (Label)e.Container.FindControl("Location"); |
| label.Text = "Location: " + location; |
| } |
| } |
| <asp:Content ID="Content1" ContentPlaceHolderID="_mainContent" Runat="Server"> |
| <asp:ScriptManager ID="ScriptManager1" runat="server" /> |
| <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> |
| <AjaxSettings> |
| <telerik:AjaxSetting AjaxControlID="RadGrid1"> |
| <UpdatedControls> |
| <telerik:AjaxUpdatedControl ControlID="RadGrid1" LoadingPanelID="RadAjaxLoadingPanel1"/> |
| </UpdatedControls> |
| </telerik:AjaxSetting> |
| </AjaxSettings> |
| </telerik:RadAjaxManager> |
| <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="75px" Width="75px" Transparency="50"> |
| <img alt="Loading..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading.gif") %>' style="border:0;" /> |
| </telerik:RadAjaxLoadingPanel> |
| <telerik:RadGrid ID="RadGrid1" AllowMultiRowSelection="true" AllowMultiRowEdit="true" AllowSorting="true" |
| Skin="WebBlue" runat="server" AllowAutomaticDeletes="True" AllowAutomaticInserts="True" |
| Width="97%" PageSize="14" AllowAutomaticUpdates="True" AllowPaging="True" AutoGenerateColumns="False" |
| DataSourceID="mySqlDataSourceGrid" ShowStatusBar="true" AutoGenerateEditColumn="true" AutoGenerateDeleteColumn="true"> |
| <PagerStyle Mode="Slider" /> |
| <ClientSettings> |
| <Selecting AllowRowSelect="true" /> |
| </ClientSettings> |
| <MasterTableView CommandItemDisplay="Top" DataKeyNames="eventid" DataSourceID="mySqlDataSourceGrid" |
| EditMode="EditForms" AutoGenerateColumns="False" Width="100%"> |
| <CommandItemTemplate> |
| <div style="padding:10px 0px;"> |
| <asp:LinkButton Style="vertical-align: bottom" ID="btnEditSelected" runat="server" CommandName="EditSelected" CausesValidation="false" Visible='<%# RadGrid1.EditIndexes.Count == 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="images/Edit.gif" /> Edit Selected Events</asp:LinkButton> |
| <asp:LinkButton ID="btnUpdateEdited" runat="server" CommandName="UpdateEdited" Visible='<%# RadGrid1.EditIndexes.Count > 0 %>'><img style="border:0px;vertical-align:middle;" alt="" src="images/Update.gif" /> Update Events</asp:LinkButton> |
| |
| <asp:LinkButton ID="btnCancel" runat="server" CommandName="CancelAll" CausesValidation="false" Visible='<%# RadGrid1.EditIndexes.Count > 0 || RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="images/Cancel.gif" /> Cancel editing</asp:LinkButton> |
| |
| <asp:LinkButton ID="LinkButton2" runat="server" CommandName="InitInsert" Visible='<%# !RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="images/AddRecord.gif" /> Add new Event</asp:LinkButton> |
| <asp:LinkButton ID="LinkButton3" runat="server" CommandName="PerformInsert" Visible='<%# RadGrid1.MasterTableView.IsItemInserted %>'><img style="border:0px;vertical-align:middle;" alt="" src="images/Insert.gif" /> Add this Event</asp:LinkButton> |
| |
| <asp:LinkButton ID="LinkButton1" OnClientClick="javascript:return confirm('Delete all selected Events?')" |
| runat="server" CommandName="DeleteSelected" CausesValidation="false"><img style="border:0px;vertical-align:middle;" alt="" src="images/Delete.gif" /> Delete Selected Events</asp:LinkButton> |
| |
| <asp:LinkButton ID="LinkButton4" runat="server" CommandName="RebindGrid"><img style="border:0px;vertical-align:middle;" alt="" src="images/Refresh.gif" /> Refresh Event list</asp:LinkButton> |
| </div> |
| </CommandItemTemplate> |
| <Columns> |
| <telerik:GridClientSelectColumn HeaderStyle-Width="40px" /> |
| <telerik:GridBoundColumn DataField="eventid" HeaderText="ID" ReadOnly="True" SortExpression="EventID" |
| UniqueName="EventID" Visible="false"> |
| <HeaderStyle Width="20px" ForeColor="Silver" /> |
| <ItemStyle ForeColor="Silver" /> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="eventname" HeaderText="Event Name" SortExpression="eventname" |
| UniqueName="eventname"> |
| </telerik:GridBoundColumn> |
| <telerik:GridDateTimeColumn DataField="eventstart" HeaderText="Event Start Date" SortExpression="eventstart" UniqueName="eventstart" EditFormColumnIndex="1"> |
| </telerik:GridDateTimeColumn> |
| <telerik:GridDateTimeColumn DataField="eventend" HeaderText="Event End Date" SortExpression="eventend" UniqueName="eventend" EditFormColumnIndex="1"> |
| </telerik:GridDateTimeColumn> |
| <telerik:GridBoundColumn DataField="eventlocation" HeaderText="Event Location" SortExpression="eventlocation" |
| UniqueName="eventlocation"> |
| </telerik:GridBoundColumn> |
| <telerik:GridBoundColumn DataField="eventurl" HeaderText="Event URL" SortExpression="eventurl" |
| UniqueName="eventurl"> |
| </telerik:GridBoundColumn> |
| </Columns> |
| <EditFormSettings ColumnNumber="2" CaptionDataField="EventName" CaptionFormatString="Edit properties of Event {0}"> |
| <FormTableItemStyle Wrap="False"></FormTableItemStyle> |
| <FormCaptionStyle CssClass="EditFormHeader"></FormCaptionStyle> |
| <FormMainTableStyle GridLines="Horizontal" CellSpacing="0" CellPadding="3" BackColor="White" |
| Width="100%" /> |
| <FormTableStyle CellSpacing="0" CellPadding="2" CssClass="module" Height="110px" |
| BackColor="White" /> |
| <FormTableAlternatingItemStyle Wrap="False"></FormTableAlternatingItemStyle> |
| <EditColumn ButtonType="ImageButton" |
| UpdateImageUrl="images\Update.gif" EditImageUrl="images\Edit.gif" |
| InsertImageUrl="images\Insert.gif" CancelImageUrl="images\Cancel.gif" |
| InsertText="Insert Order" UpdateText="Update record" UniqueName="EditCommandColumn1" CancelText="Cancel edit"> |
| </EditColumn> |
| <FormTableButtonRowStyle HorizontalAlign="Right" CssClass="EditFormButtonRow"></FormTableButtonRowStyle> |
| </EditFormSettings> |
| </MasterTableView> |
| </telerik:RadGrid><br /> |
| <asp:SqlDataSource ID="mySqlDataSourceGrid" runat="server" |
| datasourcemode="DataSet" |
| ConnectionString="<%$ ConnectionStrings:xConnectionString %>" |
| SelectCommand="SELECT * FROM [eventtb]" |
| DeleteCommand="DELETE FROM [eventtb] WHERE [eventid] = @eventid" |
| updatecommand="UPDATE [eventtb] SET [eventname] = @eventname, [eventstart] = @eventstart, [eventend] = @eventend, [eventlocation] = @eventlocation, [eventurl] = @eventurl WHERE eventid = @eventid" |
| insertcommand="INSERT INTO [eventtb] (eventname, eventstart, eventend, eventlocation, eventurl) VALUES (@eventname, @eventstart, @eventend, @eventlocation, @eventurl)" |
| FilterExpression="[eventid] = {0}"> |
| <filterparameters> |
| <asp:ControlParameter Name="eventid" ControlId="RadGrid1" PropertyName="SelectedValue" Type="String" /> |
| </filterparameters> |
| <DeleteParameters> |
| <asp:Parameter Type="Int32" Name="eventid" /> |
| </DeleteParameters> |
| <UpdateParameters> |
| <asp:Parameter Type="Int32" Name="eventid" /> |
| <asp:Parameter Type="String" Name="eventname" /> |
| <asp:Parameter Type="DateTime" Name="eventstart" /> |
| <asp:Parameter Type="DateTime" Name="eventend" /> |
| <asp:Parameter Type="String" Name="eventlocation" /> |
| <asp:Parameter Type="String" Name="eventurl" /> |
| </UpdateParameters> |
| <InsertParameters> |
| <asp:Parameter Type="Int32" Name="eventid" /> |
| <asp:Parameter Type="String" Name="eventname" /> |
| <asp:Parameter Type="DateTime" Name="eventstart" /> |
| <asp:Parameter Type="DateTime" Name="eventend" /> |
| <asp:Parameter Type="String" Name="eventlocation" /> |
| <asp:Parameter Type="String" Name="eventurl" /> |
| </InsertParameters> |
| </asp:SqlDataSource> |
| </asp:Content> |