DatagridView BindingNavigato 实现分页

BindingNavigator: 就是DataGridView控件上面的那个,在工程里名字: bindngrDemo

DataGridView: dgvDemo

BindingSource: 这个其实可以不要 bindseDemo

如下案例

        List<person> personlist =new List<person>();
         int pageSize = 20;
         int pageCount = 0;
        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 112; i++)
            {
                person p = new person();
                p.name = "test" + i.ToString();
                p.age = i;
                personlist.Add(p);
            }
            LoadData(1, dgvDemo);
            bindingNavigatorPositionItem.Enabled = true;
            // Set the status of the BindingNavigator control
            if (pageCount == 0 || pageCount == 1)
            {
                bindngrDemo.MoveFirstItem.Enabled = false;
                bindngrDemo.MoveLastItem.Enabled = false;
                bindngrDemo.MoveNextItem.Enabled = false;
                bindngrDemo.MovePreviousItem.Enabled = false;
            }
            else
            {
                bindngrDemo.MoveFirstItem.Enabled = false;
                bindngrDemo.MoveLastItem.Enabled = true;
                bindngrDemo.MoveNextItem.Enabled = true;
                bindngrDemo.MovePreviousItem.Enabled = false;
                bindngrDemo.PositionItem.Text = "1";
                bindngrDemo.CountItem.Text = "of {" + pageCount.ToString() + "}";
            }    
        }

        private  void LoadData(int pageIndex, DataGridView dgvDemo)
        {
            int Count = personlist.Count();

            if (Count % pageSize == 0)
                pageCount = Count / pageSize;
            else
                pageCount = Count / pageSize + 1;

            List<person> plist = personlist.Skip((pageIndex-1) * pageSize).Take(pageSize).ToList();
           BindingSource bindseDemo = new BindingSource();
           bindseDemo.DataSource = plist;
           dgvDemo.DataSource = bindseDemo;
            
        }


        private void bindingNavigatorMoveFirstItem_Click(object sender, EventArgs e)
        {
            LoadData(1, dgvDemo);
            bindngrDemo.PositionItem.Text = "1";
            bindngrDemo.MoveFirstItem.Enabled = false;
            bindngrDemo.MovePreviousItem.Enabled = false;
            bindngrDemo.MoveNextItem.Enabled = true;
            bindngrDemo.MoveLastItem.Enabled = true;
        }

        private void bindingNavigatorMovePreviousItem_Click(object sender, EventArgs e)
        {
            int currentPage = Convert.ToInt32(bindngrDemo.PositionItem.Text);
            if (currentPage >= 2)
            {
                int page = currentPage - 1;
                bindngrDemo.PositionItem.Text = page.ToString();
                LoadData(page, dgvDemo);
                if (page == 1)
                {
                    bindngrDemo.MovePreviousItem.Enabled = false;
                    bindngrDemo.MoveFirstItem.Enabled = false;
                }
                if (page <= pageCount)
                {
                    bindngrDemo.MoveNextItem.Enabled = true;
                    bindngrDemo.MoveLastItem.Enabled = true;
                }

            }
            else
            {
                MessageBox.Show("This is the first page", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void bindingNavigatorMoveNextItem_Click(object sender, EventArgs e)
        {
            int currentPage = Convert.ToInt32(bindngrDemo.PositionItem.Text);
            if (currentPage < pageCount)
            {
                int page = currentPage + 1;
                bindngrDemo.PositionItem.Text = page.ToString();
                LoadData(page, dgvDemo);
                if (page == pageCount)
                {
                    bindngrDemo.MoveNextItem.Enabled = false;
                    bindngrDemo.MoveLastItem.Enabled = false;
                }
                if (page >= 2)
                {
                    bindngrDemo.MovePreviousItem.Enabled = true;
                    bindngrDemo.MoveFirstItem.Enabled = true;
                }
            }
            else
            {
                MessageBox.Show("This is the last page", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void bindingNavigatorMoveLastItem_Click(object sender, EventArgs e)
        {
            LoadData(pageCount, dgvDemo);
            bindngrDemo.PositionItem.Text = pageCount.ToString();
            bindngrDemo.MoveLastItem.Enabled = false;
            bindngrDemo.MoveNextItem.Enabled = false;
            bindngrDemo.MovePreviousItem.Enabled = true;
            bindngrDemo.MoveFirstItem.Enabled = true;
        }

        private void bindingNavigatorPositionItem_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar >= 48 && e.KeyChar <= 57) || e.KeyChar == 8 || e.KeyChar == 13 || e.KeyChar == 127)
            {
                e.Handled = false;
                if (e.KeyChar == 13)
                {
                    int page=Convert.ToInt16(bindingNavigatorPositionItem.Text);
                    LoadData(page, dgvDemo);
                }
            }
            else
            {
                e.Handled = true;
            }
        }
    }

   public class person
    {
        public string name { get; set; }
        public int age { get; set; }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值