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

Urgent Help on RadScheduler

2 Answers 165 Views
Scheduler
This is a migrated thread and some comments may be shown as answers.
Pushkar
Top achievements
Rank 1
Pushkar asked on 08 Dec 2010, 11:55 AM
Hello Guys.

I have successfully developed the RadScheduler as per requirement.
But now there are few changes.
At present i am showing my EventTitle in the appointment like in 1st December there are two events.
But now in that Day box instead of title i want to show total the number of events on that day occur in different color box as show in 15th December.
Please see the attached Snapshot for my requirement.
I hope this functionality is possible.

My present code is mentioned below.

OpenAccessProvider

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ERMS.Entities;
using ERMS.Services;
using System.Data;
using Telerik.Web.UI;
using Telerik.Web.UI.Calendar;
using Telerik.Web.UI.Scheduler;
 
/// <summary>
/// Summary description for OpenAccessCustomProvider
/// </summary>
public class OpenAccessCustomProvider : OpenAccessProviderBase
{
    public OpenAccessCustomProvider()
    {
        //
        // TODO: Add constructor logic here
        //
    }
 
    public override void Delete(RadScheduler owner, Appointment appointmentToDelete)
    {
        throw new NotImplementedException();
    }
 
 
    #region " Declaration "
 
    Orders objOrders = new Orders();
    OrdersService objOrdersService = new OrdersService();
    TList<Orders> objOrdersList = new TList<Orders>();
 
    ViewGetSearchOrdersService objOrderView = new ViewGetSearchOrdersService();
 
    DataSet dsOrderView = new DataSet();
 
    #endregion
 
 
    #region " Variables "
 
    Int32 _int_cnt = 0;
 
    #endregion
 
 
    public override IEnumerable<Appointment> GetAppointments(RadScheduler owner)
    {
 
        List<Appointment> appList = new List<Appointment>();
 
        DateTime dtEndDate = new DateTime();
        DateTime dtStartDate = new DateTime();
 
        dsOrderView = objOrderView.GetPaged("CompanyIDF = " + (new clsPageBase()).SESSION_COMPANYID + "", "OrderDate", 0, int.MaxValue, out _int_cnt).ToDataSet(true);
 
        if (dsOrderView != null && dsOrderView.Tables.Count > 0)
        {
            for (int i = 0; i < dsOrderView.Tables[0].Rows.Count; i++)
            {
                if (!string.IsNullOrEmpty(dsOrderView.Tables[0].Rows[i]["StartDate"].ToString()))
                {
                    if (string.IsNullOrEmpty(dsOrderView.Tables[0].Rows[i]["StartTime"].ToString()) == false)
                    {
                        dtStartDate = Convert.ToDateTime(Convert.ToDateTime(dsOrderView.Tables[0].Rows[i]["StartDate"]).ToString("MM dd yyyy") + " " + dsOrderView.Tables[0].Rows[i]["StartTime"].ToString());
                    }
                }
 
                if (!string.IsNullOrEmpty(dsOrderView.Tables[0].Rows[i]["FinishDate"].ToString()))
                {
                    if (string.IsNullOrEmpty(dsOrderView.Tables[0].Rows[i]["FinishTime"].ToString()) == false)
                    {
                        dtEndDate = Convert.ToDateTime(Convert.ToDateTime(dsOrderView.Tables[0].Rows[i]["FinishDate"]).ToString("MM dd yyyy") + " " + dsOrderView.Tables[0].Rows[i]["FinishTime"].ToString());
                    }
                }              
 
                Appointment newApponitment = new Appointment();
                newApponitment.Owner = owner;
                newApponitment.ID = dsOrderView.Tables[0].Rows[i]["OrderID"].ToString();
                newApponitment.Subject = dsOrderView.Tables[0].Rows[i]["Title"].ToString();
                newApponitment.Start = dtStartDate;
                newApponitment.End = dtEndDate;
 
                Resource newResource = new Resource();
                newResource.Type = "OrderStatus";
                newResource.Key = newApponitment.ID;
                newResource.Text = dsOrderView.Tables[0].Rows[i]["OrderStatus"].ToString();
 
                newApponitment.Resources.Add(newResource);
 
                appList.Add(newApponitment);
            }
        }
 
 
        return appList;
    }
 
    public override IEnumerable<ResourceType> GetResourceTypes(RadScheduler owner)
    {
        ResourceType[] resourceTypes = new ResourceType[1];
 
        resourceTypes[0] = new ResourceType("OrderStatus", false);
 
        return resourceTypes;
    }
 
    public override IEnumerable<Resource> GetResourcesByType(RadScheduler owner, string resourceType)
    {
        List<Resource> OrderResources = new List<Resource>();
 
        TList<OrderStatus> objOrderStatusList = new TList<OrderStatus>();
 
        foreach (OrderStatus item in (new OrderStatusService()).GetAll())
        {
            Resource newResource = new Resource();
            newResource.Type = "OrderStatus";
            newResource.Key = item.Id;
            newResource.Text = item.Status;
            OrderResources.Add(newResource);
        }
 
        return OrderResources;
    }
 
