void CreatePagerButton(TableRow row, string imageUrl, string text, int pageIndex, string cmdArgument, bool noLink) { TableCell cell = new TableCell(); cell.Attributes["nowrap"] = "true"; if (!noLink) { IButtonControl btnCtrl; if (!string.IsNullOrEmpty(imageUrl)) { btnCtrl = new DataControlImageButton(this); ((DataControlImageButton)btnCtrl).ImageUrl = imageUrl; ((DataControlImageButton)btnCtrl).AlternateText = HttpUtility.HtmlDecode(text); ((DataControlImageButton)btnCtrl).ToolTip = text; ((DataControlImageButton)btnCtrl).EnableCallback(this.BuildCallbackArgument(pageIndex)); } else { btnCtrl = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)btnCtrl).Text = text; ((DataControlPagerLinkButton)btnCtrl).ToolTip = text; ((DataControlPagerLinkButton)btnCtrl).EnableCallback(this.BuildCallbackArgument(pageIndex)); } btnCtrl.CommandName = "Page"; btnCtrl.CommandArgument = cmdArgument; if (!string.IsNullOrEmpty(this.FooterLinkCSS)) ((WebControl)btnCtrl).CssClass = this.FooterLinkCSS; cell.Controls.Add((Control)btnCtrl); } else { Control ctrl = null; if (!string.IsNullOrEmpty(imageUrl)) { ctrl = new System.Web.UI.WebControls.Image(); ((System.Web.UI.WebControls.Image)ctrl).ImageUrl = imageUrl; ((System.Web.UI.WebControls.Image)ctrl).AlternateText = HttpUtility.HtmlDecode(text); ((System.Web.UI.WebControls.Image)ctrl).ToolTip = text; } else { ctrl = new Label(); ((Label)ctrl).Text = text; ((Label)ctrl).ToolTip = text; } cell.Controls.Add(ctrl); } row.Cells.Add(cell); }
void CreateNumericPager(TableRow row, PagedDataSourceEx pagedDataSource, bool addFirstLastPageButtons) { LinkButton button = null; PagerSettingsEx pagerSettings = this.PagerSettings; int pageCount = pagedDataSource.PageCount; int nextPageIndex = pagedDataSource.CurrentPageIndex + 1; int pageButtonCount = pagerSettings.PageButtonCount; int firstDisplayPageIndex = this.FirstDisplayPageIndex + 1; int pageIndex = (pageCount < pageButtonCount) ? pageCount : pageButtonCount; int startIndex = 1; if (nextPageIndex > pageIndex) { if (firstDisplayPageIndex > 0 && ((nextPageIndex - firstDisplayPageIndex >= 0) && (nextPageIndex - firstDisplayPageIndex < pageButtonCount))) startIndex = firstDisplayPageIndex; else startIndex = (pagedDataSource.CurrentPageIndex / pageButtonCount) + 1; pageIndex = startIndex + pageButtonCount - 1; if (pageIndex > pageCount) pageIndex = pageCount; if ((pageIndex - startIndex) + 1 < pageButtonCount) startIndex = Math.Max(1, (pageIndex - pageButtonCount + 1)); this.FirstDisplayPageIndex = startIndex - 1; } #region 首页 if (addFirstLastPageButtons && (nextPageIndex != 1) && (startIndex != 1)) { IButtonControl control = null; TableCell cell = new TableCell(); row.Cells.Add(cell); string firstPageImageUrl = pagerSettings.FirstPageImageUrl; if (!string.IsNullOrEmpty(firstPageImageUrl)) { control = new DataControlImageButton(this); ((DataControlImageButton)control).ImageUrl = firstPageImageUrl; ((DataControlImageButton)control).AlternateText = HttpUtility.HtmlDecode(pagerSettings.FirstPageText); ((DataControlImageButton)control).ToolTip = "第一页"; ((DataControlImageButton)control).EnableCallback(this.BuildCallbackArgument(0)); } else { control = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control).Text = pagerSettings.FirstPageText; ((DataControlPagerLinkButton)control).ToolTip = "第一页"; ((DataControlPagerLinkButton)control).EnableCallback(this.BuildCallbackArgument(0)); } control.CommandName = "Page"; control.CommandArgument = "First"; cell.Controls.Add((Control)control); } #endregion #region 前更多 if (startIndex != 1) { TableCell cell = new TableCell(); row.Cells.Add(cell); button = new DataControlPagerLinkButton(this); button.Text = "..."; button.ToolTip = "更多..."; button.CommandName = "Page"; button.CommandArgument = (startIndex - 1).ToString(NumberFormatInfo.InvariantInfo); ((DataControlPagerLinkButton)button).EnableCallback(this.BuildCallbackArgument(startIndex - 2)); cell.Controls.Add(button); } #endregion #region 页索引 for (int i = startIndex; i <= pageIndex; i++) { TableCell cell = new TableCell(); row.Cells.Add(cell); string str = i.ToString(NumberFormatInfo.InvariantInfo); if (i == nextPageIndex) { Label child = new Label(); child.Text = str; cell.Controls.Add(child); } else { button = new DataControlPagerLinkButton(this); button.Text = str; button.ToolTip = str; button.CommandName = "Page"; button.CommandArgument = str; ((DataControlPagerLinkButton)button).EnableCallback(this.BuildCallbackArgument(i - 1)); cell.Controls.Add(button); } } #endregion #region 后更多 if (pageCount > pageIndex) { TableCell cell = new TableCell(); row.Cells.Add(cell); button = new DataControlPagerLinkButton(this); button.Text = "..."; button.ToolTip = "更多..."; button.CommandName = "Page"; button.CommandArgument = (pageIndex + 1).ToString(NumberFormatInfo.InvariantInfo); ((DataControlPagerLinkButton)button).EnableCallback(this.BuildCallbackArgument(pageIndex)); cell.Controls.Add(button); } #endregion #region 末页 if (addFirstLastPageButtons && (nextPageIndex != pageCount) && (pageIndex != pageCount)) { IButtonControl control = null; TableCell cell = new TableCell(); row.Cells.Add(cell); string lastPageImageUrl = pagerSettings.LastPageImageUrl; if (!string.IsNullOrEmpty(lastPageImageUrl)) { control = new DataControlImageButton(this); ((DataControlImageButton)control).ImageUrl = lastPageImageUrl; ((DataControlImageButton)control).AlternateText = HttpUtility.HtmlDecode(pagerSettings.LastPageText); ((DataControlImageButton)control).ToolTip = "最后页"; ((DataControlImageButton)control).EnableCallback(this.BuildCallbackArgument(pagedDataSource.PageCount - 1)); } else { control = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control).Text = pagerSettings.LastPageText; ((DataControlPagerLinkButton)control).ToolTip = "最后页"; ((DataControlPagerLinkButton)control).EnableCallback(this.BuildCallbackArgument(pagedDataSource.PageCount - 1)); } control.CommandName = "Page"; control.CommandArgument = "Last"; cell.Controls.Add((Control)control); } #endregion }
void CreateNextPrevPager(TableRow row, PagedDataSourceEx pagedDataSource, bool addFirstLastPageButtons) { PagerSettingsEx pagerSettings = this.PagerSettings; string previousPageImageUrl = pagerSettings.PreviousPageImageUrl; string nextPageImageUrl = pagerSettings.NextPageImageUrl; bool isFirstPage = pagedDataSource.IsFirstPage; bool isLastPage = pagedDataSource.IsLastPage; #region 第一页 if (addFirstLastPageButtons && !isFirstPage) { IButtonControl control = null; TableCell cell = new TableCell(); row.Cells.Add(cell); string firstPageImageUrl = pagerSettings.FirstPageImageUrl; if (!string.IsNullOrEmpty(firstPageImageUrl)) { control = new DataControlImageButton(this); ((DataControlImageButton)control).ImageUrl = firstPageImageUrl; ((DataControlImageButton)control).AlternateText = HttpUtility.HtmlDecode(pagerSettings.FirstPageText); ((DataControlImageButton)control).ToolTip = "第一页"; ((DataControlImageButton)control).EnableCallback(this.BuildCallbackArgument(0)); } else { control = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control).Text = pagerSettings.FirstPageText; ((DataControlPagerLinkButton)control).ToolTip = "第一页"; ((DataControlPagerLinkButton)control).EnableCallback(this.BuildCallbackArgument(0)); } control.CommandName = "Page"; control.CommandArgument = "First"; cell.Controls.Add((Control)control); } #endregion #region 上一页 if (!isFirstPage) { IButtonControl control = null; TableCell cell = new TableCell(); row.Cells.Add(cell); if (!string.IsNullOrEmpty(previousPageImageUrl)) { control = new DataControlImageButton(this); ((DataControlImageButton)control).ImageUrl = previousPageImageUrl; ((DataControlImageButton)control).AlternateText = HttpUtility.HtmlDecode(pagerSettings.PreviousPageText); ((DataControlImageButton)control).ToolTip = "上一页"; ((DataControlImageButton)control).EnableCallback(this.BuildCallbackArgument(this.PageIndex - 1)); } else { control = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control).Text = pagerSettings.PreviousPageText; ((DataControlPagerLinkButton)control).ToolTip = "上一页"; ((DataControlPagerLinkButton)control).EnableCallback(this.BuildCallbackArgument(this.PageIndex - 1)); } control.CommandName = "Page"; control.CommandArgument = "Prev"; cell.Controls.Add((Control)control); } #endregion #region 下一页 if (!isLastPage) { IButtonControl control = null; TableCell cell = new TableCell(); row.Cells.Add(cell); if (!string.IsNullOrEmpty(nextPageImageUrl)) { control = new DataControlImageButton(this); ((DataControlImageButton)control).ImageUrl = nextPageImageUrl; ((DataControlImageButton)control).AlternateText = HttpUtility.HtmlDecode(pagerSettings.NextPageText); ((DataControlImageButton)control).ToolTip = "下一页"; ((DataControlImageButton)control).EnableCallback(this.BuildCallbackArgument(this.PageIndex + 1)); } else { control = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control).Text = pagerSettings.NextPageText; ((DataControlPagerLinkButton)control).ToolTip = "下一页"; ((DataControlPagerLinkButton)control).EnableCallback(this.BuildCallbackArgument(this.PageIndex + 1)); } control.CommandName = "Page"; control.CommandArgument = "Next"; cell.Controls.Add((Control)control); } #endregion #region 最后页 if (addFirstLastPageButtons && !isLastPage) { IButtonControl control = null; TableCell cell = new TableCell(); row.Cells.Add(cell); string lastPageImageUrl = pagerSettings.LastPageImageUrl; if (!string.IsNullOrEmpty(lastPageImageUrl)) { control = new DataControlImageButton(this); ((DataControlImageButton)control).ImageUrl = lastPageImageUrl; ((DataControlImageButton)control).AlternateText = HttpUtility.HtmlDecode(pagerSettings.LastPageText); ((DataControlImageButton)control).ToolTip = "最后页"; ((DataControlImageButton)control).EnableCallback(this.BuildCallbackArgument(pagedDataSource.PageCount - 1)); } else { control = new DataControlPagerLinkButton(this); ((DataControlPagerLinkButton)control).Text = pagerSettings.LastPageText; ((DataControlPagerLinkButton)control).ToolTip = "最后页"; ((DataControlPagerLinkButton)control).EnableCallback(this.BuildCallbackArgument(pagedDataSource.PageCount - 1)); } control.CommandName = "Page"; control.CommandArgument = "Last"; cell.Controls.Add((Control)control); } #endregion }
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); } }
/// <summary> /// 将文本或控件添加到单元格的控件集合中。 /// </summary> /// <param name="cell"></param> /// <param name="cellType"></param> /// <param name="rowState"></param> /// <param name="rowIndex"></param> public virtual void InitializeCell(DataControlFieldCellEx cell, DataControlCellType cellType, DataGridViewRowState rowState, int rowIndex) { WebControl control = null; string sortExpression = string.Empty, headerText = string.Empty; ImageButton button = null; switch (cellType) { case DataControlCellType.Header: { control = null; sortExpression = this.SortExpression; bool bSort = this.sortingEnabled && !string.IsNullOrEmpty(sortExpression); string headerImageUrl = this.HeaderImageUrl; headerText = this.HeaderText; if (string.IsNullOrEmpty(headerImageUrl)) { if (bSort) { LinkButton link = null; IPostBackContainer container = this.control as IPostBackContainer; if (container != null) { link = new DataControlLinkButton(container); ((DataControlLinkButton)link).EnableCallback(null); } else link = new LinkButton(); link.Text = headerText; link.CommandName = "Sort"; link.CommandArgument = sortExpression; if (!(link is DataControlLinkButton)) link.CausesValidation = false; control = link; } else { if (string.IsNullOrEmpty(headerText)) headerText = " "; cell.Text = headerText; } goto Label_015C; } if (!bSort && !string.IsNullOrEmpty(headerImageUrl)) { Image image = new Image(); image.ImageUrl = headerImageUrl; control = image; image.AlternateText = headerText; goto Label_015C; } IPostBackContainer contrainer = this.control as IPostBackContainer; if (contrainer == null) { button = new ImageButton(); break; } button = new DataControlImageButton(contrainer); ((DataControlImageButton)button).EnableCallback(null); } break; case DataControlCellType.Footer: { string footerText = this.FooterText; if (string.IsNullOrEmpty(footerText)) footerText = " "; cell.Text = footerText; } return; default: return; } button.ImageUrl = this.HeaderImageUrl; button.CommandName = "Sort"; button.CommandArgument = sortExpression; if (!(button is DataControlImageButton)) button.CausesValidation = false; button.AlternateText = headerText; control = button; Label_015C: if (control != null) cell.Controls.Add(control); }