/// <summary>建立子控件</summary> protected override void CreateChildControls() { // 当且仅当总记录数TotalRowCount准备好之后才创建子控件 if (TotalRowCount <= 0) { return; } Controls.Clear(); IPagedDataSource pagedDataSource = this; PagerSettings pagerSettings = PagerSettings; if (PagerTemplate != null) { // 分页模版输出 DataPagerItem item = new DataPagerItem(); PagerTemplate.InstantiateIn(item); Controls.Add(item); // 必须在加入Controls后再绑定,否则会因为没有关联Page而失败 // 每次完成创建子控件后马上绑定 item.DataItem = this; item.DataBind(); item.DataItem = null; } else { // 分页控件输出 Table child = new Table(); TableRow row2 = new TableRow(); switch (pagerSettings.Mode) { case PagerButtons.NextPrevious: CreateNextPrevPager(row2, pagedDataSource, false); break; case PagerButtons.Numeric: CreateNumericPager(row2, pagedDataSource, false); break; case PagerButtons.NextPreviousFirstLast: CreateNextPrevPager(row2, pagedDataSource, true); break; case PagerButtons.NumericFirstLast: CreateNumericPager(row2, pagedDataSource, true); break; } child.Rows.Add(row2); Controls.Add(child); } }
private void CreatePager(RepeaterItem Pagination, int PagerIndex) { if (PagerTemplate != null) { PagerTemplate.InstantiateIn(Pagination); } else if (this.PageCount > 1) { Control pagerRoot = Pagination; if (!string.IsNullOrEmpty(PagerSettings.FirstPagerContainer) && PagerIndex == 0) { if (!PagerSettings.UseQueryString) { throw (new HttpException("QueryString pagination is required to create pager controls")); } pagerRoot = GetReferencedControl(PagerSettings.FirstPagerContainer); } else if (!string.IsNullOrEmpty(PagerSettings.SecondPagerContainer) && PagerIndex > 0) { if (!PagerSettings.UseQueryString) { throw (new HttpException("QueryString pagination is required to create pager controls")); } pagerRoot = GetReferencedControl(PagerSettings.SecondPagerContainer); } if (!string.IsNullOrEmpty(PagerSettings.ContainerCssClass)) { System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div"); div.Attributes["class"] = PagerSettings.ContainerCssClass; pagerRoot.Controls.Add(div); pagerRoot = div; } switch (this.PagerSettings.Mode) { case PagerButtons.Numeric: CreateNumericPager(pagerRoot); break; case PagerButtons.NumericFirstLast: CreateNumericPager(pagerRoot); if (this.PageIndex > 0) { pagerRoot.Controls.AddAt(0, CreateSeparator()); pagerRoot.Controls.AddAt(0, CreateFirstButton()); } if (this.PageIndex < (this.PageCount - 1)) { pagerRoot.Controls.Add(CreateSeparator()); pagerRoot.Controls.Add(CreateLastButton()); } break; case PagerButtons.NumericNextPrevious: CreateNumericPager(pagerRoot); if (this.PageIndex > 0) { pagerRoot.Controls.AddAt(0, CreateSeparator()); pagerRoot.Controls.AddAt(0, CreatePreviousButton()); } if (this.PageIndex < (this.PageCount - 1)) { if (pagerRoot.Controls.Count > 0) { pagerRoot.Controls.Add(CreateSeparator()); } pagerRoot.Controls.Add(CreateNextButton()); } break; case PagerButtons.NextPrevious: if (this.PageIndex > 0) { pagerRoot.Controls.Add(CreatePreviousButton()); } if (this.PageIndex < (this.PageCount - 1)) { if (pagerRoot.Controls.Count > 0) { pagerRoot.Controls.Add(CreateSeparator()); } pagerRoot.Controls.Add(CreateNextButton()); } break; case PagerButtons.NextPreviousFirstLast: if (this.PageIndex > 0) { pagerRoot.Controls.Add(CreateFirstButton()); pagerRoot.Controls.Add(CreateSeparator()); pagerRoot.Controls.Add(CreatePreviousButton()); } if (this.PageIndex < (this.PageCount - 1)) { if (pagerRoot.Controls.Count > 0) { pagerRoot.Controls.Add(CreateSeparator()); } pagerRoot.Controls.Add(CreateNextButton()); pagerRoot.Controls.Add(CreateSeparator()); pagerRoot.Controls.Add(CreateLastButton()); } break; case PagerButtons.NumericNextPreviousFirstLast: CreateNumericPager(pagerRoot); if (this.PageIndex > 0) { pagerRoot.Controls.AddAt(0, CreateSeparator()); pagerRoot.Controls.AddAt(0, CreatePreviousButton()); pagerRoot.Controls.AddAt(0, CreateSeparator()); pagerRoot.Controls.AddAt(0, CreateFirstButton()); } if (this.PageIndex < (this.PageCount - 1)) { pagerRoot.Controls.Add(CreateSeparator()); pagerRoot.Controls.Add(CreateNextButton()); pagerRoot.Controls.Add(CreateSeparator()); pagerRoot.Controls.Add(CreateLastButton()); } break; } } }