This is a migrated thread and some comments may be shown as answers.

Custom Resource Group Header Styles?

7 Answers 185 Views
Scheduler and Reminder
This is a migrated thread and some comments may be shown as answers.
Jeff
Top achievements
Rank 1
Jeff asked on 17 Jun 2014, 09:55 PM
I need to modify the style of the group header but can't seem to do it. I can modify the font, but it also seems to modify the font of the appointments as well.
Dim SchedElement As SchedulerDayViewGroupedByResourceElement = RadScheduler1.GetDayView.Scheduler.SchedulerElement.ViewElement
SchedElement.Font = New Font("Segoe UI", 10, FontStyle.Regular, GraphicsUnit.Point)
SchedElement.ForeColor = Color.White
SchedElement.ResourceHeaderHeight = 35
SchedElement.ResourcesHeader.BackColor = Color.FromArgb(0, 159, 60)
SchedElement.ResourcesHeader.BackColor2 = Color.FromArgb(0, 159, 60)
 
Anything that sets a "ResourceHeader" doesn't seem to do what I am expecting. The attached picture shows the header I am trying to modify as well as what RadControlSpy says about it.

7 Answers, 1 is accepted

Sort by
0
Ralitsa
Telerik team
answered on 19 Jun 2014, 08:51 AM
Hi Jeff,

Thank you for contacting us. 

If you want to change the color of resource, you need to change the Color of one resource or all resources. Please take a look at the following code example: 

1. Change the color of one resource: 
Me.RadScheduler1.Resources(1).Color = Color.BlueViolet

2. Change the color of all resources:    
Dim colors() As Color = {Color.LightBlue, Color.LightGreen, Color.LightYellow, Color.Red, Color.Orange, Color.Pink, Color.Purple, Color.Peru, Color.PowderBlue}
 
        Dim names() As String = {"Alan Smith", "Anne Dodsworth", "Boyan Mastoni", "Richard Duncan", "Maria Shnaider"}
 
        For i As Integer = 0 To names.Length - 1
            Dim resource As New Telerik.WinControls.UI.Resource()
            resource.Id = New EventId(i)
            resource.Name = names(i)
            'set to each resource different color
            'resource.Color = colors(i)
            'set to each resource one color
            resource.Color = Color.FromArgb(0, 159, 60)
            Me.RadScheduler1.Resources.Add(resource)
        Next i

I attached a sample demo project which demonstrates you how to change the color of resource. 

Regards,
Ralitsa
Telerik
 
Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos and start improving your app based on facts, not hunches.
 
0
Alejandro
Top achievements
Rank 1
answered on 12 Jun 2017, 04:48 PM
When RadScheduler loads it works but when i save the changes with this code (code in the bottom) I lose my styles. How can i keep them? (View Attachment Photo):

01.YDS_CitasDataSet.AppointmentsResourcesDataTable deletedRelationRecords = yDS_CitasDataSet.AppointmentsResources.GetChanges(DataRowState.Deleted)    as YDS_CitasDataSet.AppointmentsResourcesDataTable;
02.YDS_CitasDataSet.AppointmentsResourcesDataTable newRelationRecords = this.yDS_CitasDataSet.AppointmentsResources.GetChanges(DataRowState.Added) as YDS_CitasDataSet.AppointmentsResourcesDataTable;
03.YDS_CitasDataSet.AppointmentsResourcesDataTable modifiedRelationRecords = this.yDS_CitasDataSet.AppointmentsResources.GetChanges(DataRowState.Modified) as YDS_CitasDataSet.AppointmentsResourcesDataTable;
04.YDS_CitasDataSet.AppointmentsDataTable newAppointmentRecords = this.yDS_CitasDataSet.Appointments.GetChanges(DataRowState.Added) as YDS_CitasDataSet.AppointmentsDataTable;
05.YDS_CitasDataSet.AppointmentsDataTable deletedAppointmentRecords = this.yDS_CitasDataSet.Appointments.GetChanges(DataRowState.Deleted) as YDS_CitasDataSet.AppointmentsDataTable;
06.YDS_CitasDataSet.AppointmentsDataTable modifiedAppointmentRecords = this.yDS_CitasDataSet.Appointments.GetChanges(DataRowState.Modified) as YDS_CitasDataSet.AppointmentsDataTable;
07.try
08.{
09.if (newAppointmentRecords != null)
10.{
11.    Dictionary<int, int> newAppointmentIds = new Dictionary<int, int>();
12.    Dictionary<object, int> oldAppointmentIds = new Dictionary<object, int>();
13.    for (int i = 0; i < newAppointmentRecords.Count; i++)
14.    {
15.        oldAppointmentIds.Add(newAppointmentRecords[i], newAppointmentRecords[i].ID);
16.    }
17.    appointmentsAdapter.Update(newAppointmentRecords);
18.    for (int i = 0; i < newAppointmentRecords.Count; i++)
19.    {
20.        newAppointmentIds.Add(oldAppointmentIds[newAppointmentRecords[i]], newAppointmentRecords[i].ID);
21.    }
22.    if (newRelationRecords != null)
23.    {
24.        for (int i = 0; i < newRelationRecords.Count; i++)
25.        {
26.            newRelationRecords[i].AppointmentID = newAppointmentIds[newRelationRecords[i].AppointmentID];
27.        }
28.    }
29.}
30.if (deletedRelationRecords != null)
31.{
32.    appointmentsResourcesAdapter.Update(deletedRelationRecords);
33.}
34.if (deletedAppointmentRecords != null)
35.{
36.    appointmentsAdapter.Update(deletedAppointmentRecords);
37.}
38.if (modifiedAppointmentRecords != null)
39.{
40.    appointmentsAdapter.Update(modifiedAppointmentRecords);
41.}
42.if (newRelationRecords != null)
43.{
44.    appointmentsResourcesAdapter.Update(newRelationRecords);
45.}
46.if (modifiedRelationRecords != null)
47.{
48.    appointmentsResourcesAdapter.Update(modifiedRelationRecords);
49.}
50.this.yDS_CitasDataSet.AcceptChanges();
51. 
52.}
53.catch (Exception ex)
54.{
55.MessageBox.Show(string.Format("An error occurred during the update process:\n{0}", ex.Message));
56.}
57.finally
58.{
59.if (deletedRelationRecords != null)
60.{
61.    deletedRelationRecords.Dispose();
62.}
63.if (newRelationRecords != null)
64.{
65.    newRelationRecords.Dispose();
66.}
67.if (modifiedRelationRecords != null)
68.{
69.    modifiedRelationRecords.Dispose();
70.}
71.}
72.lblStatus.Text = "Updated scheduler at " + DateTime.Now.ToString();
0
Dess | Tech Support Engineer, Principal
Telerik team
answered on 13 Jun 2017, 10:25 AM
Hello Alejandro, 

