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

Displayin d/b driven events in RadCalendar for ASPNET Ajax using DayRender event

1 Answer 81 Views
Calendar
This is a migrated thread and some comments may be shown as answers.
Jeff
Top achievements
Rank 1
Jeff asked on 30 Sep 2008, 11:28 PM
Hello Community Forum members,

Please excuse me for my ignorance as I'm new to RadControls and ASP.Net Ajax. MY skill level for ASP.Net is at a high-beginner level, at best.

I'm trying to display d/b driven events in the RadCalendar control using RADControls for ASPNET Ajax. I can get the Calendar to render properly, but can't seem to get the Events to appear on the scheduled day.

Here's some background on my project:
ASP.Net 2.0 using C# and MS Sql 2005 database. After researching these forums and Google, I've discovered that the best way to do this with a calendar control is to make the d/b call once for each month and store the events data from the d/b into an Array or some type of collection vs. making up to 31 calls to the d/b for each day rendered in the month.

So, after discovering a few examples of how to do this in some older forum posts (previous to the release of RadCalendar for ASPNET Ajax, I believe), I was able to get a head start on how to do this.

Problem is, I'm running into a few errors at build time re: the DayRender and DefaultViewChanged events:  Telerik.WebControls.Base.Calendar.Events.DayRenderEventArgs

The compiler throws an error saying:
Error 143 The type or namespace name 'Base' does not exist in the namespace 'Telerik.WebControls' (are you missing an assembly reference?)

I looked in the bin directory of my project and all I saw was the following dll's:
1) RadGrid.dll (used in a previous version of Rad Controls-still works great)
2) Telerik.Web.UI.dll

I used the automatic installation to install RadControls to my VS 2005 IDE and it appears fine in the toolbox. In design mode, I inserted the Rad Calendar control on to my page and have customized it from there.

I keep thinking that there is a way to add a reference/assembly for the Telerik.WebControls.dll to the assemble, but can't locate it anywhere.

Do I even need the Telerik.WebControls.dll in this version of RadControls for ASP.Net Ajax or will the Telerik.Web.UI.dll do the trick for me?

If yes, how do I add that reference to my project?

I've tried several times to add it from the RadControls installation folder at this location:
C:\Program Files\Telerik\RadControls for ASPNET AJAX Q2 2008\Bin
but the only dll's and files I saw in there were:
1) Telerik.Charting.dll
2) Telerik.Charting.xml
3) Telerik.Web.UI.dll
4) Telerik.Web.UI.xml

I already have the Telerik.Web.UI.dll & Telerik.Web.UI.xml files in the bin directory of my project, but can't seem to get the Telerik.WebControls.dll in there.

Can anybody help me here? What am I doing wrong?

And/or - Does anybody have a better suggestion on how to display d/b driven Event data on a RADCalendar for ASP.Net Ajax control?

Any assistance would be greatly appreciated for this rookie programmer.

Thanks

Jeff O'Connell
jboconne@iupui.edu

Here is the C# code behind page I'm using for the RadCalendar:

using System;  
using System.Data;  
using System.Data.SqlClient;  
using System.Data.Odbc;  
using System.Configuration;  
using System.Collections;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Web.UI.HtmlControls;  
using AnnieECasey.DataBase;  
using AnnieECasey.Lib;  
using Telerik.WebControls;  
using Telerik.Web.UI;  
 
 
 
namespace AnnieECasey  
{  
    /// <summary>  
    /// Summary description for resources_websites.  
    /// </summary>  
    public partial class resources_events : System.Web.UI.Page  
    {  
        public class EventItem  
        {  
            //===========================================        
            // Class used in building the event calendar       
            //===========================================       
            private int _EventID;  
            private System.DateTime _EventDate;  
            private string _EventName;  
            private string _EventDesc;  
            private int _EventCategoryID;  
 
            public EventItem(int EventID, System.DateTime EventDate, string EventName, string EventDesc, int EventCategoryID)  
            {  
 
                _EventID = EventID;  
                _EventDate = EventDate;  
                _EventName = EventName;  
                _EventDesc = EventDesc;  
                _EventCategoryID = EventCategoryID;  
            }  
 
