<%@ Control Language="C#" Inherits="ASPNetPortal.MobilePortalModuleControl" %> <%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile" %> <%@ Register TagPrefix="portal" TagName="Title" Src="~/MobileModuleTitle.ascx" %> <%@ Register TagPrefix="portal" Namespace="ASPNetPortal.MobileControls" Assembly="Portal" %> <%@ Import Namespace="System.Data" %> <%-- The Events Mobile User Control renders event modules in the portal. The control consists of two pieces: a summary panel that is rendered when portal view shows a summarized view of all modules, and a multi-part panel that renders the module details. --%> <script runat="server"> DataSet ds = null; int currentIndex = 0; //********************************************************************* // // Page_Load Event Handler // // The Page_Load event handler on this User Control is used to // obtain a DataSet of announcement information from the Events // table, and then databind the results to the module contents. // //******************************************************* void Page_Load(Object sender, EventArgs e) { // Obtain announcement information from Events table ASPNetPortal.EventsDB ev = new ASPNetPortal.EventsDB(); ds = ev.GetEvents(ModuleId); // DataBind User Control DataBind(); } //********************************************************************* // // SummaryView_OnItemCommand Event Handler // // The SummaryView_OnItemCommand event handler is called when the user // clicks on a "More" link in the summary view. It calls the // ShowEventDetails utility method to show details of the event. // //********************************************************************* void SummaryView_OnItemCommand(Object sender, RepeaterCommandEventArgs e) { ShowEventDetails(e.Item.ItemIndex); } //********************************************************************* // // EventsList_OnItemCommand Event Handler // // The EventsList_OnItemCommand event handler is called when the user // clicks on an item in the list of events. It calls the // ShowEventDetails utility method to show details of the event. // //********************************************************************* void EventsList_OnItemCommand(Object sender, ListCommandEventArgs e) { ShowEventDetails(e.ListItem.Index); } //********************************************************************* // // DetailsView_OnClick Event Handler // // The DetailsView_OnClick event handler is called when the user // clicks in the details view to return to the summary view. // //********************************************************************* void DetailsView_OnClick(Object sender, EventArgs e) { // Make the parent tab show module summaries again. Tab.SummaryView = true; } //********************************************************************* // // ShowEventDetails Method // // The ShowEventDetails method sets the active pane of // the module to the details view, and shows the details of the // given item. // //********************************************************************* void ShowEventDetails(int itemIndex) { currentIndex = itemIndex; // Switch the visible pane of the multi-panel view to show // event details. MainView.ActivePane = EventDetails; // rebind the details panel EventDetails.DataBind(); // Make the parent tab switch to details mode, showing this module. Tab.ShowDetails(this); } //********************************************************************* // // FormatChildField Method // // The FormatChildField method returns the selected field as a string, // if the row is not empty. If empty, it returns String.Empty. // //********************************************************************* string FormatChildField (string fieldName) { if (ds.Tables[0].Rows.Count > 0) return ds.Tables[0].Rows[currentIndex][fieldName].ToString(); else return String.Empty; } </script> <mobile:Panel runat="server" id="summary"> <DeviceSpecific> <Choice Filter="isJScript"> <ContentTemplate> <portal:Title runat="server" /> <font face="Verdana" size="-2"> <asp:Repeater runat="server" DataSource="<%# ds %>" OnItemCommand="SummaryView_OnItemCommand"> <ItemTemplate> <b><%# DataBinder.Eval(Container.DataItem, "Title") %></b><br> <i><%# DataBinder.Eval(Container.DataItem, "WhereWhen") %></i> <asp:LinkButton runat="server" Text="more" /><br><br> </ItemTemplate> </asp:Repeater> </font><br> </ContentTemplate> </Choice> </DeviceSpecific> </mobile:Panel> <portal:MultiPanel runat="server" id="MainView" Font-Name="Verdana" Font-Size="Small"> <portal:ChildPanel id="EventsList" runat="server"> <portal:Title runat="server" /> <mobile:List runat="server" OnItemCommand="EventsList_OnItemCommand" DataTextField="Title" DataSource="<%# ds %>" /> </portal:ChildPanel> <portal:ChildPanel id="EventDetails" runat="server"> <portal:Title runat="server" Text='<%# FormatChildField("Title") %>' /> <mobile:Label runat="server" Font-Italic="true" Text='<%# FormatChildField("WhereWhen") %>' /> <br> <mobile:TextView runat="server" Text='<%# FormatChildField("Description") %>' /> <portal:LinkCommand runat="server" OnClick="DetailsView_OnClick" Text="back" /> </portal:ChildPanel> </portal:MultiPanel>