Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / xsp / System / Web / Extensions / ui / webcontrols / NumericPagerField.cs / 1 / NumericPagerField.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Drawing.Design; using System.Globalization; using System.Web; using System.Web.Resources; using System.Web.UI; namespace System.Web.UI.WebControls { [AspNetHostingPermission(System.Security.Permissions.SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(System.Security.Permissions.SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class NumericPagerField : DataPagerField { private int _startRowIndex; private int _maximumRows; private int _totalRowCount; public NumericPagerField() { } [ DefaultValue(5), Category("Appearance"), ResourceDescription("NumericPagerField_ButtonCount"), ] public int ButtonCount { get { object o = ViewState["ButtonCount"]; if (o != null) { return (int)o; } return 5; } set { if (value < 1) { throw new ArgumentOutOfRangeException("value"); } if (value != ButtonCount) { ViewState["ButtonCount"] = value; OnFieldChanged(); } } } ////// [ Category("Appearance"), DefaultValue(ButtonType.Link), ResourceDescription("NumericPagerField_ButtonType"), ] public ButtonType ButtonType { get { object o = ViewState["ButtonType"]; if (o != null) return(ButtonType)o; return ButtonType.Link; } set { if (value < ButtonType.Button || value > ButtonType.Link) { throw new ArgumentOutOfRangeException("value"); } if (value != ButtonType) { ViewState["ButtonType"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), ResourceDescription("NumericPagerField_CurrentPageLabelCssClass"), CssClassPropertyAttribute ] public string CurrentPageLabelCssClass { get { object o = ViewState["CurrentPageLabelCssClass"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != CurrentPageLabelCssClass) { ViewState["CurrentPageLabelCssClass"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), Editor(typeof(System.Web.UI.Design.ImageUrlEditor), typeof(UITypeEditor)), ResourceDescription("NumericPagerField_NextPageImageUrl"), SuppressMessage("Microsoft.Design", "CA1056:UriPropertiesShouldNotBeStrings", Justification = "Required by ASP.NET parser."), UrlProperty() ] public string NextPageImageUrl { get { object o = ViewState["NextPageImageUrl"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != NextPageImageUrl) { ViewState["NextPageImageUrl"] = value; OnFieldChanged(); } } } [ Category("Appearance"), Localizable(true), ResourceDefaultValue("NumericPagerField_DefaultNextPageText"), ResourceDescription("NumericPagerField_NextPageText") ] public string NextPageText { get { object o = ViewState["NextPageText"]; if (o != null) { return (string)o; } return AtlasWeb.NumericPagerField_DefaultNextPageText; } set { if (value != NextPageText) { ViewState["NextPageText"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), ResourceDescription("NumericPagerField_NextPreviousButtonCssClass"), CssClassPropertyAttribute ] public string NextPreviousButtonCssClass { get { object o = ViewState["NextPreviousButtonCssClass"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != NextPreviousButtonCssClass) { ViewState["NextPreviousButtonCssClass"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), ResourceDescription("NumericPagerField_NumericButtonCssClass"), CssClassPropertyAttribute ] public string NumericButtonCssClass { get { object o = ViewState["NumericButtonCssClass"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != NumericButtonCssClass) { ViewState["NumericButtonCssClass"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), Editor(typeof(System.Web.UI.Design.ImageUrlEditor), typeof(UITypeEditor)), ResourceDescription("NumericPagerField_PreviousPageImageUrl"), SuppressMessage("Microsoft.Design", "CA1056:UriPropertiesShouldNotBeStrings", Justification = "Required by ASP.NET parser."), UrlProperty() ] public string PreviousPageImageUrl { get { object o = ViewState["PreviousPageImageUrl"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != PreviousPageImageUrl) { ViewState["PreviousPageImageUrl"] = value; OnFieldChanged(); } } } [ Category("Appearance"), Localizable(true), ResourceDefaultValue("NumericPagerField_DefaultPreviousPageText"), ResourceDescription("NumericPagerField_PreviousPageText") ] public string PreviousPageText { get { object o = ViewState["PreviousPageText"]; if (o != null) { return (string)o; } return AtlasWeb.NumericPagerField_DefaultPreviousPageText; } set { if (value != PreviousPageText) { ViewState["PreviousPageText"] = value; OnFieldChanged(); } } } [ DefaultValue(true), Category("Behavior"), ResourceDescription("NumericPagerField_RenderNonBreakingSpacesBetweenControls"), ] public bool RenderNonBreakingSpacesBetweenControls { get { object o = ViewState["RenderNonBreakingSpacesBetweenControls"]; if (o != null) { return (bool)o; } return true; } set { if (value != RenderNonBreakingSpacesBetweenControls) { ViewState["RenderNonBreakingSpacesBetweenControls"] = value; OnFieldChanged(); } } } [ SuppressMessage("Microsoft.Usage", "CA2204:LiteralsShouldBeSpelledCorrectly", MessageId = "nbsp", Justification = "Literal is HTML escape sequence."), SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.Web.UI.LiteralControl.#ctor(System.String)", Justification = "Literal is HTML escape sequence.") ] private void AddNonBreakingSpace(DataPagerFieldItem container) { if (RenderNonBreakingSpacesBetweenControls) { container.Controls.Add(new LiteralControl(" ")); } } protected override void CopyProperties(DataPagerField newField) { ((NumericPagerField)newField).ButtonCount = ButtonCount; ((NumericPagerField)newField).ButtonType = ButtonType; ((NumericPagerField)newField).CurrentPageLabelCssClass = CurrentPageLabelCssClass; ((NumericPagerField)newField).NextPageImageUrl = NextPageImageUrl; ((NumericPagerField)newField).NextPageText = NextPageText; ((NumericPagerField)newField).NextPreviousButtonCssClass = NextPreviousButtonCssClass; ((NumericPagerField)newField).NumericButtonCssClass = NumericButtonCssClass; ((NumericPagerField)newField).PreviousPageImageUrl = PreviousPageImageUrl; ((NumericPagerField)newField).PreviousPageText = PreviousPageText; base.CopyProperties(newField); } protected override DataPagerField CreateField() { return new NumericPagerField(); } [SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", MessageId = "0#")] public override void HandleEvent(CommandEventArgs e) { if (String.IsNullOrEmpty(DataPager.QueryStringField)) { int newStartRowIndex = -1; int currentPageIndex = _startRowIndex / DataPager.PageSize; int firstButtonIndex = (_startRowIndex / (ButtonCount * DataPager.PageSize)) * ButtonCount; int lastButtonIndex = firstButtonIndex + ButtonCount - 1; int lastRecordIndex = ((lastButtonIndex + 1) * DataPager.PageSize) - 1; if (String.Equals(e.CommandName, DataControlCommands.PreviousPageCommandArgument)) { newStartRowIndex = (firstButtonIndex - 1) * DataPager.PageSize; if (newStartRowIndex < 0) { newStartRowIndex = 0; } } else if (String.Equals(e.CommandName, DataControlCommands.NextPageCommandArgument)) { newStartRowIndex = lastRecordIndex + 1; if (newStartRowIndex > _totalRowCount) { newStartRowIndex = _totalRowCount - DataPager.PageSize; } } else { int pageIndex = Convert.ToInt32(e.CommandName, CultureInfo.InvariantCulture); newStartRowIndex = pageIndex * DataPager.PageSize; } if (newStartRowIndex != -1) { DataPager.SetPageProperties(newStartRowIndex, DataPager.PageSize, true); } } } private Control CreateNumericButton(string buttonText, string commandArgument, string commandName) { IButtonControl button; switch (ButtonType) { case ButtonType.Button: button = new Button(); break; case ButtonType.Link: default: button = new LinkButton(); break; } button.Text = buttonText; button.CausesValidation = false; button.CommandName = commandName; button.CommandArgument = commandArgument; WebControl webControl = button as WebControl; if (webControl != null && !String.IsNullOrEmpty(NumericButtonCssClass)) { webControl.CssClass = NumericButtonCssClass; } return button as Control; } private HyperLink CreateNumericLink(int pageIndex) { int pageNumber = pageIndex + 1; HyperLink link = new HyperLink(); link.Text = pageNumber.ToString(CultureInfo.InvariantCulture); link.NavigateUrl = GetQueryStringNavigateUrl(pageNumber); if (!String.IsNullOrEmpty(NumericButtonCssClass)) { link.CssClass = NumericButtonCssClass; } return link; } private Control CreateNextPrevButton(string buttonText, string commandName, string commandArgument, string imageUrl) { IButtonControl button; switch (ButtonType) { case ButtonType.Link: button = new LinkButton(); break; case ButtonType.Button: button = new Button(); break; case ButtonType.Image: default: button = new ImageButton(); ((ImageButton)button).ImageUrl = imageUrl; ((ImageButton)button).AlternateText = HttpUtility.HtmlDecode(buttonText); break; } button.Text = buttonText; button.CausesValidation = false; button.CommandName = commandName; button.CommandArgument = commandArgument; WebControl webControl = button as WebControl; if (webControl != null && !String.IsNullOrEmpty(NextPreviousButtonCssClass)) { webControl.CssClass = NextPreviousButtonCssClass; } return button as Control; } private HyperLink CreateNextPrevLink(string buttonText, int pageIndex, string imageUrl) { int pageNumber = pageIndex + 1; HyperLink link = new HyperLink(); link.Text = buttonText; link.NavigateUrl = GetQueryStringNavigateUrl(pageNumber); link.ImageUrl = imageUrl; if (!String.IsNullOrEmpty(NextPreviousButtonCssClass)) { link.CssClass = NextPreviousButtonCssClass; } return link; } public override void CreateDataPagers(DataPagerFieldItem container, int startRowIndex, int maximumRows, int totalRowCount, int fieldIndex) { _startRowIndex = startRowIndex; _maximumRows = maximumRows; _totalRowCount = totalRowCount; if (String.IsNullOrEmpty(DataPager.QueryStringField)) { CreateDataPagersForCommand(container, fieldIndex); } else { CreateDataPagersForQueryString(container, fieldIndex); } } private void CreateDataPagersForCommand(DataPagerFieldItem container, int fieldIndex) { int currentPageIndex = _startRowIndex / _maximumRows; int firstButtonIndex = (_startRowIndex / (ButtonCount * _maximumRows)) * ButtonCount; int lastButtonIndex = firstButtonIndex + ButtonCount - 1; int lastRecordIndex = ((lastButtonIndex + 1) * _maximumRows) - 1; if (firstButtonIndex != 0) { container.Controls.Add(CreateNextPrevButton(PreviousPageText, DataControlCommands.PreviousPageCommandArgument, fieldIndex.ToString(CultureInfo.InvariantCulture), PreviousPageImageUrl)); AddNonBreakingSpace(container); } for (int i = 0; i < ButtonCount && _totalRowCount > ((i + firstButtonIndex) * _maximumRows); i++) { if (i + firstButtonIndex == currentPageIndex) { Label pageNumber = new Label(); pageNumber.Text = (i + firstButtonIndex + 1).ToString(CultureInfo.InvariantCulture); if (!String.IsNullOrEmpty(CurrentPageLabelCssClass)) { pageNumber.CssClass = CurrentPageLabelCssClass; } container.Controls.Add(pageNumber); } else { container.Controls.Add(CreateNumericButton((i + firstButtonIndex + 1).ToString(CultureInfo.InvariantCulture), fieldIndex.ToString(CultureInfo.InvariantCulture), (i + firstButtonIndex).ToString(CultureInfo.InvariantCulture))); } AddNonBreakingSpace(container); } if (lastRecordIndex < _totalRowCount - 1) { AddNonBreakingSpace(container); container.Controls.Add(CreateNextPrevButton(NextPageText, DataControlCommands.NextPageCommandArgument, fieldIndex.ToString(CultureInfo.InvariantCulture), NextPageImageUrl)); AddNonBreakingSpace(container); } } private void CreateDataPagersForQueryString(DataPagerFieldItem container, int fieldIndex) { int currentPageIndex = _startRowIndex / _maximumRows; bool resetProperties = false; if (!QueryStringHandled) { int currentQSPageIndex; QueryStringHandled = true; bool parsed = Int32.TryParse(QueryStringValue, out currentQSPageIndex); if (parsed) { currentQSPageIndex--;//convert page number to page index. int highestPageIndex = (_totalRowCount - 1) / _maximumRows; if ((currentQSPageIndex >= 0) && (currentQSPageIndex <= highestPageIndex)) { currentPageIndex = currentQSPageIndex; _startRowIndex = (currentPageIndex * _maximumRows); resetProperties = true; } } } int firstButtonIndex = (_startRowIndex / (ButtonCount * _maximumRows)) * ButtonCount; int lastButtonIndex = firstButtonIndex + ButtonCount - 1; int lastRecordIndex = ((lastButtonIndex + 1) * _maximumRows) - 1; if (firstButtonIndex != 0) { container.Controls.Add(CreateNextPrevLink(PreviousPageText, firstButtonIndex - 1, PreviousPageImageUrl)); AddNonBreakingSpace(container); } for (int i = 0; i < ButtonCount && _totalRowCount > ((i + firstButtonIndex) * _maximumRows); i++) { if (i + firstButtonIndex == currentPageIndex) { Label pageNumber = new Label(); pageNumber.Text = (i + firstButtonIndex + 1).ToString(CultureInfo.InvariantCulture); if (!String.IsNullOrEmpty(CurrentPageLabelCssClass)) { pageNumber.CssClass = CurrentPageLabelCssClass; } container.Controls.Add(pageNumber); } else { container.Controls.Add(CreateNumericLink(i + firstButtonIndex)); } AddNonBreakingSpace(container); } if (lastRecordIndex < _totalRowCount - 1) { AddNonBreakingSpace(container); container.Controls.Add(CreateNextPrevLink(NextPageText, firstButtonIndex + ButtonCount, NextPageImageUrl)); AddNonBreakingSpace(container); } if (resetProperties) { DataPager.SetPageProperties(_startRowIndex, _maximumRows, true); } } // Required for design-time support (DesignerPagerStyle) [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] public override bool Equals(object o) { NumericPagerField field = o as NumericPagerField; if (field != null) { if (String.Equals(field.ButtonCount, this.ButtonCount) && field.ButtonType == this.ButtonType && String.Equals(field.CurrentPageLabelCssClass, this.CurrentPageLabelCssClass) && String.Equals(field.NextPageImageUrl, this.NextPageImageUrl) && String.Equals(field.NextPageText, this.NextPageText) && String.Equals(field.NextPreviousButtonCssClass, this.NextPreviousButtonCssClass) && String.Equals(field.NumericButtonCssClass, this.NumericButtonCssClass) && String.Equals(field.PreviousPageImageUrl, this.PreviousPageImageUrl) && String.Equals(field.PreviousPageText, this.PreviousPageText)) { return true; } } return false; } [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] public override int GetHashCode() { return this.ButtonCount.GetHashCode() | this.ButtonType.GetHashCode() | this.CurrentPageLabelCssClass.GetHashCode() | this.NextPageImageUrl.GetHashCode() | this.NextPageText.GetHashCode() | this.NextPreviousButtonCssClass.GetHashCode() | this.NumericButtonCssClass.GetHashCode() | this.PreviousPageImageUrl.GetHashCode() | this.PreviousPageText.GetHashCode(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //Indicates the button type for the field. ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Diagnostics.CodeAnalysis; using System.Drawing.Design; using System.Globalization; using System.Web; using System.Web.Resources; using System.Web.UI; namespace System.Web.UI.WebControls { [AspNetHostingPermission(System.Security.Permissions.SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(System.Security.Permissions.SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)] public class NumericPagerField : DataPagerField { private int _startRowIndex; private int _maximumRows; private int _totalRowCount; public NumericPagerField() { } [ DefaultValue(5), Category("Appearance"), ResourceDescription("NumericPagerField_ButtonCount"), ] public int ButtonCount { get { object o = ViewState["ButtonCount"]; if (o != null) { return (int)o; } return 5; } set { if (value < 1) { throw new ArgumentOutOfRangeException("value"); } if (value != ButtonCount) { ViewState["ButtonCount"] = value; OnFieldChanged(); } } } ////// [ Category("Appearance"), DefaultValue(ButtonType.Link), ResourceDescription("NumericPagerField_ButtonType"), ] public ButtonType ButtonType { get { object o = ViewState["ButtonType"]; if (o != null) return(ButtonType)o; return ButtonType.Link; } set { if (value < ButtonType.Button || value > ButtonType.Link) { throw new ArgumentOutOfRangeException("value"); } if (value != ButtonType) { ViewState["ButtonType"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), ResourceDescription("NumericPagerField_CurrentPageLabelCssClass"), CssClassPropertyAttribute ] public string CurrentPageLabelCssClass { get { object o = ViewState["CurrentPageLabelCssClass"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != CurrentPageLabelCssClass) { ViewState["CurrentPageLabelCssClass"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), Editor(typeof(System.Web.UI.Design.ImageUrlEditor), typeof(UITypeEditor)), ResourceDescription("NumericPagerField_NextPageImageUrl"), SuppressMessage("Microsoft.Design", "CA1056:UriPropertiesShouldNotBeStrings", Justification = "Required by ASP.NET parser."), UrlProperty() ] public string NextPageImageUrl { get { object o = ViewState["NextPageImageUrl"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != NextPageImageUrl) { ViewState["NextPageImageUrl"] = value; OnFieldChanged(); } } } [ Category("Appearance"), Localizable(true), ResourceDefaultValue("NumericPagerField_DefaultNextPageText"), ResourceDescription("NumericPagerField_NextPageText") ] public string NextPageText { get { object o = ViewState["NextPageText"]; if (o != null) { return (string)o; } return AtlasWeb.NumericPagerField_DefaultNextPageText; } set { if (value != NextPageText) { ViewState["NextPageText"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), ResourceDescription("NumericPagerField_NextPreviousButtonCssClass"), CssClassPropertyAttribute ] public string NextPreviousButtonCssClass { get { object o = ViewState["NextPreviousButtonCssClass"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != NextPreviousButtonCssClass) { ViewState["NextPreviousButtonCssClass"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), ResourceDescription("NumericPagerField_NumericButtonCssClass"), CssClassPropertyAttribute ] public string NumericButtonCssClass { get { object o = ViewState["NumericButtonCssClass"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != NumericButtonCssClass) { ViewState["NumericButtonCssClass"] = value; OnFieldChanged(); } } } [ Category("Appearance"), DefaultValue(""), Editor(typeof(System.Web.UI.Design.ImageUrlEditor), typeof(UITypeEditor)), ResourceDescription("NumericPagerField_PreviousPageImageUrl"), SuppressMessage("Microsoft.Design", "CA1056:UriPropertiesShouldNotBeStrings", Justification = "Required by ASP.NET parser."), UrlProperty() ] public string PreviousPageImageUrl { get { object o = ViewState["PreviousPageImageUrl"]; if (o != null) { return (string)o; } return String.Empty; } set { if (value != PreviousPageImageUrl) { ViewState["PreviousPageImageUrl"] = value; OnFieldChanged(); } } } [ Category("Appearance"), Localizable(true), ResourceDefaultValue("NumericPagerField_DefaultPreviousPageText"), ResourceDescription("NumericPagerField_PreviousPageText") ] public string PreviousPageText { get { object o = ViewState["PreviousPageText"]; if (o != null) { return (string)o; } return AtlasWeb.NumericPagerField_DefaultPreviousPageText; } set { if (value != PreviousPageText) { ViewState["PreviousPageText"] = value; OnFieldChanged(); } } } [ DefaultValue(true), Category("Behavior"), ResourceDescription("NumericPagerField_RenderNonBreakingSpacesBetweenControls"), ] public bool RenderNonBreakingSpacesBetweenControls { get { object o = ViewState["RenderNonBreakingSpacesBetweenControls"]; if (o != null) { return (bool)o; } return true; } set { if (value != RenderNonBreakingSpacesBetweenControls) { ViewState["RenderNonBreakingSpacesBetweenControls"] = value; OnFieldChanged(); } } } [ SuppressMessage("Microsoft.Usage", "CA2204:LiteralsShouldBeSpelledCorrectly", MessageId = "nbsp", Justification = "Literal is HTML escape sequence."), SuppressMessage("Microsoft.Globalization", "CA1303:DoNotPassLiteralsAsLocalizedParameters", MessageId = "System.Web.UI.LiteralControl.#ctor(System.String)", Justification = "Literal is HTML escape sequence.") ] private void AddNonBreakingSpace(DataPagerFieldItem container) { if (RenderNonBreakingSpacesBetweenControls) { container.Controls.Add(new LiteralControl(" ")); } } protected override void CopyProperties(DataPagerField newField) { ((NumericPagerField)newField).ButtonCount = ButtonCount; ((NumericPagerField)newField).ButtonType = ButtonType; ((NumericPagerField)newField).CurrentPageLabelCssClass = CurrentPageLabelCssClass; ((NumericPagerField)newField).NextPageImageUrl = NextPageImageUrl; ((NumericPagerField)newField).NextPageText = NextPageText; ((NumericPagerField)newField).NextPreviousButtonCssClass = NextPreviousButtonCssClass; ((NumericPagerField)newField).NumericButtonCssClass = NumericButtonCssClass; ((NumericPagerField)newField).PreviousPageImageUrl = PreviousPageImageUrl; ((NumericPagerField)newField).PreviousPageText = PreviousPageText; base.CopyProperties(newField); } protected override DataPagerField CreateField() { return new NumericPagerField(); } [SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", MessageId = "0#")] public override void HandleEvent(CommandEventArgs e) { if (String.IsNullOrEmpty(DataPager.QueryStringField)) { int newStartRowIndex = -1; int currentPageIndex = _startRowIndex / DataPager.PageSize; int firstButtonIndex = (_startRowIndex / (ButtonCount * DataPager.PageSize)) * ButtonCount; int lastButtonIndex = firstButtonIndex + ButtonCount - 1; int lastRecordIndex = ((lastButtonIndex + 1) * DataPager.PageSize) - 1; if (String.Equals(e.CommandName, DataControlCommands.PreviousPageCommandArgument)) { newStartRowIndex = (firstButtonIndex - 1) * DataPager.PageSize; if (newStartRowIndex < 0) { newStartRowIndex = 0; } } else if (String.Equals(e.CommandName, DataControlCommands.NextPageCommandArgument)) { newStartRowIndex = lastRecordIndex + 1; if (newStartRowIndex > _totalRowCount) { newStartRowIndex = _totalRowCount - DataPager.PageSize; } } else { int pageIndex = Convert.ToInt32(e.CommandName, CultureInfo.InvariantCulture); newStartRowIndex = pageIndex * DataPager.PageSize; } if (newStartRowIndex != -1) { DataPager.SetPageProperties(newStartRowIndex, DataPager.PageSize, true); } } } private Control CreateNumericButton(string buttonText, string commandArgument, string commandName) { IButtonControl button; switch (ButtonType) { case ButtonType.Button: button = new Button(); break; case ButtonType.Link: default: button = new LinkButton(); break; } button.Text = buttonText; button.CausesValidation = false; button.CommandName = commandName; button.CommandArgument = commandArgument; WebControl webControl = button as WebControl; if (webControl != null && !String.IsNullOrEmpty(NumericButtonCssClass)) { webControl.CssClass = NumericButtonCssClass; } return button as Control; } private HyperLink CreateNumericLink(int pageIndex) { int pageNumber = pageIndex + 1; HyperLink link = new HyperLink(); link.Text = pageNumber.ToString(CultureInfo.InvariantCulture); link.NavigateUrl = GetQueryStringNavigateUrl(pageNumber); if (!String.IsNullOrEmpty(NumericButtonCssClass)) { link.CssClass = NumericButtonCssClass; } return link; } private Control CreateNextPrevButton(string buttonText, string commandName, string commandArgument, string imageUrl) { IButtonControl button; switch (ButtonType) { case ButtonType.Link: button = new LinkButton(); break; case ButtonType.Button: button = new Button(); break; case ButtonType.Image: default: button = new ImageButton(); ((ImageButton)button).ImageUrl = imageUrl; ((ImageButton)button).AlternateText = HttpUtility.HtmlDecode(buttonText); break; } button.Text = buttonText; button.CausesValidation = false; button.CommandName = commandName; button.CommandArgument = commandArgument; WebControl webControl = button as WebControl; if (webControl != null && !String.IsNullOrEmpty(NextPreviousButtonCssClass)) { webControl.CssClass = NextPreviousButtonCssClass; } return button as Control; } private HyperLink CreateNextPrevLink(string buttonText, int pageIndex, string imageUrl) { int pageNumber = pageIndex + 1; HyperLink link = new HyperLink(); link.Text = buttonText; link.NavigateUrl = GetQueryStringNavigateUrl(pageNumber); link.ImageUrl = imageUrl; if (!String.IsNullOrEmpty(NextPreviousButtonCssClass)) { link.CssClass = NextPreviousButtonCssClass; } return link; } public override void CreateDataPagers(DataPagerFieldItem container, int startRowIndex, int maximumRows, int totalRowCount, int fieldIndex) { _startRowIndex = startRowIndex; _maximumRows = maximumRows; _totalRowCount = totalRowCount; if (String.IsNullOrEmpty(DataPager.QueryStringField)) { CreateDataPagersForCommand(container, fieldIndex); } else { CreateDataPagersForQueryString(container, fieldIndex); } } private void CreateDataPagersForCommand(DataPagerFieldItem container, int fieldIndex) { int currentPageIndex = _startRowIndex / _maximumRows; int firstButtonIndex = (_startRowIndex / (ButtonCount * _maximumRows)) * ButtonCount; int lastButtonIndex = firstButtonIndex + ButtonCount - 1; int lastRecordIndex = ((lastButtonIndex + 1) * _maximumRows) - 1; if (firstButtonIndex != 0) { container.Controls.Add(CreateNextPrevButton(PreviousPageText, DataControlCommands.PreviousPageCommandArgument, fieldIndex.ToString(CultureInfo.InvariantCulture), PreviousPageImageUrl)); AddNonBreakingSpace(container); } for (int i = 0; i < ButtonCount && _totalRowCount > ((i + firstButtonIndex) * _maximumRows); i++) { if (i + firstButtonIndex == currentPageIndex) { Label pageNumber = new Label(); pageNumber.Text = (i + firstButtonIndex + 1).ToString(CultureInfo.InvariantCulture); if (!String.IsNullOrEmpty(CurrentPageLabelCssClass)) { pageNumber.CssClass = CurrentPageLabelCssClass; } container.Controls.Add(pageNumber); } else { container.Controls.Add(CreateNumericButton((i + firstButtonIndex + 1).ToString(CultureInfo.InvariantCulture), fieldIndex.ToString(CultureInfo.InvariantCulture), (i + firstButtonIndex).ToString(CultureInfo.InvariantCulture))); } AddNonBreakingSpace(container); } if (lastRecordIndex < _totalRowCount - 1) { AddNonBreakingSpace(container); container.Controls.Add(CreateNextPrevButton(NextPageText, DataControlCommands.NextPageCommandArgument, fieldIndex.ToString(CultureInfo.InvariantCulture), NextPageImageUrl)); AddNonBreakingSpace(container); } } private void CreateDataPagersForQueryString(DataPagerFieldItem container, int fieldIndex) { int currentPageIndex = _startRowIndex / _maximumRows; bool resetProperties = false; if (!QueryStringHandled) { int currentQSPageIndex; QueryStringHandled = true; bool parsed = Int32.TryParse(QueryStringValue, out currentQSPageIndex); if (parsed) { currentQSPageIndex--;//convert page number to page index. int highestPageIndex = (_totalRowCount - 1) / _maximumRows; if ((currentQSPageIndex >= 0) && (currentQSPageIndex <= highestPageIndex)) { currentPageIndex = currentQSPageIndex; _startRowIndex = (currentPageIndex * _maximumRows); resetProperties = true; } } } int firstButtonIndex = (_startRowIndex / (ButtonCount * _maximumRows)) * ButtonCount; int lastButtonIndex = firstButtonIndex + ButtonCount - 1; int lastRecordIndex = ((lastButtonIndex + 1) * _maximumRows) - 1; if (firstButtonIndex != 0) { container.Controls.Add(CreateNextPrevLink(PreviousPageText, firstButtonIndex - 1, PreviousPageImageUrl)); AddNonBreakingSpace(container); } for (int i = 0; i < ButtonCount && _totalRowCount > ((i + firstButtonIndex) * _maximumRows); i++) { if (i + firstButtonIndex == currentPageIndex) { Label pageNumber = new Label(); pageNumber.Text = (i + firstButtonIndex + 1).ToString(CultureInfo.InvariantCulture); if (!String.IsNullOrEmpty(CurrentPageLabelCssClass)) { pageNumber.CssClass = CurrentPageLabelCssClass; } container.Controls.Add(pageNumber); } else { container.Controls.Add(CreateNumericLink(i + firstButtonIndex)); } AddNonBreakingSpace(container); } if (lastRecordIndex < _totalRowCount - 1) { AddNonBreakingSpace(container); container.Controls.Add(CreateNextPrevLink(NextPageText, firstButtonIndex + ButtonCount, NextPageImageUrl)); AddNonBreakingSpace(container); } if (resetProperties) { DataPager.SetPageProperties(_startRowIndex, _maximumRows, true); } } // Required for design-time support (DesignerPagerStyle) [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] public override bool Equals(object o) { NumericPagerField field = o as NumericPagerField; if (field != null) { if (String.Equals(field.ButtonCount, this.ButtonCount) && field.ButtonType == this.ButtonType && String.Equals(field.CurrentPageLabelCssClass, this.CurrentPageLabelCssClass) && String.Equals(field.NextPageImageUrl, this.NextPageImageUrl) && String.Equals(field.NextPageText, this.NextPageText) && String.Equals(field.NextPreviousButtonCssClass, this.NextPreviousButtonCssClass) && String.Equals(field.NumericButtonCssClass, this.NumericButtonCssClass) && String.Equals(field.PreviousPageImageUrl, this.PreviousPageImageUrl) && String.Equals(field.PreviousPageText, this.PreviousPageText)) { return true; } } return false; } [SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] public override int GetHashCode() { return this.ButtonCount.GetHashCode() | this.ButtonType.GetHashCode() | this.CurrentPageLabelCssClass.GetHashCode() | this.NextPageImageUrl.GetHashCode() | this.NextPageText.GetHashCode() | this.NextPreviousButtonCssClass.GetHashCode() | this.NumericButtonCssClass.GetHashCode() | this.PreviousPageImageUrl.GetHashCode() | this.PreviousPageText.GetHashCode(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.Indicates the button type for the field. ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ValueQuery.cs
- FixedSOMFixedBlock.cs
- TextEditorCopyPaste.cs
- Addressing.cs
- ParameterBuilder.cs
- PersonalizationProviderHelper.cs
- SqlDataSourceTableQuery.cs
- TypeDelegator.cs
- ContextMenuStripGroup.cs
- NameValueConfigurationElement.cs
- PerformanceCounter.cs
- nulltextnavigator.cs
- ActivationWorker.cs
- ReservationCollection.cs
- TdsParserStaticMethods.cs
- AssociationTypeEmitter.cs
- Vector3DCollection.cs
- HttpCacheVaryByContentEncodings.cs
- CodePrimitiveExpression.cs
- HitTestResult.cs
- CodeNamespaceImport.cs
- StylusPointPropertyInfo.cs
- FacetValues.cs
- ResourceExpression.cs
- SqlGenerator.cs
- UnaryExpressionHelper.cs
- EntityParameterCollection.cs
- DBProviderConfigurationHandler.cs
- HttpProfileGroupBase.cs
- ServicePerformanceCounters.cs
- StringUtil.cs
- VectorCollectionConverter.cs
- PerfService.cs
- HttpCachePolicyBase.cs
- CompilerResults.cs
- Metafile.cs
- ResourceContainer.cs
- HwndSourceParameters.cs
- StoragePropertyMapping.cs
- HwndHost.cs
- DataGridTextColumn.cs
- EntityDesignPluralizationHandler.cs
- Binding.cs
- SqlConnectionPoolGroupProviderInfo.cs
- BitmapEffectGeneralTransform.cs
- WorkflowDebuggerSteppingAttribute.cs
- WebPartCollection.cs
- XmlIlVisitor.cs
- SecurityElement.cs
- FormDocumentDesigner.cs
- AmbientLight.cs
- DataColumnCollection.cs
- ISAPIApplicationHost.cs
- ShaderRenderModeValidation.cs
- GrammarBuilder.cs
- BaseTemplateBuildProvider.cs
- FunctionUpdateCommand.cs
- ViewGenResults.cs
- Subset.cs
- PermissionToken.cs
- MD5.cs
- HtmlTitle.cs
- XmlSiteMapProvider.cs
- BaseCodePageEncoding.cs
- DataGridViewBindingCompleteEventArgs.cs
- RIPEMD160.cs
- BamlResourceContent.cs
- WindowsAuthenticationModule.cs
- DataStreamFromComStream.cs
- BCLDebug.cs
- SqlClientPermission.cs
- EventPropertyMap.cs
- HistoryEventArgs.cs
- SerTrace.cs
- UrlMappingCollection.cs
- TextSearch.cs
- CollectionAdapters.cs
- TypeForwardedToAttribute.cs
- StyleCollection.cs
- SelectionPatternIdentifiers.cs
- BindUriHelper.cs
- MatrixTransform3D.cs
- PageWrapper.cs
- SecurityProtocolFactory.cs
- QEncodedStream.cs
- TextRunTypographyProperties.cs
- Decorator.cs
- ZoneButton.cs
- SoapConverter.cs
- EventLogPermissionHolder.cs
- Soap12FormatExtensions.cs
- MaskDescriptor.cs
- ServiceHostingEnvironment.cs
- PointAnimationUsingKeyFrames.cs
- ExpressionBuilderContext.cs
- EditorResources.cs
- DbProviderFactories.cs
- TransformProviderWrapper.cs
- DataRowChangeEvent.cs
- DispatcherExceptionEventArgs.cs