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) { } }