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

Misalignment of Appointments to actual Appointment Time

2 Answers 76 Views
Scheduler
This is a migrated thread and some comments may be shown as answers.
Michael
Top achievements
Rank 1
Michael asked on 08 Oct 2014, 04:23 PM
Dear Telerik Team

I have a Problem with the alignments of the appointments in Scheduler in a 3 Month view. The number of slots is assigned in the codebehind and calculated as The total number of days between start and end of the current view in Timeline.

I made a testproject and a test stored procedure with which I hope you can find my Problem.

I've attached the the SQLProcedure, with what the issue is visible.

Stored Procedure:

Create PROCEDURE [dbo].[sp_TrainingTimelineAppointmentsTest]
      -- Add the parameters for the stored procedure here
     
        
AS
BEGIN
      -- SET NOCOUNT ON added to prevent extra result sets from
      -- interfering with SELECT statements.
      SET NOCOUNT ON;
      SET DATEFIRST 1;
     



DECLARE @OutputTable TABLE 

--             isOK
  [HelpID] int identity(1,1) PRIMARY KEY,
  [RessourceFK] int,
  [BeginDate] datetime,
  [Enddate] datetime,
  [Description] nvarchar(2048),
  [StatusColor] nvarchar(20),
  [TyperatingID] int,
  [ID] int,
  [CourseID] int,
  [CourseGenID] int,
  [AptIcao] nvarchar(10),
  [Remark] nvarchar(MAX),
  [Status] nvarchar(50),
  [Color] nvarchar(10),
  [Border] nvarchar(10),
  [Relevant] bit,
  [isCrewCourse] bit,
  [isRealCourse] bit,
  [isDeletable] bit,
  [RelatedCheck] int
)     


Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-10-01T09:00:00', '2014-10-01T18:00:00', 'First Course' , '#333333',1, 1, 1, 1,1, 1,'Test1', '#444444', '#000000',1, 0,1,0,0)

Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-10-05T09:00:00', '2014-10-05T18:00:00', 'Second Course' , '#333333',1, 2, 2, 1,1, 1,'Test2', '#444444', '#000000',1, 0,1,0,0)

Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-10-15T09:00:00', '2014-10-15T18:00:00', 'Third Course' , '#333333',1, 3, 3, 1,1, 1,'Test3', '#444444', '#000000',1, 0,1,0,0)

Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-10-18T09:00:00', '2014-10-18T18:00:00', 'Fourth Course' , '#333333',1, 4, 4, 1,1, 1,'Test4', '#444444', '#000000',1, 0,1,0,0)

Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-11-02T09:00:00', '2014-11-02T18:00:00', 'Fifth Course' , '#333333',1, 5, 5, 1,1, 1,'Test5', '#444444', '#000000',1, 0,1,0,0)


Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-11-09T09:00:00', '2014-11-09T18:00:00', 'Sixth Course' , '#333333',1, 6, 6, 1,1, 1,'Test6', '#444444', '#000000',1, 0,1,0,0)

Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-11-11T09:00:00', '2014-11-11T18:00:00', 'Seventh Course' , '#333333',1, 7, 7, 1,1, 1,'Test7', '#444444', '#000000',1, 0,1,0,0)

Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-11-18T09:00:00', '2014-11-18T18:00:00', 'Eigth Course' , '#333333',1, 8, 8, 1,1, 1,'Test8', '#444444', '#000000',1, 0,1,0,0)

Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-12-03T09:00:00', '2014-12-03T18:00:00', 'Nineth Course' , '#333333',1, 9, 9, 1,1, 1,'Test9', '#444444', '#000000',1, 0,1,0,0)

Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-12-06T09:00:00', '2014-12-06T18:00:00', 'Tenth Course' , '#333333',1, 10, 10, 1,1, 1,'Test10', '#444444', '#000000',1, 0,1,0,0)

Insert into @OutputTable
 ([RessourceFK],[BeginDate],[Enddate],[Description],[StatusColor],[TyperatingID] ,
  [ID],[CourseID],[CourseGenID],[AptIcao],[Remark],[Status],
  [Color],[Border],[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck] ) 
Values
(0, '2014-12-12T09:00:00', '2014-12-12T18:00:00', 'Eleventh Course' , '#333333',1, 11, 11, 1,1, 1,'Test11', '#444444', '#000000',1, 0,1,0,0)

                           

Select CASE WHEN [isRealCourse] = 1 THEN [HelpID] *-1 ELSE HelpID END AS ID ,[RessourceFK] ,[BeginDate] ,[Enddate] ,[Description] ,[StatusColor] ,[TyperatingID] ,[ID] AS RealID ,[CourseID] ,[CourseGenID] , [AptIcao] ,
[Remark] ,[Status] ,[Color] ,[Border] ,[Relevant] ,[isCrewCourse] ,[isRealCourse],[isDeletable],[RelatedCheck]
  From @OutputTable

END



File: Default.aspx.cs


using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Drawing;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
using Telerik.Web.UI.Scheduler.Views;


