コード例 #1
0
        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);
        }
コード例 #2
0
        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;'>&nbsp;&nbsp;
  共<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("&nbsp;&nbsp;\n"));

                    e.Item.Controls.Add(createButton(PagerType.Previous, currIndex - 1));
                    e.Item.Controls.Add(new LiteralControl("&nbsp;&nbsp;\n"));
                }
                else
                {
                    e.Item.Controls.Add(new LiteralControl("首页&nbsp;&nbsp;上一页&nbsp;&nbsp;\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("&nbsp;\n"));
                    }
                    else
                    {
                        e.Item.Controls.Add(new LiteralControl(string.Format("[{0}]&nbsp;&nbsp;", start + 1)));
                    }
                }
                e.Item.Controls.Add(new LiteralControl("&nbsp;"));
            }
            #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("&nbsp;&nbsp;\n"));

                    e.Item.Controls.Add(createButton(PagerType.Last, pageCount - 1));
                    e.Item.Controls.Add(new LiteralControl("&nbsp;&nbsp;&nbsp;"));
                }
                else
                {
                    e.Item.Controls.Add(new LiteralControl("下一页&nbsp;&nbsp;末页&nbsp;&nbsp;&nbsp\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&nbsp;&nbsp;";
            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("&nbsp;&nbsp;\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");
        }