            public int EventID  
            {  
                get 
                {  
                    return _EventID;  
                }  
            }  
            public System.DateTime EventDate  
            {  
                get 
                {  
                    return _EventDate;  
                }  
            }  
            public string EventName  
            {  
                get 
                {  
                    return _EventName;  
                }  
            }  
            public string EventDesc  
            {  
                get 
                {  
                    return _EventDesc;  
                }  
            }  
            public int EventCategoryID  
            {  
                get 
                {  
                    return _EventCategoryID;  
                }  
            }  
 
        }  
 
                        
        public void Page_Load(object sender, System.EventArgs e)  
        {  
            radCalEvents.SelectedDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);  
            if (!IsPostBack)  
            {  
                GetEventItems();                  
            }  
        }  
 
        // setup an array to store all of the events for the month(this is what we will access thru the DayRender event)  
        private ArrayList EventArrayList = new ArrayList();  
 
        public void GetEventItems()  
        {  
            DateTime startDate = ((MonthView)radCalEvents.CalendarView).MonthStartDate;  
            DateTime endDate = ((MonthView)radCalEvents.CalendarView).MonthEndDate;  
            SqlDataSource1.SelectParameters["MonthStartDate"].DefaultValue = startDate.ToString();  
            SqlDataSource1.SelectParameters["MonthEndDate"].DefaultValue = endDate.ToString();  
            SqlDataReader EventReader = ((SqlDataReader)((IEnumerable)SqlDataSource1.Select(DataSourceSelectArguments.Empty)));  
 
            while (EventReader.Read())  
            {  
                EventItem objEvent = new EventItem((int)EventReader["nID"], Convert.ToDateTime(EventReader["dEventDate"]), EventReader["sEventName"].ToString(), EventReader["sEventDescription"].ToString(), (int)EventReader["nEventCategoryID"]);  
                EventArrayList.Add(objEvent);  
            }  
            EventReader.Close();  
            EventReader = null;     
                                   
        }  
 
          
        protected void radCalEvents_DayRender(object sender, Telerik.WebControls.Base.Calendar.Events.DayRenderEventArgs e)  
        {  
 
            DateTime currentDate = ((Telerik.WebControls.Base.Calendar.Events.DayRenderEventArgs)e).Day.Date;  
            Table table = new Table();  
            e.Cell.Width = 95;  
            table.Width = e.Cell.Width;  
            table.Height = e.Cell.Height;  
            table.CellPadding = 0;  
            table.CellSpacing = 0;  
            // Build the row for the day number      
            TableRow dateRow = new TableRow();  
            TableCell dateCell = new TableCell();  
            dateCell.Width = e.Cell.Width;  
            dateCell.CssClass = "DayNumber";  
 
            dateCell.Text = e.Day.Date.Day.ToString();  
            dateRow.Cells.Add(dateCell);  
            table.Rows.Add(dateRow);  
 
            // Look in the arraylist for any events on this day     
            foreach (EventItem objEvent in EventArrayList)  
            {  
 
                if (objEvent.EventDate == currentDate)  
                {  
 
                    // Add a row for the event     
                    TableRow itemRow = new TableRow();  
                    TableCell itemCell = new TableCell();  
 
                    itemCell.CssClass = "EventCell";  
                    itemCell.Width = e.Cell.Width;  
 
                    // Set up the hyperlink for the event     
                    string itemText = objEvent.EventName;  
                    HyperLink itemLink = new HyperLink();  
 
                    //link to a specific page for details of the event with the eventID as the parameter    
                    itemLink.NavigateUrl = "resources_eventDetails.aspx?eventid=" + objEvent.EventID;  
                    itemLink.Text = itemText;  
                    itemLink.CssClass = "EventLink";  
                    itemLink.ToolTip = objEvent.EventDesc;  
                    itemCell.Controls.Add(itemLink);  
                    itemRow.Cells.Add(itemCell);  
                    table.Rows.Add(itemRow);  
                      
                }  
                   
            }  
        }  
 