Thank you for writing.  

When you save the changes to your database, it is not supposed to change the view element. However, if you refresh the SchedulerElement some of the applied changes may be lost. That is why I would recommend you to apply the changes after the RadScheduler is refreshed. Thus, you will ensure that the design will remain the same. If you are still experiencing any further difficulties, feel free to submit a support ticket where you can provide a sample project demonstrating the problem.

I hope this information helps. Should you have further questions I would be glad to help.

Regards,
Dess
Progress Telerik
Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
0
Alejandro
Top achievements
Rank 1
answered on 13 Jun 2017, 04:28 PM

Hi Again.

I tried to figure out the problem but I didn't find where occurs the refreshing method, I tried to submit a support ticket but I'm not the owner of the license. but I make a sample project with the problem, you can get from here: Sample Project in this file Iattached the full project and the sample database with only Radscheduler form and the mentioned behaviour. Can you help me?

0
Dess | Tech Support Engineer, Principal
Telerik team
answered on 14 Jun 2017, 09:07 AM
Hello Alejandro, 

Thank you for writing back. 

Please ask the purchase holder to add you as a License Developer to the purchase. This will give you full access to the products your company has purchased, to our downloads section, and to our support ticketing system.

I managed to replicate the described problem with the provided sample project. In order to keep the visual settings after saving the changes to your database you can use the following code snippet:
private void BTN_Save_Click(object sender, EventArgs e)
{
    this.Save();
    FormatUI();
    this.radScheduler1.SchedulerElement.RefreshViewElement();
    SchedulerDayViewGroupedByResourceElement headerElement = this.radScheduler1.SchedulerElement.ViewElement as SchedulerDayViewGroupedByResourceElement;
    headerElement.ResourceHeaderHeight = 135;
 
    RadMessageBox.Show(new Form() { TopMost = true, StartPosition = FormStartPosition.CenterScreen },
        "Information Saved.", "Aviso", MessageBoxButtons.OK, RadMessageIcon.Info, MessageBoxDefaultButton.Button1);
}

I hope this information helps. If you have any additional questions, please let me know. 

Regards,
Dess
Progress Telerik
Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
0
Alejandro
Top achievements
Rank 1
answered on 14 Jun 2017, 04:30 PM
Thank you Dess. It works. As an Add-on and only for the people who will ask the same in the future. We have to establish the view parameters again like it follows :
private void BTN_Save_Click(object sender, EventArgs e)
       {
           this.Save();
           FormatUI();
           this.radScheduler1.SchedulerElement.RefreshViewElement();
           this.radScheduler1.GetDayView().RangeFactor = ScaleRange.QuarterHour;
           this.radScheduler1.GetDayView().ShowAllDayArea = false;
           this.radScheduler1.GetDayView().WorkTime.Start = new TimeSpan(9, 0, 0);
           this.radScheduler1.GetDayView().WorkTime.End = new TimeSpan(19, 0, 0);
           SchedulerDayViewGroupedByResourceElement dayView = this.radScheduler1.SchedulerElement.ViewElement as SchedulerDayViewGroupedByResourceElement;
           dayView.ScrollToWorkHours();
           SchedulerDayViewGroupedByResourceElement headerElement = this.radScheduler1.SchedulerElement.ViewElement as SchedulerDayViewGroupedByResourceElement;
           headerElement.ResourceHeaderHeight = 135;
 
           RadMessageBox.Show(new Form() { TopMost = true, StartPosition = FormStartPosition.CenterScreen },
               "Information Saved.", "Aviso", MessageBoxButtons.OK, RadMessageIcon.Info, MessageBoxDefaultButton.Button1);
       }
0
Dess | Tech Support Engineer, Principal
Telerik team
answered on 15 Jun 2017, 11:38 AM
Hello Alejandro, 

Thank you for writing back. 

I am glad the problem you were facing is now resolved. The provided code snippet will be useful for the community if encountering such a scenario.

I hope this information helps. If you have any additional questions, please let me know. 

Regards,
Dess
Progress Telerik
Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Tags
Scheduler and Reminder
Asked by
Jeff
Top achievements
Rank 1
Answers by
Ralitsa
Telerik team
Alejandro
Top achievements
Rank 1
Dess | Tech Support Engineer, Principal
Telerik team
Share this question
or