Calendar demo
Source of:
ServerEvents.aspx
<%@ Import Namespace="System.Collections.Generic" %>
<script runat="server">
List<string> infos = new List<string>();
void add(string info, params object[] pars) {
infos.Add(string.Format(info, pars));
}
protected void Sch_BodyClick(object sender, ComponentGo.Web.MouseRegionEventArgs e) {
add("Body action {0} {1} {2}", e.Action, Sch.ClickedDateTime, Sch.ClickedRow);
}
protected void Sch_ButtonPressed(object sender, ButtonPressedEventArgs e) {
add("ButtonPressed {0}", e.Button);
}
protected void Sch_CaptionClick(object sender, ComponentGo.Web.MouseRegionEventArgs e) {
add("Caption action {0}", e.Action);
}
protected void Sch_ColumnWidthChanged(object sender, ResourceColumnWidthChangedEventArgs e) {
add("ColumnWidthChanged {0} {1}", e.Column, e.NewWidth);
}
protected void Sch_DefaultItemClick(object sender, ComponentGo.Web.MouseRegionEventArgs e) {
add("DefaultItem action {0} {1}", e.Action, Sch.ClickedItem);
}
protected void Sch_FirstDateTimeChanged(object sender, EventArgs e) {
add("FirstDateTimeChanged {0}", Sch.FirstDateTime);
}
protected void Sch_ItemDragged(object sender, SchedulerItemDraggedEventArgs e) {
add("ItemDragged {1} {0}", e.Item, e.Mode);
}
protected void Sch_ItemTextEdited(object sender, SchedulerItemTextEditedEventArgs e) {
add("ItemTextChanged {0} {1}", e.Item, e.NewText);
}
protected void Sch_NumberOfColsChanged(object sender, EventArgs e) {
add("NumberOfColsChanged {0}", Sch.NumberOfCols);
}
protected void Sch_Refreshing(object sender, EventArgs e) {
add("Refreshing");
}
protected void Sch_ResourceHeaderClick(object sender, ComponentGo.Web.MouseRegionEventArgs e) {
add("RefreshHeader action {0} {1}", e.Action, Sch.ClickedColumn);
}
protected void Sch_ResourceListClick(object sender, ComponentGo.Web.MouseRegionEventArgs e) {
add("ResourceList action {0} {1} {2}", e.Action, Sch.ClickedColumn, Sch.ClickedRow);
}
protected void Sch_ResourcesWidthChanged(object sender, EventArgs e) {
add("ResourcesWidthChanged {0}", Sch.ResourcesWidth);
}
protected void Sch_RowExpandedChanged(object sender, ResourceRowExpandedChangedEventArgs e) {
add("RowExpandedChanged {0} {1}", e.Row, e.NewExpanded);
}
protected void Sch_RowTextEdited(object sender, ResourceRowTextEditedEventArgs e) {
add("RowTextEdited {0} {1} {2}", e.Row, e.Column, e.NewText);
}
protected void Sch_TimeLineClick(object sender, ComponentGo.Web.MouseRegionEventArgs e) {
add("TimeLine action {0} {1}", e.Action, Sch.ClickedDateTime);
}
protected void Sch_ItemChanged(object sender, SchedulerItemChangedEventArgs e) {
add("ItemChanged {1} {0}", e.Item, e.Reason);
}
protected void Sch_RowChanged(object sender, ResourceRowChangedEventArgs e) {
add("RowChanged {1} {0}", e.Row, e.Reason);
}
protected void Sch_CallbackScript(object sender, ComponentGo.Web.CallbackScriptEventArgs e) {
StringBuilder sb = new StringBuilder();
foreach (string s in infos) {
sb.Append(HttpUtility.HtmlEncode(s));
sb.Append("<br><br>");
}
e.ClientScript.AppendFormat("document.getElementById('{0}').innerHTML = '{1}';",
InfoLabel.ClientID, sb);
}
</script>
<table width="100%">
<tr>
<td valign="top" width="1">
<gos:Scheduler ID="Sch" runat="server" Height="293px" Width="601px" BackColor="Lavender" Caption="Previews server events" Font-Names="Verdana" Font-Size="Small" FreeDateColor="Black" FreeTimeColor="DarkGray" HorizontalHeaderLine="1px Black Solid" HorizontalLine="1px DimGray Solid" VerticalLine0="2px DimGray Solid" VerticalLine1="1px DimGray Solid" VerticalResourceLine="1px DimGray Solid" SplitterColor="64, 64, 64" VerticalLine2="1px DarkGray Dotted" OnBodyClick="Sch_BodyClick" OnButtonPressed="Sch_ButtonPressed" OnCaptionClick="Sch_CaptionClick" OnColumnWidthChanged="Sch_ColumnWidthChanged" OnDefaultItemClick="Sch_DefaultItemClick" OnFirstDateTimeChanged="Sch_FirstDateTimeChanged" OnItemDragged="Sch_ItemDragged" OnItemTextEdited="Sch_ItemTextEdited" OnNumberOfColsChanged="Sch_NumberOfColsChanged" OnRefreshing="Sch_Refreshing" OnResourceHeaderClick="Sch_ResourceHeaderClick" OnResourceListClick="Sch_ResourceListClick" OnResourcesWidthChanged="Sch_ResourcesWidthChanged" OnRowExpandedChanged="Sch_RowExpandedChanged" OnRowTextEdited="Sch_RowTextEdited" OnTimeLineClick="Sch_TimeLineClick" OnItemChanged="Sch_ItemChanged" OnRowChanged="Sch_RowChanged" OnCallbackScript="Sch_CallbackScript" DragItemMode="Children" ResizeEndItemMode="MoveNeighbours" LinkLine="1px Black Solid" BehaviorOptions="AllowOverlapItems, Default">
<Columns>
<gos:ResourceColumn Text="Caption">
</gos:ResourceColumn>
</Columns>
<BodyStyle BackColor="LightGray">
<EventDblClick Mode="Callback" />
</BodyStyle>
<TimeLineStyle Font-Size="X-Small" BackColor="DarkGray" Font-Bold="True" ForeColor="WhiteSmoke">
<EventDblClick Mode="Callback" />
</TimeLineStyle>
<CaptionStyle HorizontalAlign="Left" BackColor="Silver" Font-Bold="True" ForeColor="WhiteSmoke" BorderColor="WhiteSmoke" BorderStyle="Solid" BorderWidth="1px">
<EventDblClick Mode="Callback" />
</CaptionStyle>
<ResourceListStyle BackColor="Silver" ForeColor="White">
<EventDblClick Mode="Callback" />
</ResourceListStyle>
<ResourceHeaderStyle BackColor="Gray" ForeColor="LightGray" HorizontalAlign="Center">
<EventDblClick Mode="Callback" />
</ResourceHeaderStyle>
<DefaultItemStyle BackColor="Gray" BorderColor="WhiteSmoke" BorderStyle="Solid"
BorderWidth="1px" ForeColor="White">
<EventDblClick Mode="Callback" />
</DefaultItemStyle>
<NextButton ButtonType="Link">
<Style Font-Underline="False" ForeColor="WhiteSmoke" />
</NextButton>
<PreviousButton ButtonType="Link">
<Style Font-Underline="False" ForeColor="WhiteSmoke" />
</PreviousButton>
</gos:Scheduler>
</td>
<td valign="top">
When various operations are performed on a scheduler control they
generate events sent to a server using callback or postback. <br />
Perform various operations on a scheduler or doubleclick any
element of a control:<br />
<br />
<asp:Label ID="InfoLabel" runat="server" ForeColor="Purple" Font-Size="X-Small">Server events</asp:Label></td>
</tr>
</table>
<span style="font-size: 8pt">An example demonstrates a wide range of server events
allowing to program a scheduler using server code.
Calling server events is fully configurable and setting a way
particular events will be called is possible using <em>EventXxxx</em> properties.
Most important setting is a <em>UseCallback</em> property.
Its default value is true meaning callback is used.
Such calls are made in a background and do not require reading a
whole HTML page by a browser.
Therefore a screen does not flicker, values entered in fields are not
lost and cursor position does not change.
Such calls are also much faster as amount of data exchanged between a
server and a client is much smaller.
However, if you want to use postback, it is also possible.
Then a <em>UseCallback</em> property should be set to <em>false</em>. <br />
For example a <em>EventItemTextEdited.UseCallback</em> property determines
how an event called when text is accepted works.
A <em>EventItemDragged.UseCallback</em> property determines how to handle an
event called after a <em>SchedulerItem</em> object is moved.<br />
Apart from events informing particular tasks are performed on a control,
you can also implement server events handling mouse operation on particular areas.
<em>DefaultItemStyle</em>, <em>CaptionStyle</em>, <em>TimeLineStyle</em>
properties allow to configure a way different areas of a control look like.
There is also a possibility to define postback or callback server mouse event.
A <em>XxxStyle</em> property contains <em>EventXxx</em> properties, allowing to
handle mouse events such as <em>Click</em>, <em>DblClick</em>, <em>MouseDown</em>,
<em>MouseUp</em>, <em>MouseMove</em>, <em>MouseOver</em>, <em>ContextMenu</em>.
Ex. a <em>Sch.CaptionStyle.EventClick</em> event is called when a mouse is
clicked on a title of a scheduler while <em>Sch.BodyStyle.EventContextMenu</em>
event before a context menu is opened on a main grid of a scheduler.
Setting a <em>Sch.BodyStyle.EventClick.Mode</em> property to <em>Callback</em>
causes calling a server event in a <strong>callback</strong> mode.
Setting it to <em>Postback</em> will call an event in <strong>postback</strong> mode.
These mechanisms allow to fully program a control behavior on a server.<br />
An example on this page shows which server events are called.
Code adding information about events called to infos list was added to all server events.
Some parameters these events are called with are also added to this array.
All events are called in <strong>callback</strong> mode.
Then before server events are handled, the last <em>GoControl.CallbackScript</em>
event is called. It can be used to prepare <strong>JavaScript</strong> code on a
server and run it in a browser after an event is handled on a server.
A code is created initializing a <strong>string</strong> that will be assigned to
a <em>InfoLabel</em> object created using log server events.
A <strong>DHTML</strong> <em>innerHTML</em> property is used for this purpose and
contents of a log will be
displayed in a browser.</span>