        protected void radCalEvents_DefaultViewChanged(object sender, Telerik.WebControls.Base.Calendar.Events.DefaultViewChangedEventArgs e)  
        {  
 
            // Select events for the month when the month changes     
            GetEventItems();  
 
        }     
 

and then here is the partial code for the ASPX page:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"   
                     ConnectionString="<%$ ConnectionStrings:aec_devConnectionString %>"   
                     DataSourceMode="DataReader" SelectCommand="SELECT * FROM [Event] WHERE (([dEventDate] >= @MonthStartDate) AND ([dEventDate] <= @MonthEndDate)) ORDER BY [dEventDate]">     
                        <SelectParameters>    
                            <asp:Parameter Name="MonthStartDate" Type="DateTime" />    
                            <asp:Parameter Name="MonthEndDate" Type="DateTime" />    
                        </SelectParameters>    
                    </asp:SqlDataSource>              
                    <br /> 
                    <telerik:RadScriptManager ID="RadScriptManager1" runat="server">  
                    </telerik:RadScriptManager> 
                    <br /> 
                    <telerik:radajaxmanager id="RadAjaxManager1" runat="server">  
                        <AjaxSettings> 
                            <telerik:AjaxSetting AjaxControlID="radCalEvents">    
                                <UpdatedControls> 
                                    <telerik:AjaxUpdatedControl ControlID="radCalEvents"></telerik:AjaxUpdatedControl> 
                                </UpdatedControls> 
                            </telerik:AjaxSetting> 
                        </AjaxSettings> 
                    </telerik:radajaxmanager> 
                    <telerik:radcalendar id="radCalEvents" runat="server"  OnDayRender="radCalEvents_DayRender" OnDefaultViewChanged="radCalEvents_DefaultViewChanged" font-names="Arial,Verdana,Tahoma" 
                        height="500px" width="700px" ShowRowHeaders="False" Skin="WebBlue" CellAlign="Left" CellVAlign="Top" DayNameFormat="Full" ShowOtherMonthsDays="False" SingleViewRows="7" UseColumnHeadersAsSelectors="False" UseRowHeadersAsSelectors="False" EnableMultiSelect="False" NavigationCellPadding="0" PresentationType="Preview" BorderColor="SteelBlue" BorderStyle="Solid" BorderWidth="1px">  
                        <SelectedDayStyle BackColor="LightSteelBlue" ForeColor="Transparent" /> 
                        <DayStyle BorderStyle="Solid" BorderWidth="1px" Font-Names="Arial" Font-Size="Medium" 
                            Height="100px" Width="100px" Wrap="True" BorderColor="SteelBlue" HorizontalAlign="Left" VerticalAlign="Top" Font-Underline="True" /> 
                        <OtherMonthDayStyle ForeColor="Silver" Wrap="False" BorderColor="SteelBlue" BorderStyle="Solid" BorderWidth="1px" /> 
                        <TitleStyle BackColor="White" BorderColor="Transparent" Font-Names="Verdana" Font-Size="12pt" /> 
                        <WeekendDayStyle BorderStyle="Solid" BorderWidth="1px" Font-Names="Arial" Font-Size="Medium" 
                            Height="100px" VerticalAlign="Top" Width="100px" BorderColor="SteelBlue" HorizontalAlign="Left" Wrap="True" /> 
                        <CalendarTableStyle BorderColor="Transparent" HorizontalAlign="Left"    
                            VerticalAlign="Top" />                                                                                    
                    </telerik:radcalendar> 


 

1 Answer, 1 is accepted

Sort by
0
Mishel
Top achievements
Rank 1
answered on 03 Oct 2008, 08:47 AM
Hi Jeff,

What version of RadCalendar are you using?

From the code you paste I see that you are using RadCalendar for ASP.NET AJAX. If you need to use this version you do not need any other dll files in your bin folder except Telerik.Web.UI.dll.
However you this row:
Telerik.WebControls.Base.Calendar.Events.DayRenderEventArgs ,
should look like:
Telerik.Web.UI.Calendar.DayRenderEventArgs

I hope this helps.

Mishel
Tags
Calendar
Asked by
Jeff
Top achievements
Rank 1
Answers by
Mishel
Top achievements
Rank 1
Share this question
or