zoukankan      html  css  js  c++  java
  • datagridview 控件手动代码分页

    //注:要进行分页的实体类对象都要实现IPage接口方可使用

    public interface IPage
        {
            string[] Export();
        }


        public class PaginManager
        {
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="dataGridView">绑定的datagrodview控件</param>
            /// <param name="list">全部的集合</param>
            /// <param name="isShowNum">是否要显示序列号</param>
            /// <param name="isShowId">是否要显示的Id号</param>
            /// <param name="SumMax">每页限制数</param>
            /// <param name="pageSum">总页数</param>
            /// <param name="numMax">总条数</param>
            /// <param name="pageIndex">当前页</param>
            /// <param name="numSum">每页的记录数</param>
            public PaginManager(DataGridViewX dataGridView, List<IPage> list, bool isShowNum, bool isShowId, int SumMax, LabelX pageSum, LabelX numMax, TextBoxX pageIndex, TextBoxX numSum)
                : this(dataGridView, list, isShowNum, isShowId, SumMax, pageSum, numMax, pageIndex, numSum, null) { }

            /// <summary>
            /// 还有查询接口的构造函数
            /// </summary>
            /// <param name="dataGridView">绑定的datagrodview控件</param>
            /// <param name="list">全部的集合</param>
            /// <param name="isShowNum">是否要显示序列号</param>
            /// <param name="isShowId">是否要显示的Id号</param>
            /// <param name="SumMax">每页限制数</param>
            /// <param name="pageSum">总页数</param>
            /// <param name="numMax">总条数</param>
            /// <param name="pageIndex">当前页</param>
            /// <param name="numSum">每页的记录数</param>
            /// <param name="isearch">查询接口</param>
            public PaginManager(DataGridViewX dataGridView, List<IPage> list, bool isShowNum, bool isShowId, int SumMax, LabelX pageSum, LabelX numMax, TextBoxX pageIndex, TextBoxX numSum, ISearch isearch)
            {
                numSumMax = SumMax;
                lblNumMax = numMax;
                lblPageSum = pageSum;
                txtNumSum = numSum;
                txtPageIndex = pageIndex;
                dgv = dataGridView;
                isNum = isShowNum;
                isID = isShowId;
                iSearch = isearch;
                InitPaging(list);
            }

            public PaginManager(IPageForm ipageForm) : this(ipageForm, null) { }

            public PaginManager(IPageForm ipageForm, ISearch isearch)
            {
                numSumMax = ipageForm.SumMax;
                lblNumMax = ipageForm.numMax;
                lblPageSum = ipageForm.pageSum;
                txtNumSum = ipageForm.numSum;
                txtPageIndex = ipageForm.pageIndex;
                dgv = ipageForm.dataGridView;
                InitPaging(ipageForm.list);
                isNum = ipageForm.num;
                isID = ipageForm.id;
                iSearch = isearch;
            }

            /// <summary>
            /// 需要绑定的DataGridView
            /// </summary>
            public DataGridViewX dgv;
            /// <summary>
            /// 需要显示的总页数控件
            /// </summary>
            public LabelX lblPageSum;
            /// <summary>
            /// 需要显示的总条数控件
            /// </summary>
            public LabelX lblNumMax;
            /// <summary>
            /// 需要显示的当前页数控件
            /// </summary>
            public TextBoxX txtPageIndex;
            /// <summary>
            /// 需要显示的每页条数控件
            /// </summary>
            public TextBoxX txtNumSum;

            /// <summary>
            /// 查询接口
            /// </summary>
            public ISearch iSearch;
            /// <summary>
            /// 全部的集合
            /// </summary>
            public List<IPage> allList;
            /// <summary>
            /// 被筛选的结果
            /// </summary>
            public List<IPage> listItemIndex;
            /// <summary>
            /// 查询的结果集
            /// </summary>
            public List<IPage> listItem;

            /// <summary>
            /// 是否需要显示序列
            /// </summary>
            public bool isNum;
            /// <summary>
            /// 是否需要显示ID
            /// </summary>
            public bool isID;
            /// <summary>
            /// 当前页
            /// </summary>
            public int pageIndex;
            /// <summary>
            /// 总页数
            /// </summary>
            public int pageSum;
            /// <summary>
            /// 每页条数
            /// </summary>
            public int numSum;
            /// <summary>
            /// 记录条数
            /// </summary>
            public int numMax;
            /// <summary>
            /// 每页条数的限制数
            /// </summary>
            public int numSumMax;

            /// <summary>
            /// 当前页临时变量
            /// </summary>
            public int pageIndexN;
            /// <summary>
            /// 每页条数临时变量
            /// </summary>
            private int numSumN;


            private int n;


            /// <summary>
            /// int.TryParse 临时变量
            /// </summary>
            private int t;

            /// <summary>
            /// 初始化数据
            /// </summary>
            public void InitPaging(List<IPage> list)
            {
                allList = list;//全部的集合     *TAT*
                listItem = allList;//初始显示的集合就是全部,如果默认不是,请做筛选     *TAT*
                pageIndexN = 1;//默认当前页
                BindPagingLBL();
                BindPaging();
            }
            /// <summary>
            /// 绑定DataGridView数据
            /// </summary>
            private void BindPaging()//绑定数据显示
            {
                if (listItem == null || listItem.Count == 0)//账号作业出错时临时添加的---陈苹
                {
                    dgv.Rows.Clear();
                    lblPageSum.Text = "/" + 1;
                    lblNumMax.Text = "/ " + 1;//数据刷新,求稳定,可删
                    return;
                }
                dgv.Rows.Clear();//清空数据     *TAT*
                DataGridViewRow row;
                IPage item;
                string[] items;
                int initItemI = isID ? 0 : 1;
                for (int n = 0, i = (pageIndex - 1) * numSum; i < numMax && n < numSum; i++, n++)//n为计数器
                {
                    item = listItem[i];
                    row = new DataGridViewRow();
                    items = item.Export();
                    if (isNum)
                    {
                        row.Cells.Add(new DataGridViewTextBoxCell//非数据,排版ID
                        {
                            Value = i + 1
                        });
                    }
                    for (int itemI = initItemI; itemI < items.Length; itemI++)
                    {
                        row.Cells.Add(new DataGridViewTextBoxCell//数据     *TAT*
                        {
                            Value = items[itemI]

                        });
                    }
                    row.Tag = item;//Tag 方便操作
                    dgv.Rows.Add(row);//添加行     *TAT*
                }
                lblNumMax.Text = "/ " + listItem.Count;//数据刷新,求稳定,可删
            }
            /// <summary>
            /// 绑定文字显示
            /// </summary>
            private void BindPagingLBL()
            {
                if (listItem == null || listItem.Count == 0) return;
                numMax = listItem.Count;//筛选之后的数据数量

                //进行判断,非数字
                numSum = int.Parse(txtNumSum.Text);//界面填写每页显示数
                pageIndex = int.Parse(txtPageIndex.Text);//当前页
                //结束判断

                if (numSum != 0)
                {
                    pageSum = numMax / numSum + ((numMax % numSum == 0) ? 0 : 1);//计算总页数
                    lblPageSum.Text = "/ " + pageSum;//显示总页数
                    lblNumMax.Text = "/ " + numMax;//显示总条数
                }
                else
                {
                    lblPageSum.Text = "/ 0";
                    lblNumMax.Text = "/ 0";
                }
            }

            /// <summary>
            /// 首页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void lblFirst_Click(object sender, EventArgs e)
            {
                if (txtPageIndex.Text == "1" || txtPageIndex.Text == "0")
                {
                    return;
                }
                txtPageIndex.Text = "1";
                BindPagingLBL();
                BindPaging();
            }
            /// <summary>
            /// 上一页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void lblPageUp_Click(object sender, EventArgs e)
            {
                if (txtPageIndex.Text == "1" || txtPageIndex.Text == "0")
                {
                    return;
                }
                txtPageIndex.Text = int.Parse(txtPageIndex.Text) - 1 + "";
                BindPagingLBL();
                BindPaging();
            }
            /// <summary>
            /// 下一页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void lblPageDown_Click(object sender, EventArgs e)
            {
                if (int.Parse(txtPageIndex.Text) > pageSum || pageSum == 0)
                {
                    return;
                }
                txtPageIndex.Text = int.Parse(txtPageIndex.Text) + 1 + "";
                BindPagingLBL();
                BindPaging();
            }
            /// <summary>
            /// 末页
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void lblLast_Click(object sender, EventArgs e)
            {
                if (int.Parse(txtPageIndex.Text) > pageSum || pageSum == 0)
                {
                    return;
                }
                txtPageIndex.Text = pageSum.ToString();
                BindPagingLBL();
                BindPaging();
            }
            /// <summary>
            /// 当前页数文本框 TextChanged
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void txtPageIndex_TextChanged(object sender, EventArgs e)
            {
                int textPosition = txtPageIndex.SelectionStart;
                if (txtPageIndex.Text == "")
                {
                    return;
                }
                if (int.TryParse(txtPageIndex.Text, out t))
                {
                    pageIndexN = t;
                    return;
                }
                txtPageIndex.Text = pageIndexN.ToString();
                if (textPosition - 1 < txtPageIndex.Text.Length)
                {
                    txtPageIndex.SelectionStart = textPosition - 1;
                }
                else
                {
                    txtPageIndex.SelectionStart = txtPageIndex.Text.Length;
                }
            }
            /// <summary>
            /// 每页条数文本框 TextChanged
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void txtNumSum_TextChanged(object sender, EventArgs e)
            {
                int textPosition = txtNumSum.SelectionStart;
                if (txtNumSum.Text == "")
                {
                    return;
                }
                if (int.TryParse(txtNumSum.Text, out t))
                {
                    numSumN = t;
                    return;
                }
                txtNumSum.Text = numSumN.ToString();
                if (textPosition - 1 < txtNumSum.Text.Length)
                {
                    txtNumSum.SelectionStart = textPosition - 1;
                }
                else
                {
                    txtNumSum.SelectionStart = txtNumSum.Text.Length;
                }
            }
            /// <summary>
            /// 当前页数文本框 Leave
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void txtPageIndex_Leave(object sender, EventArgs e)
            {
                int num=0;
                if (int.TryParse(txtPageIndex.Text, out num) && num != 0)
                {
                    if (num > pageSum)
                    {
                        txtPageIndex.Text = pageSum.ToString();
                    }
                    else
                    {
                        txtPageIndex.Text = num.ToString();
                    }
                }
                else
                {
                    txtPageIndex.Text = "1";
                }
                BindPagingLBL();
                BindPaging();

            }
            /// <summary>
            /// 每页条数文本框 Leave
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void txtNumSum_Leave(object sender, EventArgs e)
            {
                n = int.Parse(txtNumSum.Text);
                if (n > numMax || n > numSumMax)
                {
                    txtNumSum.Text = (numMax > numSumMax) ? numSumMax.ToString() : numMax.ToString();//设置每页最大值
                }
                if (n == 0)
                {
                    txtNumSum.Text = "1";
                }
                txtPageIndex.Text = "1";
                BindPagingLBL();
                BindPaging();
            }
            /// <summary>
            /// 当前页数文本框 KeyDown
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void txtNumSum_KeyDown(object sender, KeyEventArgs e)
            {
                switch (e.KeyCode)
                {
                    case Keys.Up:
                        e.Handled = true;
                        n = int.Parse(txtNumSum.Text) + 1;
                        if (n > numMax || n > numSumMax)
                        {
                            txtNumSum.Text = (numMax > numSumMax) ? numSumMax.ToString() : numMax.ToString();//设置每页最大值
                            break;
                        }
                        txtNumSum.Text = n.ToString();
                        txtNumSum.SelectionStart = txtNumSum.Text.Length;
                        break;
                    case Keys.Down:
                        e.Handled = true;
                        n = int.Parse(txtNumSum.Text) - 1;
                        txtNumSum.Text = (n < 1) ? "1" : n.ToString();
                        txtNumSum.SelectionStart = txtNumSum.Text.Length;
                        break;
                    case Keys.Enter:
                        txtNumSum_Leave(sender, null);
                        break;
                }
            }
            /// <summary>
            /// 每页条数文本框 KeyDown
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void txtPageIndex_KeyDown(object sender, KeyEventArgs e)
            {
                switch (e.KeyCode)
                {
                    case Keys.Up:
                        e.Handled = true;
                        lblPageUp_Click(sender, null);
                        txtPageIndex.SelectionStart = txtPageIndex.Text.Length;
                        break;
                    case Keys.Down:
                        e.Handled = true;
                        lblPageDown_Click(sender, null);
                        txtPageIndex.SelectionStart = txtPageIndex.Text.Length;
                        break;
                    case Keys.Enter:
                        txtPageIndex_Leave(sender, null);
                        break;
                }
            }
            /// <summary>
            /// 查询按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            public void btnSearch_Click(object sender, EventArgs e)//查询
            {
                listItemIndex = iSearch.Search(allList);
                this.selectItemSelection(listItemIndex);
            }

            #region ISelection 成员

            public List<IPage> GetListOrder()//传输被筛选的结果
            {
                return allList;
            }

            public void selectItemSelection(List<IPage> listItem)//调用方法搜索
            {
                this.listItem = listItem;
                txtPageIndex.Text = "1";
                BindPagingLBL();
                BindPaging();
            }

            #endregion
        }

  • 相关阅读:
    Object.assign
    js获取 some方法索引值
    Vue配置sass
    spring MVC,controller中获得resuqest和response的方式
    CentOS7中启动Tomcat后,8080端口不能被外部访问的解决办法。
    spring mvc 中 controller 路径配置
    Spring扫面路径配置不全导致异常 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): 的原因
    CentOS7中安装MySQL5.7
    eclipse maven web
    用Eclipse进行远程Debug代码
  • 原文地址:https://www.cnblogs.com/chenping/p/1911109.html
Copyright © 2011-2022 走看看