private void CreateNumericPager(TableRow row, IPagedDataSource pagedDataSource, bool addFirstLastPageButtons) { LinkButton button; PagerSettings pagerSettings = PagerSettings; int pageCount = pagedDataSource.PageCount; int num2 = pagedDataSource.PageIndex + 1; int pageButtonCount = pagerSettings.PageButtonCount; int num4 = pageButtonCount; Int32 FirstDisplayedPageIndex = 0; int num5 = FirstDisplayedPageIndex + 1; if (pageCount < num4) { num4 = pageCount; } int num6 = 1; int pageIndex = num4; if (num2 > pageIndex) { int num8 = pagedDataSource.PageIndex / pageButtonCount; bool flag = ((num2 - num5) >= 0) && ((num2 - num5) < pageButtonCount); if ((num5 > 0) && flag) { num6 = num5; } else { num6 = (num8 * pageButtonCount) + 1; } pageIndex = (num6 + pageButtonCount) - 1; if (pageIndex > pageCount) { pageIndex = pageCount; } if (((pageIndex - num6) + 1) < pageButtonCount) { num6 = Math.Max(1, (pageIndex - pageButtonCount) + 1); } FirstDisplayedPageIndex = num6 - 1; } if ((addFirstLastPageButtons && (num2 != 1)) && (num6 != 1)) { IButtonControl control; TableCell cell = new TableCell(); row.Cells.Add(cell); string firstPageImageUrl = pagerSettings.FirstPageImageUrl; if (firstPageImageUrl.Length > 0) { control = new DataControlImageButton(this); ((DataControlImageButton)control).ImageUrl = firstPageImageUrl; ((DataControlImageButton)control).AlternateText = HttpUtility.HtmlDecode(pagerSettings.FirstPageText); ((DataControlImageButton)control).EnableCallback(BuildCallbackArgument(0)); } else { control = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control).Text = pagerSettings.FirstPageText; ((DataControlPagerLinkButton)control).EnableCallback(BuildCallbackArgument(0)); } control.CommandName = "Page"; control.CommandArgument = "First"; cell.Controls.Add((Control)control); } if (num6 != 1) { TableCell cell2 = new TableCell(); row.Cells.Add(cell2); button = new DataControlPagerLinkButton(this); button.Text = "..."; button.CommandName = "Page"; button.CommandArgument = (num6 - 1).ToString(NumberFormatInfo.InvariantInfo); ((DataControlPagerLinkButton)button).EnableCallback(BuildCallbackArgument(num6 - 2)); cell2.Controls.Add(button); } for (int i = num6; i <= pageIndex; i++) { TableCell cell3 = new TableCell(); row.Cells.Add(cell3); string str2 = i.ToString(NumberFormatInfo.InvariantInfo); if (i == num2) { Label child = new Label(); child.Text = str2; cell3.Controls.Add(child); } else { button = new DataControlPagerLinkButton(this); button.Text = str2; button.CommandName = "Page"; button.CommandArgument = str2; ((DataControlPagerLinkButton)button).EnableCallback(BuildCallbackArgument(i - 1)); cell3.Controls.Add(button); } } if (pageCount > pageIndex) { TableCell cell4 = new TableCell(); row.Cells.Add(cell4); button = new DataControlPagerLinkButton(this); button.Text = "..."; button.CommandName = "Page"; button.CommandArgument = (pageIndex + 1).ToString(NumberFormatInfo.InvariantInfo); ((DataControlPagerLinkButton)button).EnableCallback(BuildCallbackArgument(pageIndex)); cell4.Controls.Add(button); } bool flag2 = pageIndex == pageCount; if ((addFirstLastPageButtons && (num2 != pageCount)) && !flag2) { IButtonControl control2; TableCell cell5 = new TableCell(); row.Cells.Add(cell5); string lastPageImageUrl = pagerSettings.LastPageImageUrl; if (lastPageImageUrl.Length > 0) { control2 = new DataControlImageButton(this); ((DataControlImageButton)control2).ImageUrl = lastPageImageUrl; ((DataControlImageButton)control2).AlternateText = HttpUtility.HtmlDecode(pagerSettings.LastPageText); ((DataControlImageButton)control2).EnableCallback(BuildCallbackArgument(pagedDataSource.PageCount - 1)); } else { control2 = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control2).Text = pagerSettings.LastPageText; ((DataControlPagerLinkButton)control2).EnableCallback(BuildCallbackArgument(pagedDataSource.PageCount - 1)); } control2.CommandName = "Page"; control2.CommandArgument = "Last"; cell5.Controls.Add((Control)control2); } }
///// <summary> ///// 已重写。保证创建子控件 ///// </summary> //public override ControlCollection Controls //{ // get // { // this.EnsureChildControls(); // return base.Controls; // } //} #endregion #region 四种分页 private void CreateNextPrevPager(TableRow row, IPagedDataSource pagedDataSource, bool addFirstLastPageButtons) { PagerSettings pagerSettings = PagerSettings; string previousPageImageUrl = pagerSettings.PreviousPageImageUrl; string nextPageImageUrl = pagerSettings.NextPageImageUrl; bool isFirstPage = pagedDataSource.IsFirstPage; bool isLastPage = pagedDataSource.IsLastPage; if (addFirstLastPageButtons && !isFirstPage) { IButtonControl control; TableCell cell = new TableCell(); row.Cells.Add(cell); string firstPageImageUrl = pagerSettings.FirstPageImageUrl; if (firstPageImageUrl.Length > 0) { control = new DataControlImageButton(this); ((DataControlImageButton)control).ImageUrl = firstPageImageUrl; ((DataControlImageButton)control).AlternateText = HttpUtility.HtmlDecode(pagerSettings.FirstPageText); ((DataControlImageButton)control).EnableCallback(BuildCallbackArgument(0)); } else { control = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control).Text = pagerSettings.FirstPageText; ((DataControlPagerLinkButton)control).EnableCallback(BuildCallbackArgument(0)); } control.CommandName = "Page"; control.CommandArgument = "First"; cell.Controls.Add((Control)control); } if (!isFirstPage) { IButtonControl control2; TableCell cell2 = new TableCell(); row.Cells.Add(cell2); if (previousPageImageUrl.Length > 0) { control2 = new DataControlImageButton(this); ((DataControlImageButton)control2).ImageUrl = previousPageImageUrl; ((DataControlImageButton)control2).AlternateText = HttpUtility.HtmlDecode(pagerSettings.PreviousPageText); ((DataControlImageButton)control2).EnableCallback(BuildCallbackArgument(PageIndex - 1)); } else { control2 = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control2).Text = pagerSettings.PreviousPageText; ((DataControlPagerLinkButton)control2).EnableCallback(BuildCallbackArgument(PageIndex - 1)); } control2.CommandName = "Page"; control2.CommandArgument = "Prev"; cell2.Controls.Add((Control)control2); } if (!isLastPage) { IButtonControl control3; TableCell cell3 = new TableCell(); row.Cells.Add(cell3); if (nextPageImageUrl.Length > 0) { control3 = new DataControlImageButton(this); ((DataControlImageButton)control3).ImageUrl = nextPageImageUrl; ((DataControlImageButton)control3).AlternateText = HttpUtility.HtmlDecode(pagerSettings.NextPageText); ((DataControlImageButton)control3).EnableCallback(BuildCallbackArgument(PageIndex + 1)); } else { control3 = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control3).Text = pagerSettings.NextPageText; ((DataControlPagerLinkButton)control3).EnableCallback(BuildCallbackArgument(PageIndex + 1)); } control3.CommandName = "Page"; control3.CommandArgument = "Next"; cell3.Controls.Add((Control)control3); } if (addFirstLastPageButtons && !isLastPage) { IButtonControl control4; TableCell cell4 = new TableCell(); row.Cells.Add(cell4); string lastPageImageUrl = pagerSettings.LastPageImageUrl; if (lastPageImageUrl.Length > 0) { control4 = new DataControlImageButton(this); ((DataControlImageButton)control4).ImageUrl = lastPageImageUrl; ((DataControlImageButton)control4).AlternateText = HttpUtility.HtmlDecode(pagerSettings.LastPageText); ((DataControlImageButton)control4).EnableCallback(BuildCallbackArgument(pagedDataSource.PageCount - 1)); } else { control4 = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control4).Text = pagerSettings.LastPageText; ((DataControlPagerLinkButton)control4).EnableCallback(BuildCallbackArgument(pagedDataSource.PageCount - 1)); } control4.CommandName = "Page"; control4.CommandArgument = "Last"; cell4.Controls.Add((Control)control4); } }