谁能给个用视图解决DataGrid分页的源码,谢谢 我这里只用一个表,所以没有用视图http://blog.csdn.net/zhzuo/category/13485.aspx 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你我的,性能上没测试过,不过绝对能实现分页的各种操作 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; } } 我这个方法主要针对数据量不是很大,而对数据的显示方式要求很高的时候,我当初做这个的时候设这样想的,我感觉由 SQl Server 和 Access 的自动编号产生的序列会因为数据删除而发生断点,这样在分页显示的时候就会遇到一些难题,我想可不可以通过给数据库中数据分配一个连续的序列呢,我想来想去,最终用上面的方法解决了问题,我没有测试过这种方法的性能,但我的数据在1000条以下的时候感觉速度还可以,如果有兴趣的话,大家可以拿更多的数据来测试一下,不过我个人觉得这种方法的性能可能会很低,只供参考 log4net具体怎么用啊?怎么这么迷糊呢? 请问,MouseClick事件怎么不起作用 激光打印机居然打出白色.有xd遇到过这个问题吗 c#字符串加密解密 数据访问层和业务逻辑层 小妹请教:C#中如何把Tab键 关联到回车键的功能 受不了了,一百分求解,DataGrid问题!未将对象引用设置到对象的实例。 *******WinForm中的grid是否可以做成翻页的?******* C# 中两个datagridview数据传递的问题 1万元高价求购OA系统源码 不能新建项目 如何让C#程序在执行中暂停一段时间?
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;
}
}