using System;
using System.Collections.Generic;
using System.Data;
using DayPilot.Utils;
using DayPilot.Web.Ui.Events;
using DayPilot.Web.Ui.Events.Bubble;
using DayPilot.Web.Ui.Events.Month;
public partial class Month_CellMarginBottom : System.Web.UI.Page
{
private DataTable table;
protected void Page_Load(object sender, EventArgs e)
{
initData();
if (!IsPostBack)
{
DayPilotMonth1.DataSource = getData(DayPilotMonth1.VisibleStart, DayPilotMonth1.VisibleEnd, (string)DayPilotMonth1.ClientState["filter"]);
DayPilotNavigator1.DataSource = getData(DayPilotNavigator1.VisibleStart, DayPilotNavigator1.VisibleEnd, null);
DataBind();
DayPilotMonth1.UpdateWithMessage("Welcome!");
}
}
protected void DayPilotCalendar1_EventMenuClick(object sender, EventMenuClickEventArgs e)
{
if (e.Command == "Delete")
{
#region Simulation of database update
DataRow dr = table.Rows.Find(e.Value);
if (dr != null)
{
table.Rows.Remove(dr);
table.AcceptChanges();
}
#endregion
DayPilotMonth1.DataSource = getData(DayPilotMonth1.VisibleStart, DayPilotMonth1.VisibleEnd, (string)DayPilotMonth1.ClientState["filter"]);
DayPilotMonth1.DataBind();
DayPilotMonth1.Update();
}
}
protected void DayPilotMonth1_EventMove(object sender, EventMoveEventArgs e)
{
#region Simulation of database update
DataRow dr = table.Rows.Find(e.Value);
if (dr != null)
{
dr["start"] = e.NewStart;
dr["end"] = e.NewEnd;
//dr["column"] = e.NewResource;
table.AcceptChanges();
}
else // moved from outside
{
dr = table.NewRow();
dr["start"] = e.NewStart;
dr["end"] = e.NewEnd;
dr["id"] = e.Value;
dr["name"] = e.Text;
//dr["column"] = e.NewResource;
table.Rows.Add(dr);
table.AcceptChanges();
}
#endregion
DayPilotMonth1.DataSource = getData(DayPilotMonth1.VisibleStart, DayPilotMonth1.VisibleEnd, (string)DayPilotMonth1.ClientState["filter"]);
DayPilotMonth1.DataBind();
DayPilotMonth1.UpdateWithMessage("Event moved.");
}
protected void DayPilotMonth1_EventResize(object sender, EventResizeEventArgs e)
{
#region Simulation of database update
DataRow dr = table.Rows.Find(e.Value);
if (dr != null)
{
dr["start"] = e.NewStart;
dr["end"] = e.NewEnd;
table.AcceptChanges();
}
#endregion
DayPilotMonth1.DataSource = getData(DayPilotMonth1.VisibleStart, DayPilotMonth1.VisibleEnd, (string)DayPilotMonth1.ClientState["filter"]);
DayPilotMonth1.DataBind();
DayPilotMonth1.UpdateWithMessage("Event resized");
}
protected void DayPilotMonth1_TimeRangeSelected(object sender, TimeRangeSelectedEventArgs e)
{
#region Simulation of database update
DataRow dr = table.NewRow();
dr["start"] = e.Start;
dr["end"] = e.End;
dr["id"] = Guid.NewGuid().ToString();
dr["name"] = "New event";
table.Rows.Add(dr);
table.AcceptChanges();
#endregion
DayPilotMonth1.DataSource = getData(DayPilotMonth1.VisibleStart, DayPilotMonth1.VisibleEnd, (string)DayPilotMonth1.ClientState["filter"]);
DayPilotMonth1.DataBind();
DayPilotMonth1.Update();
}
protected void DayPilotMonth1_BeforeEventRender(object sender, DayPilot.Web.Ui.Events.Month.BeforeEventRenderEventArgs e)
{
if (e.Id == "12")
{
e.ContextMenuClientName = "menu2";
e.BubbleHtml = "test";
}
e.CssClass = "test";
}
protected void DayPilotBubble1_RenderContent(object sender, RenderEventArgs e)
{
if (e is RenderEventBubbleEventArgs)
{
RenderEventBubbleEventArgs re = e as RenderEventBubbleEventArgs;
re.InnerHTML = "Event details
Here is the right place to show details about the event with ID: " + re.Value + ". This text is loaded dynamically from the server.";
}
}
protected void DayPilotNavigator1_VisibleRangeChanged(object sender, EventArgs e)
{
DayPilotNavigator1.DataSource = getData(DayPilotNavigator1.VisibleStart, DayPilotNavigator1.VisibleEnd, (string)DayPilotMonth1.ClientState["filter"]);
DayPilotNavigator1.DataBind();
}
protected void DayPilotMonth1_Command(object sender, CommandEventArgs e)
{
switch (e.Command)
{
case "navigate":
DayPilotMonth1.StartDate = (DateTime)e.Data["start"];
DayPilotMonth1.DataSource = getData(DayPilotMonth1.VisibleStart, DayPilotMonth1.VisibleEnd, (string)DayPilotMonth1.ClientState["filter"]);
DayPilotMonth1.DataBind();
DayPilotMonth1.Update();
break;
case "filter":
DayPilotMonth1.DataSource = getData(DayPilotMonth1.VisibleStart, DayPilotMonth1.VisibleEnd, (string)DayPilotMonth1.ClientState["filter"]);
DayPilotMonth1.DataBind();
DayPilotMonth1.Update();
break;
case "refresh":
DayPilotMonth1.DataSource = getData(DayPilotMonth1.VisibleStart, DayPilotMonth1.VisibleEnd, (string)DayPilotMonth1.ClientState["filter"]);
DayPilotMonth1.DataBind();
DayPilotMonth1.UpdateWithMessage("Refreshed.");
break;
}
}
///
/// This method should normally load the data from the database.
/// We will load our copy from a Session, just simulating a database.
///
///
///
///
///
private DataTable getData(DateTime start, DateTime end, string filter)
{
String select;
if (String.IsNullOrEmpty(filter))
{
select = String.Format("NOT (([end] <= '{0:s}') OR ([start] >= '{1:s}'))", start, end, filter);
}
else
{
select = String.Format("NOT (([end] <= '{0:s}') OR ([start] >= '{1:s}')) and [name] like '%{2}%'", start, end, filter);
// throw new Exception(select);
}
DataRow[] rows = table.Select(select);
DataTable filtered = table.Clone();
foreach (DataRow r in rows)
{
filtered.ImportRow(r);
}
return filtered;
}
///
/// Make sure a copy of the data is in the Session so users can try changes on their own copy.
///
private void initData()
{
if (Session["MonthView"] == null)
{
Session["MonthView"] = DataGeneratorMonth.GetData();
}
table = (DataTable)Session["MonthView"];
}
protected void DayPilotMonth1_BeforeCellRender(object sender, DayPilot.Web.Ui.Events.Month.BeforeCellRenderEventArgs e)
{
e.CssClass = Week.WeekNrISO8601(e.Start)%2 == 0 ? "even" : "odd";
}
protected void DayPilotMonth1_EventClick(object sender, EventClickEventArgs e)
{
}
protected void DayPilotMonth1_BeforeHeaderRender(object sender, BeforeHeaderRenderEventArgs e)
{
}
}