using System; using System.Web; using System.Security.Permissions; using System.Web.UI; using System.Web.UI.WebControls; using System.ComponentModel; using System.Collections; namespace Yavsc.WebControls { /// /// Result pages. /// [ AspNetHostingPermission (SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal), AspNetHostingPermission (SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal), ParseChildren (true), ToolboxData ("<{0}:ResultPages runat=\"server\"> ") ] public class ResultPages: WebControl { /// /// Initializes a new instance of the class. /// public ResultPages () { } /// /// Gets or sets the results per page. /// /// The results per page. public int PageSize { get { return (int)( ViewState["PageSize"]==null?10:ViewState["PageSize"]); } set { ViewState["PageSize"]=value; } } /// /// Gets or sets the result count. /// /// The result count. public int ResultCount { get { return (int)( ViewState["ResultCount"]==null?0:ViewState["ResultCount"]); } set { ViewState["ResultCount"] = value; } } /// /// Gets or sets the text. /// /// The text. [DefaultValue("Pages:")] [Localizable(true)] public string Text { get { string s = (string)ViewState["Text"]; return (s == null) ? "Pages:" : s; } set { ViewState["Text"] = value; } } /// /// Gets or sets the action. /// /// The action. [Bindable (true)] [DefaultValue("?pageIndex=")] public string Action { get { string s = (string)ViewState["Action"]; return (s == null) ? "?pageIndex=" : s; } set { ViewState["Action"] = value; } } /// /// Gets or sets the Single page message. /// /// The none. [Bindable (true)] [DefaultValue("1")] public string SinglePage { get { return (string) ViewState["SinglePage"]; } set { ViewState["SinglePage"] = value; } } /// /// Gets or sets the none. /// /// The none. [Bindable (true)] [DefaultValue("none")] public string None { get { return (string) ViewState["None"]; } set { ViewState["None"] = value; } } /// /// Gets or sets the none. /// /// The none. [Bindable (true)] [DefaultValue("Pages: ")] public string PagesLabel { get { return (string) ViewState["PagesLabel"]; } set { ViewState["PagesLabel"] = value; } } /// /// Gets or sets the current page. /// /// The current page. [Bindable (true)] [DefaultValue(0)] public int PageIndex { get { int i = (int)(ViewState["PageIndex"]==null?0:ViewState["PageIndex"]); return i; } set { ViewState["PageIndex"] = value; } } /// /// Renders the contents as the list of links to pages of results. /// /// Writer. protected override void RenderContents (HtmlTextWriter writer) { if (ResultCount > 0 && ResultCount > PageSize ) { writer.WriteEncodedText (Text); int pageCount = ((ResultCount-1) / PageSize) + 1; if ( pageCount > 1 ) { writer.Write (PagesLabel); for (int pi = (PageIndex < 5) ? 0 : PageIndex - 5; pi < pageCount && pi < PageIndex + 5; pi++) { if (PageIndex == pi) writer.RenderBeginTag ("b"); else { writer.AddAttribute (HtmlTextWriterAttribute.Href, string.Format (Action, pi)); writer.RenderBeginTag ("a"); } writer.Write (pi + 1); writer.RenderEndTag (); writer.Write (" "); } } else { writer.Write (SinglePage); } } if (ResultCount == 0) { writer.Write (None); } } } }