    public override void Insert(RadScheduler owner, Appointment appointmentToInsert)
    {
        throw new NotImplementedException();
    }
 
    public override void Update(RadScheduler owner, Appointment appointmentToUpdate)
    {
        throw new NotImplementedException();
    }
}

Html-Souce

<telerik:RadScheduler runat="server" ID="RadScheduler1" Skin="Default" ShowFooter="true" OverflowBehavior="Scroll" SelectedView="MonthView" Height="100%" NumberOfHoveredRows="1" DataKeyField="ID" DataSubjectField="Subject" DataStartField="Start" DataEndField="End"
TimelineView-UserSelectable="false" Culture="(Default)" StartInFullTime="true"
AllowDelete="false" AllowEdit="false" AllowInsert="false" ShowViewTabs="true"
OnAppointmentDataBound="RadScheduler1_AppointmentDataBound" ProviderName="OpenAccessProvider" OnAppointmentCreated="RadScheduler1_AppointmentCreated">
  <Localization AdvancedAllDayEvent="All day" />
  <AdvancedForm DateFormat="M/d/yyyy" TimeFormat="h:mm tt" />
  <AppointmentTemplate>
  <asp:LinkButton ID="lnkSubject" runat="server"></asp:LinkButton>
  </AppointmentTemplate>
</telerik:RadScheduler>

Code-Behind

protected void RadScheduler1_AppointmentCreated(object sender, AppointmentCreatedEventArgs e)
    {
        Label lblRed = (Label)e.Container.FindControl("lblRed");
        LinkButton lnkSubject = (LinkButton)e.Container.FindControl("lnkSubject");
        lnkSubject.Text = clsGeneral.ShowSingleQuote(e.Appointment.Subject);
        //lnkSubject.Attributes.Add("onClick", "return DoFilter('" + e.Appointment.ID.ToString() + "','" + e.Appointment.Resources.GetResourceByType("OrderStatus").Text + "');");
        lnkSubject.Attributes.Add("onclick", "return DisplayEventInformation(" + e.Appointment.ID.ToString() + " );");
        lnkSubject.Attributes.Add("onmouseover", "javascript:ddrivetip('<b>Click here to manage this Event</b>',250);");
        lnkSubject.Attributes.Add("onmouseout", "javascript:hideddrivetip();");
        e.Appointment.ToolTip = "";
        lblRed.Text = e.Appointment.Resources.GetResourceByType("OrderStatus").Text;
    }   
 
    protected void RadScheduler1_AppointmentDataBound(object source, SchedulerEventArgs e)
    {
 
        Int64 OrderID = 0;
 
        OrderID = Convert.ToInt64(e.Appointment.ID);
 
        objOrders = objOrdersService.GetById(OrderID);
 
        DateTime dtOrder = Convert.ToDateTime(objOrders.OrderDate);
        DateTime dtStartOn = Convert.ToDateTime(e.Appointment.Start);
        DateTime dtToday = DateTime.Now;
        Int64 days = 0;
        Int64 days1 = 0;
 
 
        days = clsGeneral.DateDiff(clsGeneral.DateInterval.Hour, dtToday, dtStartOn);
        days = days / 24;
 
        days1 = clsGeneral.DateDiff(clsGeneral.DateInterval.Hour, dtOrder, dtStartOn);
        days1 = days1 / 24;
 
        //For the Highest Priority Order,Consider Today Date and StartUp Date
 
        //For the Rush Order,Consider the Order Date to Start Date Difference
        if (days1 <= 5)
        {
            e.Appointment.CssClass = "rsCategoryBlue";
        }
        else
        {
            if (days <= 5)
            {
                e.Appointment.CssClass = "rsCategoryRed";
            }
            else if (days > 5)
            {
                e.Appointment.CssClass = "rsCategoryYellow";
            }
        }
         
    }

Thanks
Pushkar

2 Answers, 1 is accepted

Sort by
0
Peter
Telerik team
answered on 13 Dec 2010, 02:22 PM
Hi Pushkar,

Please, see this forum post:
http://www.telerik.com/community/forums/aspnet-ajax/scheduler/add-numbe-of-appoinments-to-cell.aspx#1290363

I hope you find it helpful.

Best wishes,
Peter
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.
0
Pushkar
Top achievements
Rank 1
answered on 17 Dec 2010, 06:56 AM
Hello Peter
Thanks for reply.

But i got my solution through regular asp.net calendar control.i customized as per my requirement.
i have attached screenshot.

Thanks
Pushkar
Tags
Scheduler
Asked by
Pushkar
Top achievements
Rank 1
Answers by
Peter
Telerik team
Pushkar
Top achievements
Rank 1
Share this question
or