Пример #1
0
        /// <summary>
        /// 当触发分页控件事件时执行的过程
        /// </summary>
        /// <param name="ty"></param>
        /// <param name="cmdArgs"></param>
        private void DoPageChanged(PageChangedType ty, string cmdArgs)
        {
            int currentPageIdx = CurrentPageIndex;
            int pageCnt        = PageCount;

            int NewPageIndex = CurrentPageIndex;    //设置新页索引

            switch (ty)
            {
            case PageChangedType.atFirst: //如果触发首页按钮事件
                NewPageIndex = 1;         //新页索引设为1
                break;

            case PageChangedType.atPrior:       //如果触发上页按钮事件
                if (currentPageIdx > 1)
                {
                    NewPageIndex = CurrentPageIndex - 1;        //新页索引设为当前页索引减1
                }
                break;

            case PageChangedType.atNext:        //如果触发下页按钮事件
                if (currentPageIdx < pageCnt)
                {
                    NewPageIndex = CurrentPageIndex + 1;        //新页索引设为当前页索引加1
                }
                break;

            case PageChangedType.atLast:        //如果触发末页按钮事件
                NewPageIndex = pageCnt;
                break;

            case PageChangedType.atGo:      //如果触发页导航按钮事件
                int idx = currentPageIdx;
                if (int.TryParse(_txtToPage.Text, out idx))
                {
                    if (idx >= 1 && idx <= pageCnt)
                    {
                        NewPageIndex = idx;     //新页索引等于导航输入框数字
                    }
                }
                break;

            case PageChangedType.atNumeric: //如果触发页码按钮事件
                if (cmdArgs == "back")      //如果触发向后翻页码按钮事件
                {
                    if (NumericPageIndex > 1)
                    {
                        NumericPageIndex--;        //页码按钮页索引减1
                        //根据页码按钮索引设置页索引
                        NewPageIndex = NumericPageIndex * NumericButtonCount;
                    }
                }
                else if (cmdArgs == "front")        //如果触发向前翻页码按钮事件
                {
                    if (NumericPageIndex < NumericPageCount)
                    {
                        NumericPageIndex++;     //页码按钮页索引加1
                        //根据页码按钮索引设置页索引
                        NewPageIndex = (NumericPageIndex - 1) * NumericButtonCount + 1;
                    }
                }
                else      //如果触发页码按钮事件
                {
                    int tmpArgs = Convert.ToInt32(cmdArgs);
                    if (tmpArgs >= 1 && tmpArgs <= RecordCount)
                    {
                        NewPageIndex = tmpArgs;     //设置页索引为页码按钮参数
                    }
                }
                break;
            }

            if (PageChanged != null)                        //加页改变事件不为空
            {
                PageArgs args = new PageArgs(NewPageIndex); //设置页改变事件参数
                PageChanged(this, args);                    //执行页改变事件代码
            }

            CurrentPageIndex = NewPageIndex; //最终确认当前页索引
            CalculateButtonEnable();         //计算按钮只读
            CalculateNumericBtnVisible();    //计算页码按钮可见
            if (_lblPage != null)
            {
                _lblPage.Text = string.Format("第{0}页 / 共{1}页", NewPageIndex, pageCnt);
            }
            if (_txtToPage != null)
            {
                _txtToPage.Text = NewPageIndex.ToString();
            }
            //如果是向前或向后翻页码事件则要重新创建子控件
            if (ty == PageChangedType.atNumeric && (cmdArgs == "back" || cmdArgs == "front"))
            {
                RecreateChildControls();
            }
        }
Пример #2
0
        /// <summary>
        /// 当触发分页控件事件时执行的过程
        /// </summary>
        /// <param name="ty"></param>
        /// <param name="cmdArgs"></param>
        private void DoPageChanged(PageChangedType ty, string cmdArgs)
        {
            int currentPageIdx = CurrentPageIndex;
            int pageCnt = PageCount;

            int NewPageIndex = CurrentPageIndex;    //设置新页索引
            switch (ty)
            {
                case PageChangedType.atFirst:   //如果触发首页按钮事件
                    NewPageIndex = 1;   //新页索引设为1
                    break;
                case PageChangedType.atPrior:   //如果触发上页按钮事件
                    if (currentPageIdx > 1)
                    {
                        NewPageIndex = CurrentPageIndex - 1;    //新页索引设为当前页索引减1
                    }
                    break;
                case PageChangedType.atNext:    //如果触发下页按钮事件
                    if (currentPageIdx < pageCnt)
                    {
                        NewPageIndex = CurrentPageIndex + 1;    //新页索引设为当前页索引加1
                    }
                    break;
                case PageChangedType.atLast:    //如果触发末页按钮事件
                    NewPageIndex = pageCnt;
                    break;
                case PageChangedType.atGo:  //如果触发页导航按钮事件
                    int idx = currentPageIdx;
                    if (int.TryParse(_txtToPage.Text, out idx))
                    {
                        if (idx >= 1 && idx <= pageCnt)
                        {
                            NewPageIndex = idx; //新页索引等于导航输入框数字
                        }
                    }
                    break;
                case PageChangedType.atNumeric: //如果触发页码按钮事件
                    if (cmdArgs == "back")  //如果触发向后翻页码按钮事件
                    {
                        if (NumericPageIndex > 1)
                        {
                            NumericPageIndex--;    //页码按钮页索引减1
                            //根据页码按钮索引设置页索引
                            NewPageIndex = NumericPageIndex * NumericButtonCount;
                        }
                    }
                    else if (cmdArgs == "front")    //如果触发向前翻页码按钮事件
                    {
                        if (NumericPageIndex < NumericPageCount)
                        {
                            NumericPageIndex++; //页码按钮页索引加1
                            //根据页码按钮索引设置页索引
                            NewPageIndex = (NumericPageIndex - 1) * NumericButtonCount + 1;
                        }
                    }
                    else  //如果触发页码按钮事件
                    {
                        int tmpArgs = Convert.ToInt32(cmdArgs);
                        if (tmpArgs >= 1 && tmpArgs <= RecordCount)
                        {
                            NewPageIndex = tmpArgs; //设置页索引为页码按钮参数
                        }
                    }
                    break;
            }

            if (PageChanged != null)    //加页改变事件不为空
            {
                PageArgs args = new PageArgs(NewPageIndex); //设置页改变事件参数
                PageChanged(this, args);    //执行页改变事件代码
            }

            CurrentPageIndex = NewPageIndex;    //最终确认当前页索引
            CalculateButtonEnable();    //计算按钮只读
            CalculateNumericBtnVisible();   //计算页码按钮可见
            if (_lblPage != null)
                _lblPage.Text = string.Format("第{0}页 / 共{1}页", NewPageIndex, pageCnt);
            if (_txtToPage != null)
                _txtToPage.Text = NewPageIndex.ToString();
            //如果是向前或向后翻页码事件则要重新创建子控件
            if (ty == PageChangedType.atNumeric && (cmdArgs == "back" || cmdArgs == "front"))
            {
                RecreateChildControls();
            }
        }