public partial class Training_User_Timeline2 : System.Web.UI.Page
{
    DateTime m_StartTime
    {
        set
        {
            

            ViewState["Training_User_Timeline_mStartTime"] = value.ToString("s");
        }
        get
        {
            DateTime temp = DateTime.Now.Date;
            if (DateTime.TryParse(ViewState["Training_User_Timeline_mStartTime"].ToString(), out temp))
            {
                return temp.Date;
            }
            else
            {
                return DateTime.Now.Date;
            }
        }

    }

    protected void Page_Load(object sender, EventArgs e)
    {



        if (!IsPostBack)
        {
            
            DateTime temp = DateTime.Now;
            
                m_StartTime = DateTime.Now.Date;
            

            RadSchedulerApplicants.SelectedDate = m_StartTime;
            SetRadSchedulerPeriod(m_StartTime);





                    InitializeResources();


            



        }

        
    }

    private void InitializeResources()
    {
        

            RadSchedulerApplicants.Resources.Clear();
            RadSchedulerApplicants.ResourceTypes.Clear();


            ResourceType resTypeResources = new ResourceType("Resources");
            resTypeResources.ForeignKeyField = "RessourceFK";

            RadSchedulerApplicants.ResourceTypes.Add(resTypeResources);


            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
            {
                DataTable dt = null;
                try
                {
                    conn.Open();
                    SqlDataAdapter da = new SqlDataAdapter();
                    da.SelectCommand = new SqlCommand(@"
SELECT DisplayName, RessourceKey FROM (SELECT 'Courses' AS DisplayName, 0 AS RessourceKey, 0 AS help ) AS TEST ORDER BY help, DisplayName", conn);
                    
                    dt = new DataTable();
                    da.Fill(dt);
                    DataRow[] rows = null;
                    
                    rows = dt.Select();

                    foreach (DataRow row in rows)
                    {

                        RadSchedulerApplicants.Resources.Add(new Resource("Resources", (int)row["RessourceKey"], (string)row["DisplayName"]));
                    }

                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }

                if (conn != null)
                    conn.Close();


                RadSchedulerApplicants.TimelineView.GroupBy = "Resources";
                RadSchedulerApplicants.DataBind();
            }
        

    }

    protected void DropDownListFilter_SelectedIndexChanged(object sender, EventArgs e)
    {
        //UpdateResources(CrewplanID);
        

    }
    protected void DropDownListCrewPlan_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {

        //CrewplanID = Convert.ToInt32(DropDownListCrewPlan.SelectedValue);

        InitializeResources();
        
    }

    protected void DropDownListInterval_SelectedIndexChanged(object sender, EventArgs e)
    {
        

    }

    private void SetRadSchedulerPeriod(DateTime StartDate)
    {
        
                RadSchedulerApplicants.TimelineView.NumberOfSlots = (int)(StartDate.AddMonths(3) - StartDate).TotalDays;

                RadSchedulerApplicants.TimelineView.TimeLabelSpan = 1;
                //RadSchedulerApplicants.TimelineView.NumberOfSlots = 90;
                //RadSchedulerCourses.TimelineView.TimeLabelSpan = 1;
                


    }

    protected void DropDownListNaviInterval_SelectedIndexChanged(object sender, EventArgs e)
    {
        


    }
    protected void RadSchedulerApplicants_NavigationCommand(object sender, SchedulerNavigationCommandEventArgs e)
    {
        e.Cancel = true;
        int direction = 0;

        switch (e.Command)
        {
            case SchedulerNavigationCommand.NavigateToNextPeriod:
                direction = 1;
                break;
            case SchedulerNavigationCommand.NavigateToPreviousPeriod:
                direction = -1;
                break;
            case SchedulerNavigationCommand.NavigateToSelectedDate:
            case SchedulerNavigationCommand.SwitchToSelectedDay:

                m_StartTime = e.SelectedDate.Date;


                RadSchedulerApplicants.SelectedDate = m_StartTime.Date;

                SetRadSchedulerPeriod(m_StartTime.Date);
                return;

        }


        
                m_StartTime = m_StartTime.Date.AddMonths(direction * 1);
                


        RadSchedulerApplicants.SelectedDate = m_StartTime.Date;

        SetRadSchedulerPeriod(m_StartTime.Date);
    }

    protected void DropDownListCrewPlan_DataBound(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            InitializeResources();
        }
    }

    protected void SqlDataSourceCourses_Selected(object sender, SqlDataSourceStatusEventArgs e)
    {

        int i = e.AffectedRows;
    }

    #region Telerik Drag and drop Section

    protected void RadSchedulerApplicants_AppointmentInsert(object sender, SchedulerCancelEventArgs e)
    {
        /*e.Appointment.Attributes["BeginDate"] = e.Appointment.Start.AddDays(1).ToString("yyyy/MM/dd HH:mm", CultureInfo.InvariantCulture);
        e.Appointment.Attributes["EndDate"] = e.Appointment.Start.AddDays(2).ToString("yyyy/MM/dd HH:mm", CultureInfo.InvariantCulture);*/
        String test = "test";
    }



