private RepeaterXPagerLinkButton createButton(PagerType pagerType, int pageIndex) { RepeaterXPagerLinkButton btn = new RepeaterXPagerLinkButton(this); switch (pagerType) { case PagerType.First: btn.Text = "首页"; btn.Font.Underline = false; break; case PagerType.Previous: btn.Text = "上一页"; btn.Font.Underline = false; break; case PagerType.Next: btn.Text = "下一页"; btn.Font.Underline = false; break; case PagerType.Last: btn.Text = "末页"; btn.Font.Underline = false; break; case PagerType.Numeric: btn.Text = (pageIndex + 1).ToString(); break; case PagerType.NumericPrevNext: btn.Text = "..."; break; } btn.CommandName = "navigate"; btn.CommandArgument = pageIndex.ToString(); return(btn); }
protected override void OnItemCreated(RepeaterItemEventArgs e) { string prefix = getVariablePrefix(); // repeatX_rptCustomer_CurrDataCount int currDataCount = (int)ViewState[string.Format("{0}CurrDataCount", prefix)]; if (e.Item.ItemType != ListItemType.Footer) { base.OnItemCreated(e); this.LastItemIndex = e.Item.ItemIndex; #region No Data if (e.Item.ItemType == ListItemType.Header && currDataCount == 0) { e.Item.Controls.Add(new LiteralControl(string.Format(@" <tr style=""color:#444; font-size:14px; background-color:white; text-align:left; line-height:22px;""> <td colspan=""200"">{0}</td></tr>", string.IsNullOrEmpty(EmptyDataText) ? "没有找到数据。" : EmptyDataText))); AllowPaging = false; } #endregion return; } if (!AllowPaging) { return; } // 效果: 共180条记录,第1页/共36页,每页15条记录 首页 上一页 ... 1 2 3 4 [5] 6 7 8 9 ... 下一页 末页 转到 e.Item.Controls.Clear(); int dataCount = (int)ViewState[string.Format("{0}DataCount", prefix)]; int currIndex = (int)ViewState[string.Format("{0}CurrIndex", prefix)]; int pageCount = (int)ViewState[string.Format("{0}PageCount", prefix)]; int pageSize = (int)ViewState[string.Format("{0}PageSize", prefix)]; bool isFirstPage = (bool)ViewState[string.Format("{0}IsFirstPage", prefix)]; bool isLastPage = (bool)ViewState[string.Format("{0}IsLastPage", prefix)]; StringBuilder sb = new StringBuilder(); sb.AppendFormat(@" <tr style='background-color:white; font-size:12px'> <td colspan='{0}'> <div class='{1}'>", this.FooterStyle.Colspan, this.FooterStyle.TemplateCssClass); #region Record Info if (this.FooterStyle.ShowRecordInfo) { sb.AppendFormat(@" <span style='width:{0}%; line-height:1.8; text-align:left; float:left; vertical-align:bottom;'> 共<font style='{1}'>{2}</font>条记录, 第<font style='{3}'>{4}</font>页/ 共<font style='{5}'>{6}</font>页, 每页<font style='{7}'>{8}</font>条记录 </span>", (FooterStyle.PagingMode == PagerMode.NextPrevAndNumeric ? 30 : 50), FooterStyle.RecordInfoStyle, dataCount, FooterStyle.RecordInfoStyle, currIndex + 1, FooterStyle.RecordInfoStyle, pageCount, FooterStyle.RecordInfoStyle, pageSize); } #endregion sb.AppendFormat("<span class='{0}' style='float:right; {1}'>\n", this.FooterStyle.PagerCssClass, (!FooterStyle.ShowRecordInfo ? string.Format("width:100%; text-align:center; {0}", this.FooterStyle.PagerStyle) : this.FooterStyle.PagerStyle)); e.Item.Controls.Add(new LiteralControl(sb.ToString())); #region First Prev if (FooterStyle.PagingMode == PagerMode.PrevNext || FooterStyle.PagingMode == PagerMode.NextPrevAndNumeric) { if (!isFirstPage) { e.Item.Controls.Add(createButton(PagerType.First, 0)); e.Item.Controls.Add(new LiteralControl(" \n")); e.Item.Controls.Add(createButton(PagerType.Previous, currIndex - 1)); e.Item.Controls.Add(new LiteralControl(" \n")); } else { e.Item.Controls.Add(new LiteralControl("首页 上一页 \n")); } } #endregion #region Numeric Field // 9 10 11 [12] 13 14 15 if (FooterStyle.PagingMode == PagerMode.Numeric || FooterStyle.PagingMode == PagerMode.NextPrevAndNumeric) { int numCount = this.FooterStyle.NumberCount; if (base.DesignMode) { pageCount = numCount; } int half = numCount / 2; int start = currIndex - half; if (start < 0) { start = 0; } int end = start + numCount; if (end > pageCount - 1) { end = pageCount; if (end > numCount) { start = end - numCount; } } for (; start < end; ++start) { if (start != currIndex) { e.Item.Controls.Add(createButton(PagerType.Numeric, start)); e.Item.Controls.Add(new LiteralControl(" \n")); } else { e.Item.Controls.Add(new LiteralControl(string.Format("[{0}] ", start + 1))); } } e.Item.Controls.Add(new LiteralControl(" ")); } #endregion #region Next Last if (FooterStyle.PagingMode == PagerMode.PrevNext || FooterStyle.PagingMode == PagerMode.NextPrevAndNumeric) { if (!isLastPage) { e.Item.Controls.Add(createButton(PagerType.Next, currIndex + 1)); e.Item.Controls.Add(new LiteralControl(" \n")); e.Item.Controls.Add(createButton(PagerType.Last, pageCount - 1)); e.Item.Controls.Add(new LiteralControl(" ")); } else { e.Item.Controls.Add(new LiteralControl("下一页 末页  \n")); } } #endregion e.Item.Controls.Add(new LiteralControl("\n转到第")); #region TextBox and Button //Regex regex = new Regex(@"(// *.*)*\s+"); // replace white space in foo int itemIndex = LastItemIndex + 2; string itemID = itemIndex < 100 ? itemIndex.ToString("00") : itemIndex.ToString("000"); TextBox txtPageNo = new TextBox(); txtPageNo.ID = "txtGo"; txtPageNo.Text = (currIndex + 1).ToString(); txtPageNo.Attributes.Add("style", "width:18px"); txtPageNo.Attributes.Add("maxlength", "3"); // ON KEY DOWN txtPageNo.Attributes.Add("onkeydown", string.Format("repeatX_txtPageNo_onkeydown(this, '{0}', '{1}')", base.ClientID, itemID)); // ON CHANGE txtPageNo.Attributes.Add("onchange", string.Format("repeatX_txtPageNo_onchange(this, '{0}', '{1}')", base.ClientID, itemID)); // ON PASTE txtPageNo.Attributes.Add("onpaste", "javascript:return false;"); //repeatX_txtPageNo_onpaste() // ON DRAGENTER txtPageNo.Attributes.Add("ondragenter", "javascript:return false;"); // ON FOCUS txtPageNo.Attributes.Add("onfocus", "repeatX_txtPageNo_onfocus(this)"); e.Item.Controls.Add(txtPageNo); e.Item.Controls.Add(new LiteralControl("页\n")); RepeaterXPagerLinkButton btnGo = new RepeaterXPagerLinkButton(this); btnGo.ID = "btnGo"; btnGo.Text = "Go "; btnGo.Attributes.Add("href", string.Format("javascript:__doPostBack('{0}', 'go${1}')", base.ClientID, currIndex + 1)); btnGo.Attributes.Add("style", "color:royalblue; text-decoration:none;"); btnGo.CommandName = "go"; // ON CLICK btnGo.OnClientClick = string.Format("repeatX_btnGo_onclick('{0}', '{1}')", base.ClientID, itemID); e.Item.Controls.Add(btnGo); #endregion e.Item.Controls.Add(new LiteralControl(" \n</span></div>\n</td></tr></table>")); base.OnItemCreated(e); // link javascript file base.Page.ClientScript.RegisterClientScriptResource(GetType(), "BobSystem.Controls.Scripts.repeatX_footer_required.js"); }