我这里只用一个表,所以没有用视图
http://blog.csdn.net/zhzuo/category/13485.aspx

解决方案 »

  1.   

    给你我的,性能上没测试过,不过绝对能实现分页的各种操作
     private void fenye()
            {
                conncetion c = new conncetion();
                OleDbCommand cmd = new OleDbCommand("showworker", c.con());
                cmd.CommandType = CommandType.StoredProcedure;
                OleDbDataAdapter ad = new OleDbDataAdapter("", c.con());
                ad.SelectCommand = cmd;
                DataSet ds = new DataSet();           
                ad.Fill(ds, "雇员信息");
                totalcount = ds.Tables["雇员信息"].Rows.Count;//记录总数            
                totalpage = totalcount / pagesize+1;//计算页面总数,页面总数不能为0,所以+1
                DataColumn mydc = new DataColumn();
                mydc.ColumnName = "显示编号";
                mydc.DataType = System.Type.GetType("System.Int32");            
                ds.Tables["雇员信息"].Columns.Add(mydc);            
                for (int i = 0; i < totalcount; i++)
                {
                    ds.Tables["雇员信息"].Rows[i]["显示编号"] = i + 1;
                } 
                mydc.ReadOnly = true;
                label1.Text = "当前公司员工总数为:" + totalcount + "位";
                label15.Text = "每页显示" + pagesize + "条记录,共" + totalpage + "页\n\n您当前查看的是第"+currentpage+"页";
                DataView dv = new DataView();
                dv = ds.Tables["雇员信息"].DefaultView;
                int lastid = (currentpage - 1) * pagesize;
                int nextid=currentpage*pagesize;
                dv.RowFilter = "显示编号 > '"+lastid+"' AND 显示编号 <= '"+nextid+"'";
                dataGridView1.DataSource = dv;
                dataGridView1.Update();
                if (totalpage == 1)
                {
                    button5.Enabled = false;
                    button6.Enabled = false;
                }
            }
      

  2.   

    我这个方法主要针对数据量不是很大,而对数据的显示方式要求很高的时候,我当初做这个的时候设这样想的,我感觉由 SQl Server 和 Access 的自动编号产生的序列会因为数据删除而发生断点,这样在分页显示的时候就会遇到一些难题,我想可不可以通过给数据库中数据分配一个连续的序列呢,我想来想去,最终用上面的方法解决了问题,我没有测试过这种方法的性能,但我的数据在1000条以下的时候感觉速度还可以,如果有兴趣的话,大家可以拿更多的数据来测试一下,不过我个人觉得这种方法的性能可能会很低,只供参考