    private void HandleSchedulerDrop(int id, string subject, string targetSlotIndex, String targetSlotRessourceID)
    {
        RadSchedulerApplicants.Rebind();

        ISchedulerTimeSlot slot = RadSchedulerApplicants.GetTimeSlotFromIndex(targetSlotIndex);



        TimeSpan duration = TimeSpan.FromHours(1);
        if (slot.Duration == TimeSpan.FromDays(1))
        {
            duration = slot.Duration;
        }

        ScheduleAppointment(id, targetSlotRessourceID);
    }

    protected void RadSchedulerApplicants_AppointmentCommand(object sender, AppointmentCommandEventArgs e)
    {
        if (e.CommandName == "Unschedule")
        {
            if (int.Parse(e.Container.Appointment.Resources[0].Key.ToString()) > 0)
            {
                int id = int.Parse(e.Container.Appointment.Attributes["RealID"]);
                int crewid = (int)e.Container.Appointment.Resources[0].Key;

                DateTime dueDate = DateTime.Now;

                if (!string.IsNullOrEmpty(e.Container.Appointment.Attributes["BeginDate"]))
                    dueDate = Convert.ToDateTime(e.Container.Appointment.Attributes["BeginDate"]);



                UnscheduleAppointment(id, crewid);
                RadSchedulerApplicants.Rebind();
            }
            else
            {
                int id = int.Parse(e.Container.Appointment.Attributes["RealID"]);
                DeleteCourse(id);
            }
        }
    }

    private void DeleteCourse(int courseid)
    {
        
        RadSchedulerApplicants.DataBind();
    }

    private void UnscheduleAppointment(int id, int crewid)
    {
        
    }

    private void ScheduleAppointment(int id, String CrewID)
    {
        
    }

    private static bool OnDataSourceOperationComplete(int count, Exception e)
    {
        if (e != null)
        {
            throw e;
        }
        return true;
    }

    

    #endregion Telerik Drag and drop Section

    protected void SqlDataSourceCoursesToPlan_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        try
        {
            e.Command.Parameters["@DateFrom"].Value = m_StartTime.ToString("s");
            
                    e.Command.Parameters["@DateTo"].Value = m_StartTime.AddMonths(3).ToString("s");
                    
        }
        catch (Exception ex)
        {
            String test = "";
        }

    }

    protected void SqlDataSourceCoursesToPlan_Selected(object sender, SqlDataSourceStatusEventArgs e)
    {
        int test = e.AffectedRows;
    }

    protected void RadSchedulerApplicants_TimeSlotCreated(object sender, TimeSlotCreatedEventArgs e)
    {
        e.TimeSlot.CssClass = "RadSched_Back";
        if ((e.TimeSlot.End <= DateTime.Now.AddMinutes((e.TimeSlot.End - e.TimeSlot.Start).TotalMinutes)) && (e.TimeSlot.End >= DateTime.Now))
        {
            e.TimeSlot.CssClass = "NowCss";
        }
    }

    protected void RadSchedulerApplicants_AppointmentDataBound(object sender, SchedulerEventArgs e)
    {
        try
        {
            e.Appointment.BackColor = ColorTranslator.FromHtml(e.Appointment.Attributes["StatusColor"]);
            e.Appointment.BorderColor = ColorTranslator.FromHtml(e.Appointment.Attributes["Border"]);
            e.Appointment.AllowEdit = true;
            e.Appointment.AllowDelete = true;
            if (int.Parse(e.Appointment.ID.ToString()) < 0)
            {
                e.Appointment.ContextMenuID = "RadSchedulerCourseContext";
            }
            else
            {
                e.Appointment.ContextMenuID = "RadSchedulerOther";
            }





            
               
                    if (e.Appointment.Duration.TotalHours < 24)
                    {
                        e.Appointment.End = e.Appointment.Start.AddHours(24);
                    }
                    
            e.Appointment.End = e.Appointment.End.AddMinutes(-1);
            e.Appointment.Start = e.Appointment.Start.AddMinutes(1);
        }
        catch (Exception ex)
        {
            String test = "";
        }
    }

    protected void DropDownListInterval_DataBound(object sender, EventArgs e)
    {
        
    }

    protected void RadButtonNewCourse_Click(object sender, EventArgs e)
    {
        RadWindowManager1.DataBind();

        String Script = "OpenRadWindow('NewCourse.aspx?start=" + DateTime.Now.ToString("s") + "')";
        RadAjaxPanel1.ResponseScripts.Add(Script);

    }

    protected void RadButtonApplyFilters_Click(object sender, EventArgs e)
    {
        RadSchedulerApplicants.Rebind();
    }

    protected void SqlDataSourceApplicantCourses_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
    {
        //e.Command.Parameters["@RangeStart"].Value = RadSchedulerApplicants.VisibleRangeStart;
        //e.Command.Parameters["@RangeEnd"].Value = RadSchedulerApplicants.VisibleRangeEnd;
        //e.Command.Parameters["@DutyPlanID"].Value = DropDownListCrewPlan.SelectedValue;
        //e.Command.Parameters["@TypeRatingID"].Value = RadComboBoxFilterTypeRating.SelectedValue;
        //e.Command.Parameters["@CheckId"].Value = RadComboBoxFilterCheck.SelectedValue;
        //if (RadComboBoxFilterExpiration.SelectedValue == "No")
        //{
        //    e.Command.Parameters["@Expiry"].Value = false;
        //}
        //else
        //{
        //    e.Command.Parameters["@Expiry"].Value = true;
        //}
        //if (RadComboBoxFilterPlanned.SelectedValue == "No")
        //{
        //    e.Command.Parameters["@Planned"].Value = false;
        //}
        //else
        //{
        //    e.Command.Parameters["@Planned"].Value = true;
        //}
        //if (RadComboBoxFilterDuties.SelectedValue == "No")
        //{
        //    e.Command.Parameters["@Duties"].Value = false;
        //}
        //else
        //{
        //    e.Command.Parameters["@Duties"].Value = true;
        //}

    }

    protected void RadComboBoxFilterExpiration_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        
    }

    protected void RadComboBoxFilterDuties_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        
    }

    protected void RadComboBoxFilterPlanned_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        
    }

    protected void RadAjaxPanel1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        String test = "test";
    }

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {

    }

    protected void ButtonScheduleAppointment_Click(object sender, EventArgs e)
    {
        try
        {
            int id = int.Parse(HiddenFieldAppointmentId.Value);
            String CrewId = TargetSlotRessourceHiddenField.Value;
            ScheduleAppointment(id, CrewId);
        }
        catch (Exception ex)
        {

        }
    }

    protected void ButtonRefreshScheduler_Click(object sender, EventArgs e)
    {
        RadSchedulerApplicants.Rebind();
    }

    protected void RadSchedulerApplicants_ResourceHeaderCreated(object sender, ResourceHeaderCreatedEventArgs e)
    {
        Panel tempPanel = (Panel)e.Container.FindControl("HeaderTemplateContainer");
        String TooltipText = "";
        if (int.Parse(e.Container.Resource.Key.ToString()) > 0)
        {
            #region Functions
            TooltipText += "<h2>Functions</h2><table><thead><tr><th>FunctionName</th></tr></thead><tbody>";
            using (SqlConnection conn0 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
            {

                try
                {
                    conn0.Open();



                                TooltipText += "<tr><td>" + "Testdescription" + "</td></tr>";


                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
                TooltipText += "</tbody></table><br/>";
            }
            #endregion
            #region Typeratings
            TooltipText += "<h2>Typeratings</h2><table><thead><tr><th>TyperatingName</th></tr></thead><tbody>";
            using (SqlConnection conn1 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
            {

                try
                {


                                TooltipText += "<tr><td>" + "TestTyperating" + "</td></tr>";


                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
                TooltipText += "</tbody></table><br/>";
            }
            #endregion

            #region tooltipChecks
            TooltipText += "<h2>Checks</h2><table><thead><tr><th>Check</th><th>Typerating</th><th>Last planned</th><th>Earliest to perform </th></tr></thead><tbody>";
            using (SqlConnection conn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
            {

                try
                {
                    conn2.Open();

                    
  
                                TooltipText += "<tr><td>" + "testdescription" + "</td><td>" + "testtyperating" + "</td><td>" +  "" + "</td><td>" +  "" + "</td></tr>";


                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
                TooltipText += "</tbody></table>";

            }
            #endregion
            RadToolTip tip = new RadToolTip();
            tip.Text = TooltipText;
            tip.IsClientID = true;
            tip.AutoCloseDelay = 15000;
            tip.RelativeTo = ToolTipRelativeDisplay.Element;
            tip.TargetControlID = tempPanel.ClientID;
            tip.Animation = ToolTipAnimation.None;
            tip.Position = ToolTipPosition.TopLeft;
            e.Container.Controls.Add(tip);
        }

        Label ResourceText = new Label();
        ResourceText.Text = e.Container.Resource.Text;
        tempPanel.Controls.Add(ResourceText);
    }

    protected void RadSchedulerApplicants_AppointmentCreated(object sender, AppointmentCreatedEventArgs e)
    {
        String HtmlTooltip = "";
        if (Boolean.Parse(e.Appointment.Attributes["isRealCourse"].ToString()) || Boolean.Parse(e.Appointment.Attributes["isCrewCourse"].ToString()))
        {
            #region Course

            HtmlTooltip = @"<h2>" + e.Appointment.Subject + @"</h2>
<p>" + String.Format("{0:yyyy-MM-dd HH:mm}", e.Appointment.Start) + " to " + String.Format("{0:yyyy-MM-dd HH:mm}", e.Appointment.End) + "</p>";


            using (SqlConnection conn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
            {

                try
                {

                                HtmlTooltip += "<h2>Typerating: " + "none" + "</h2>";


                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }


            }


            HtmlTooltip += "<h2>Checks in Course</h2><table><thead><tr><th>Checkname</th><th>Checkdate</th></tr></thead><tbody>";
            using (SqlConnection conn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
            {

                try
                {
                    conn2.Open();



                                HtmlTooltip += "<tr><td>" + "testdescription" + "</td><td>" + "" + "</td></tr>";


                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
                HtmlTooltip += "</tbody></table>";

            }


            HtmlTooltip += "<h2>Crewmembers in Course</h2><table><tbody>";
            using (SqlConnection conn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
            {

                try
                {
                    conn2.Open();



                                HtmlTooltip += "<tr><td>" + "Name" + "</td></tr>";


                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
                HtmlTooltip += "</tbody></table>";

            }


            #region CheckColors
            String CheckColorDivs = "";
            using (SqlConnection conn4 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
            {

                try
                {
                    conn4.Open();

                    
                            int position = 1;
                            
                                CheckColorDivs += "<div style=\"height:3px;width:100%;border:1px solid black;background-color:" +  "White" + ";position:absolute; left:0px;top:" + position + "px;z-index:1\"></div>";
                                

                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
                if (CheckColorDivs.Length > 0)
                {
                    LiteralControl litcon = new LiteralControl(CheckColorDivs);
                    ((Panel)e.Container.FindControl("AppointmentContainer")).Controls.Add(litcon);
                }

            }
            #endregion
            #endregion
        }
        if (e.Appointment.Attributes["RelatedCheck"] != null && int.Parse(e.Appointment.Attributes["RelatedCheck"].ToString()) > 0)
        {
            HtmlTooltip = @"<h2>" + e.Appointment.Subject + @"</h2>
<p>" + String.Format("{0:yyyy-MM-dd}", e.Appointment.Start) + " to " + String.Format("{0:yyyy-MM-dd}", e.Appointment.End) + "</p>";


            #region CheckColors2
            String CheckColorDivs = "";
            using (SqlConnection conn4 = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString))
            {

                try
                {
                    conn4.Open();


                            int position = 1;
                            
                    CheckColorDivs += "<div style=\"height:3px;width:100%;border:1px solid black;background-color:" +  "White" + ";position:absolute; left:0px;top:" + position + "px;z-index:1\"></div>";
                               

                }
                catch (System.Exception ex)
                {
                    System.Diagnostics.Debug.WriteLine(ex.Message);
                }
                if (CheckColorDivs.Length > 0)
                {
                    LiteralControl litcon = new LiteralControl(CheckColorDivs);
                    ((Panel)e.Container.FindControl("AppointmentContainer")).Controls.Add(litcon);
                }

            }
            #endregion
        }

        RadToolTip tip = new RadToolTip();
        tip.Text = HtmlTooltip;
        tip.IsClientID = true;
        tip.AutoCloseDelay = 15000;
        tip.RelativeTo = ToolTipRelativeDisplay.Element;
        tip.TargetControlID = e.Appointment.ClientID;
        tip.Animation = ToolTipAnimation.None;
        tip.Position = ToolTipPosition.TopLeft;
        e.Container.Controls.Add(tip);




        //Panel tempPanel = (Panel)e.Container.FindControl("AppointmentContainer");


    }

    protected void ButtonDeleteCourse_Click(object sender, EventArgs e)
    {
        int CourseID = 0;

        if (int.TryParse(HiddenFieldDeleteCourse.Value, out CourseID))
        {
            DeleteCourse(CourseID);
        }
    }





}

File: Default.aspx

<%@ Page Title="" Language="C#"  AutoEventWireup="True"
    Inherits="Training_User_Timeline2" CodeBehind="Default.aspx.cs" %>

<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<link rel="shortcut icon" href="<%=VirtualPathUtility.ToAbsolute("~/DocumentStorage/ThisCompanyLogo_2.ico")%>" />
<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">
    
    <link rel="Shortcut Icon" href="" type="image/x-icon" />
    <title>Biz Flight Plus</title>
    <style type="text/css">
         .blockDisplay a
        {
            display: block;
         
        }
    </style>
    
    <style type="text/css">
                .NowCss
        {
            border-left: 3px solid red !important;
            background-color: White !important;
        }
        
        .RadSched_Back
        {
            background-color: White !important;
        }
        .rsWrap
        {
            margin: 0px 0px 0px 0px !important;
            padding: 0px 0px 0px 0px !important;
        }
        .rsAptContent
        {
            margin: 0px 0px 0px 0px !important;
            padding: 0px 0px 0px 0px !important;
        }
        
        .rsAptDelete
        {
            display: none !important;
        }
        .rsAptResize
        {
            display: none;
        }
        .rsWrap
        {
            height: 17px !important;
        }
        .rsAptContent
        {
            font-size: 9px;
            text-shadow: -1px 0px 2px white, 0px 1px 2px white,
      1px 0px 2px white, 0px -1px 2px white;
            line-height: 12px;
            height: 14px;
        }
        
        .rsApt
        {
            height: 16px !important;
        }
        </style>
    <script type="text/javascript" language="javascript">
            
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <telerik:radscriptmanager ID="RadScriptManager1" runat="server" 
    AsyncPostBackTimeout="56000">
    </telerik:radscriptmanager>
 
    <telerik:radscriptblock ID="RadScriptBlock1" runat="server">
        <script type="text/javascript" language="javascript">
            var WindowOpen = false;

            function SchedulerApplicantsAppointmentMoveStart(sender, eventArgs) {

                selectedAppointment = eventArgs.get_appointment();

                if (selectedAppointment._id > 0) {
                    eventArgs.set_cancel(true);

                }
            }
            function SchedulerApplicantsAppointmentMoveEnd(sender, eventArgs) {

                selectedAppointment = eventArgs.get_appointment();

                if (selectedAppointment._id > 0) {
                    eventArgs.set_cancel(true);

                } else {
                    $get("<%=TargetSlotHiddenField.ClientID %>").value = eventArgs.get_targetSlot().get_index();
                    $get("<%=TargetSlotRessourceHiddenField.ClientID %>").value = eventArgs.get_targetSlot().get_resource().get_key();
                    $get("<%=HiddenFieldAppointmentId.ClientID %>").value = selectedAppointment._attributes._data.RealID;

                    document.getElementById("<%= ButtonScheduleAppointment.ClientID %>").click();

                }
            }
            function SchedulerApplicantsAppointmentResizeStart(sender, eventArgs) {
                eventArgs.set_cancel(true);
            }

            $telerik.$(".Disabled").bind("RadSchedulerOther", function (e) {
                return false;
            });

            //Called when the user right-clicks an appointment
            function appointmentContextMenu(sender, eventArgs) {

                selectedAppointment = eventArgs.get_appointment();


            }

            //Called when the user clicks an item from the appointment context menu
            function appointmentContextMenuItemClicked(sender, eventArgs) {

                if (!selectedAppointment) {

                    return;
                }

                var clickedItem = eventArgs.get_item();
                var scheduler = $find("<%= RadSchedulerApplicants.ClientID %>");

                if (clickedItem._properties._data.value == "EditCourse") {
                    var oWnd = window.radopen('CourseEdit.aspx?id=' + selectedAppointment._attributes._data.RealID, "RadWindow1");
                    oWnd.center();
                    WindowOpen = true;

                }
                if (clickedItem._properties._data.value == "CourseClose") {
                    var oWnd = window.radopen('CourseClose.aspx?id=' + selectedAppointment._attributes._data.RealID, "RadWindow2");

                    oWnd.setSize(900, 600);
                    oWnd.set_minWidth(600);
                    oWnd.set_minHeight(900);
                    oWnd.center();
                    WindowOpen = true;

                }
                if (clickedItem._properties._data.value == "CourseDelete") {

                    DeleteCourse(selectedAppointment._attributes._data.RealID);
                }
            }

            function DeleteCourse(courseID) {
                if (confirm("Do you want to delete this course")) {
                    document.getElementById("<%= HiddenFieldDeleteCourse.ClientID %>").value = courseID;
                    document.getElementById("<%= ButtonDeleteCourse.ClientID %>").click();
                }
            }

            function OnClientTimeSlotContextMenu(sender, args) {

            }

            function OnClientTimeSlotContextMenu(sender, args) {

            }

            function OnClientTimeSlotContextMenuItemClicked(sender, args) {
                var clickedItem = args.get_item();
                var clickedSlot = args.get_slot();

                if (clickedItem._properties._data.value == "CommandNewCourse") {
                    OnClientNewCourse(clickedSlot.get_startTime());
                }
            }

            function OnClientNewCourse(date) {


                var oWnd = window.radopen('NewCourse.aspx?start=' + makedateString(date), "RadWindow1");

                oWnd.setSize(900, 600);
                oWnd.center();
                oWnd.on
                WindowOpen = true;
            }

            function makedateString(date) {
                var datestring = date.getFullYear() + '-';
                if (date.getMonth() < 10) {
                    datestring = datestring + '0' + (date.getMonth() + 1) + '-';
                } else {
                    datestring = datestring + (date.getMonth() + 1) + '-';
                }
                if (date.getDate() < 10) {
                    datestring = datestring + '0' + date.getDate() + 'T00:00:00';
                } else {
                    datestring = datestring + date.getDate() + 'T00:00:00';
                }

                return datestring;
            }



            function OpenRadWindow(url) {
                var oWnd = window.radopen(url, "RadWindow1");


                oWnd.setSize(900, 600);
                oWnd.center();
                WindowOpen = true;
            }

            function RadWindow1_close(sender, args) {
                WindowOpen = false;

                RefreshScheduler();

            }

            function RefreshScheduler() {

                document.getElementById("<%= ButtonRefreshScheduler.ClientID %>").click();

            }









            //]]>
        </script>
    </telerik:radscriptblock>
    <asp:HiddenField ID="TargetSlotHiddenField" runat="server" />
    <asp:HiddenField ID="TargetSlotRessourceHiddenField" runat="server" />
    <asp:HiddenField ID="HiddenFieldAppointmentId" runat="server" />
    
    <telerik:radajaxmanager runat="server" ID="RadAjaxManager1" EnableAJAX="true" 
        onajaxrequest="RadAjaxManager1_AjaxRequest">
        <AjaxSettings>
            <telerik:ajaxsetting AjaxControlID="RadSchedulerApplicants">
                <UpdatedControls>
                    <telerik:ajaxupdatedcontrol 
    ControlID="RadSchedulerApplicants"></telerik:AjaxUpdatedControl>
                    
                </UpdatedControls>
            </telerik:AjaxSetting>
            
        </AjaxSettings>
    </telerik:radajaxmanager>
    <asp:SqlDataSource ID="SqlDataSourceEvents" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
        SelectCommand="SELECT [ID], [ResourceID], [Start], [Stop], [Name] FROM [TestScheduler]">
    </asp:SqlDataSource>
    <asp:SqlDataSource ID="SqlDataSourceResources1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
        SelectCommand="SELECT [ID] As ResourceID, [Name], [Description] FROM [TestResources]">
    </asp:SqlDataSource>
    <asp:Label ID="LabelFilterinformation" runat="server" Text="Label"></asp:Label>
    <br />
    
            Training schedule<br />
            &nbsp;<asp:SqlDataSource ID="SqlDataSourceApplicantCourses" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
                DeleteCommand="DELETE FROM T_TrainingCrewInCourse
WHERE     (ID = @ID)" InsertCommand="INSERT INTO T_TrainingCrewInCourse(CourseID, CrewID, present, Feedbackrecived) VALUES (@CourseID, @CrewID, 0, 0)"
                OnSelected="SqlDataSourceCourses_Selected" 
                
                
                
                
                SelectCommand="sp_TrainingTimelineAppointmentsTest" 
                onselecting="SqlDataSourceApplicantCourses_Selecting" 
                SelectCommandType="StoredProcedure">
                <DeleteParameters>
                    <asp:Parameter Name="ID" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="CourseID" />
                    <asp:Parameter Name="CrewID" />
                </InsertParameters>
            </asp:SqlDataSource>
            <asp:SqlDataSource ID="SqlDataSourceRecources" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
                OnSelected="SqlDataSourceCourses_Selected" 
                SelectCommand="SELECT DisplayName, RessourceKey FROM (SELECT 'Courses' AS DisplayName, 0 AS RessourceKey, 0 AS help ) AS TEST ORDER BY help, DisplayName">
                
            </asp:SqlDataSource>
    <telerik:radformdecorator ID="QsfFromDecorator" runat="server" DecoratedControls="All"
                EnableRoundedCorners="false" />
    <telerik:radscheduler ID="RadSchedulerApplicants" runat="server" 
                AllowDelete="false" 
                CustomAttributeNames="RessourceFK,CourseID,StatusColor, Description, Status, Color, ID, Border,RealID,isDeletable, isCrewCourse, isRealCourse,RelatedCheck" 
                DataDescriptionField="Remark" DataEndField="Enddate" DataKeyField="ID" 
                DataSourceID="SqlDataSourceApplicantCourses" DataStartField="BeginDate" 
                DataSubjectField="Description" Height="600px" 
                OnAppointmentCommand="RadSchedulerApplicants_AppointmentCommand" 
                onappointmentcreated="RadSchedulerApplicants_AppointmentCreated" 
                OnAppointmentDataBound="RadSchedulerApplicants_AppointmentDataBound" 
                OnAppointmentInsert="RadSchedulerApplicants_AppointmentInsert" 
                OnClientAppointmentContextMenu="appointmentContextMenu" 
                OnClientAppointmentContextMenuItemClicked="appointmentContextMenuItemClicked" 
                onclientappointmentmoveend="SchedulerApplicantsAppointmentMoveEnd" 
                onclientappointmentmovestart="SchedulerApplicantsAppointmentMoveStart" 
                onclientappointmentresizestart="SchedulerApplicantsAppointmentResizeStart" 
                onclienttimeslotcontextmenuitemclicked="OnClientTimeSlotContextMenuItemClicked" 
                OnClientTimeSlotContextMenuItemClicking="OnClientTimeSlotContextMenu" 
                OnNavigationCommand="RadSchedulerApplicants_NavigationCommand" 
                onresourceheadercreated="RadSchedulerApplicants_ResourceHeaderCreated" 
                OnTimeSlotCreated="RadSchedulerApplicants_TimeSlotCreated" 
                OverflowBehavior="Expand" RowHeight="17px" SelectedView="TimelineView" 
                ShowFooter="False" Width="1350px">
                <AdvancedForm Enabled="false" />
                <AppointmentTemplate>
                    <asp:Panel ID="AppointmentContainer" runat="server" style="position:relative">
                        <div style="position:relative">
                            <span style="position:absolute; left:0px;top:0px;z-index:10;">
                            <%# Eval("Description")%></span>
                            <asp:ImageButton ID="UnscheduleAppointmentImageButton" runat="server" 
                                CommandName="Unschedule" CssClass="simpleButton" ImageUrl="~/Images/delete.gif" 
                                OnClientClick="return confirm('Do you want to Delete this course')" 
                                style="position:absolute; right:0px;top:0px;z-index:10;" Text="&nbsp;" 
                                ToolTip="Delete this Course" 
                                Visible='<%# int.Parse(Eval("RealID").ToString()) > 0 && bool.Parse(Eval("isDeletable").ToString()) %>' />
                        </div>
                    </asp:Panel>
                </AppointmentTemplate>
                <ResourceHeaderTemplate>
                    <asp:Panel ID="HeaderTemplateContainer" runat="server">
                    </asp:Panel>
                </ResourceHeaderTemplate>
                <ResourceTypes>
                    <telerik:resourcetype AllowMultipleValues="False" 
                        DataSourceID="SqlDataSourceRecources" ForeignKeyField="RessourceFK" 
                        KeyField="RessourceKey" Name="DisplayName" 
    TextField="DisplayName" />
                </ResourceTypes>
                <TimelineView ColumnHeaderDateFormat="dd" EnableExactTimeRendering="True" 
                    GroupBy="DisplayName" GroupingDirection="Vertical" />
                <DayView UserSelectable="false" />
                <WeekView UserSelectable="false" />
                <MonthView UserSelectable="false" />
                <AppointmentContextMenuSettings EnableDefault="false" />
                <AppointmentContextMenus>
                    <telerik:radschedulercontextmenu 
    ID="RadSchedulerCourseContext" runat="server" 
                        AppendDataBoundItems="True">
                        <Items>
                            <telerik:radmenuitem runat="server" Text="Edit Course" Value="EditCourse">
                            </telerik:RadMenuItem>
                            <telerik:radmenuitem runat="server" Text="Close Course" Value="CourseClose">
                            </telerik:RadMenuItem>
                            <telerik:radmenuitem runat="server" Text="Delete Course" Value="CourseDelete">
                            </telerik:RadMenuItem>
                        </Items>
                    </telerik:RadSchedulerContextMenu>
                    <telerik:radschedulercontextmenu ID="RadSchedulerOther" runat="server" 
                        AppendDataBoundItems="True">
                        <Items>
                        </Items>
                    </telerik:RadSchedulerContextMenu>
                </AppointmentContextMenus>
                <TimeSlotContextMenus>
                    <telerik:radschedulercontextmenu ID="SchedulerTimeSlotContextMenu" 
                        runat="server">
                        <Items>
                            <telerik:radmenuitem Text="New Course" Value="CommandNewCourse" />
                        </Items>
                    </telerik:RadSchedulerContextMenu>
                </TimeSlotContextMenus>
            </telerik:radscheduler>
    <telerik:radwindowmanager ID="RadWindowManager1" runat="server">
                <Windows>
                    <telerik:radwindow ID="RadWindow1" runat="server" 
    OnClientClose="RadWindow1_close" AutoSize="True"  
    Behavior="Close, Pin, Move, Reload, Resize" 
    Behaviors="Close, Pin, Move, Reload, Resize" Width="1000" Height="1200"
                VisibleStatusbar="False" ReloadOnShow="true" 
    ShowContentDuringLoad="false">
                    </telerik:RadWindow>
                    <telerik:radwindow ID="RadWindow2" runat="server" 
    OnClientClose="RadWindow1_close" Width="1000" Height="1200" 
    Behavior="Close, Pin, Move, Reload" Behaviors="Close, Pin, Move, Reload" 
                VisibleStatusbar="False" ReloadOnShow="true" 
    ShowContentDuringLoad="false">
                    </telerik:RadWindow>
                </Windows>
            </telerik:radwindowmanager>
    <telerik:radajaxpanel ID="RadAjaxPanel1" runat="server" Height="2px" 
                Width="2px" onajaxrequest="RadAjaxPanel1_AjaxRequest">
                
            </telerik:radajaxpanel>
            <asp:Panel ID="HelpHidePanel" runat="server" style="display:none">
            <asp:Button ID="ButtonScheduleAppointment" runat="server" 
                onclick="ButtonScheduleAppointment_Click" Text="Button" style="display:none"/>
                <asp:Button ID="ButtonRefreshScheduler" runat="server" 
                 Text="Button" style="display:none" 
                onclick="ButtonRefreshScheduler_Click"/>
                <asp:Button ID="ButtonDeleteCourse" runat="server" 
                 Text="Button" style="display:none" onclick="ButtonDeleteCourse_Click" 
                />
                <asp:HiddenField ID="HiddenFieldDeleteCourse" runat="server" />
                </asp:Panel>
       
   
</form>
</body>
</html>











2 Answers, 1 is accepted

Sort by
0
Accepted
Boyan Dimitrov
Telerik team
answered on 13 Oct 2014, 01:42 PM
Hello,

Please remove this custom style in order to avoid this misalignment problem:
//css
.NowCss
       {
           border-left: 3px solid red !important;
        ...
       }



Regards,
Boyan Dimitrov
Telerik
 

Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

 
0
Michael
Top achievements
Rank 1
answered on 16 Oct 2014, 08:53 AM
Thank you, that solved it.
Tags
Scheduler
Asked by
Michael
Top achievements
Rank 1
Answers by
Boyan Dimitrov
Telerik team
Michael
Top achievements
Rank 1
Share this question
or