用代码说废话之--实现ADO.NET Entity Framework 的数据分页
来源:互联网 发布:河南智网网络 编辑:程序博客网 时间:2024/05/29 04:45
//该分页类简单的实现了ADO.NET Entity Framework 的数据分页,你可以继续改进该代码
//作者:黄颢鹏,Email:anh3000@qq.com,转载请注作者名
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Entity;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using System.Data.Common;
namespace MyData
{
public class 分页类
{
//作者:黄颢鹏,Email:anh3000@qq.com,转载请注作者名
//*分页代码
private Boolean 上一页有效性1 = false;
public Boolean 上一页有效性
{
set
{
this.上一页有效性1 = value;
}
get
{
return this.上一页有效性1;
}
}
private Boolean 下一页有效性1 = false;
public Boolean 下一页有效性
{
set
{
this.下一页有效性1 = value;
}
get
{
return this.下一页有效性1;
}
}
private int 上一页跳过数1 = 0;
public int 上一页跳过数
{
set
{
this.上一页跳过数1 = value;
}
get
{
return this.上一页跳过数1;
}
}
private int 下一页跳过数1 = 0;
public int 下一页跳过数
{
set
{
this.下一页跳过数1 = value;
}
get
{
return this.下一页跳过数1;
}
}
private int 记录总数1 = 0;
public int 记录总数
{
set
{
this.记录总数1 = value;
}
get
{
return this.记录总数1;
}
}
private int 总页数1 = 0;
public int 总页数
{
set
{
this.总页数1 = value;
}
get
{
return this.总页数1;
}
}
private int 每页记录数1 = 25;
public int 每页记录数
{
set
{
this.每页记录数1 = value;
}
get
{
return this.每页记录数1;
}
}
private int 当前页1 = 0;
public int 当前页
{
set
{
this.当前页1 = value;
}
get
{
return this.当前页1;
}
}
private string 查询SQL1 = string.Empty;
public string 查询SQL
{
set
{
this.查询SQL1 = value;
}
get
{
return this.查询SQL1;
}
}
//以下为操作函数
public void 获得总页数()
{
this.总页数 = 0;
this.当前页 = 0;
this.记录总数 = 0;
string esql1 = this.查询SQL;
xingshaisystemEntities db = new xingshaisystemEntities();
string esql2 = esql1.Replace("select c.[医院名]", "select value count(c.[医院名]) ");
ObjectQuery<int> query = db.CreateQuery<int>(esql2);
this.记录总数 = Convert.ToInt16(query.First().ToString());
int numok = Convert.ToInt16(this.记录总数 / this.每页记录数);
if ((numok * this.每页记录数) == this.记录总数)
{
this.总页数 = numok;
}
else
{
this.总页数 = numok + 1;
}
下一页有效性 = false;
下一页有效性 = false;
}
public BindingSource 第一页数据源()
{
string 分页sql = string.Empty;
this.当前页 = 1;
上一页跳过数 = 0;
if (this.总页数 != 1 && this.总页数 != 0)
{
分页sql = " order by c.[拼音码] skip 0 limit " + this.每页记录数.ToString();
下一页跳过数 = 每页记录数;
下一页有效性 = true;
上一页有效性 = false;
}
else
{
下一页跳过数 = 0;//只有一页
下一页有效性 = false;
下一页有效性 = false;
}
string esql1 = this.查询SQL + 分页sql;
BindingSource bindingSource1 = new BindingSource();
xingshaisystemEntities db = new xingshaisystemEntities();
ObjectQuery<DbDataRecord> query2 = db.CreateQuery<DbDataRecord>(esql1);
bindingSource1.DataSource = query2;
return bindingSource1;
}
private int 按键次数 = 0;
public BindingSource 上一页数据源()
{
string 分页sql = string.Empty;
BindingSource bindingSource1 = new BindingSource();
if (当前页 > 1)
{
下一页有效性 = true;
if (按键次数 == 0)
{
上一页跳过数 = 下一页跳过数 - this.每页记录数 * 2;
}
else
{
上一页跳过数 = 下一页跳过数 - this.每页记录数;
}
下一页跳过数 = 下一页跳过数 - this.每页记录数;
当前页--;
if (当前页 == 1)
{
上一页有效性 = false;
}
分页sql = " order by c.[拼音码] skip " + 上一页跳过数.ToString() + " limit " + this.每页记录数.ToString();
string esql1 = this.查询SQL + 分页sql;
xingshaisystemEntities db = new xingshaisystemEntities();
ObjectQuery<DbDataRecord> query2 = db.CreateQuery<DbDataRecord>(esql1);
bindingSource1.DataSource = query2;
}
return bindingSource1;
}
public BindingSource 下一页数据源()
{
按键次数 = 0;
string 分页sql = string.Empty;
BindingSource bindingSource1 = new BindingSource();
if (this.总页数 != 1 && this.总页数 != 0)
{
上一页有效性 = true;
分页sql = " order by c.[拼音码] skip " + 下一页跳过数.ToString() + " limit " + this.每页记录数.ToString();
string esql1 = this.查询SQL + 分页sql;
当前页++;
if (当前页 == 总页数)
{
下一页有效性 = false;
}
xingshaisystemEntities db = new xingshaisystemEntities();
ObjectQuery<DbDataRecord> query2 = db.CreateQuery<DbDataRecord>(esql1);
bindingSource1.DataSource = query2;
下一页跳过数 = 下一页跳过数 + this.每页记录数;
}
return bindingSource1;
}
public BindingSource 翻页数据源(int 翻页)
{
string 分页sql = string.Empty;
当前页 = 翻页;
BindingSource bindingSource1 = new BindingSource();
if (总页数>1)
{
分页sql = " order by c.[拼音码] skip " + ((翻页-1) * this.每页记录数).ToString() + " limit " + this.每页记录数.ToString();
string esql1 = this.查询SQL + 分页sql;
xingshaisystemEntities db = new xingshaisystemEntities();
ObjectQuery<DbDataRecord> query2 = db.CreateQuery<DbDataRecord>(esql1);
bindingSource1.DataSource = query2;
if (翻页 == 总页数)
{
下一页有效性 = false;
}
else
{
下一页跳过数 = (翻页 - 1) * this.每页记录数 + this.每页记录数;
下一页有效性 = true;
}
if (翻页 == 1)
{
上一页有效性 = false;
}
else
{
上一页跳过数 = (翻页 - 1) * this.每页记录数 - this.每页记录数;
上一页有效性 = true;
}
}
return bindingSource1;
}
//*分页代码
}
}
//如何使用分页类代码
public MyData.分页类<你要查询的类> db = new 分页类<你要查询的类>();
public DataGridView dataGridView2;
public void 查询(ref DataGridView dataGridView1)
{
db.查询SQL = this.查询SQL;
db.获得总页数();
dataGridView1.DataSource = db.第一页数据源();
page_num.Text = db.每页记录数.ToString() + "/" + db.总页数.ToString();
当前页.Text = db.当前页.ToString();
this.num.Text = db.记录总数.ToString();
if (!db.下一页有效性)
{
this.下一页.Enabled = false;
}
else
{
this.下一页.Enabled = true;
}
if (!db.上一页有效性)
{
this.上一页.Enabled = false;
}
else
{
this.上一页.Enabled = true;
}
dataGridView2 = dataGridView1;
翻页.Items.Clear();
if (this.下一页.Enabled)
{
for (int i = 1; i <db.总页数+1; i++)
{
翻页.Items.Add(i);
}
}
}
private void 下一页_Click(object sender, EventArgs e)
{
dataGridView2.DataSource = db.下一页数据源();
当前页.Text = db.当前页.ToString();
if (!db.下一页有效性)
{
this.下一页.Enabled = false;
}
this.上一页.Enabled = true;
}
private void 上一页_Click(object sender, EventArgs e)
{
dataGridView2.DataSource = db.上一页数据源();
当前页.Text = db.当前页.ToString();
if (!db.上一页有效性)
{
this.上一页.Enabled = false;
}
this.下一页.Enabled = true;
}
private void 翻页_SelectedIndexChanged(object sender, EventArgs e)
{
dataGridView2.DataSource = db.翻页数据源(Convert.ToInt16(翻页.Text.Trim()));
当前页.Text = db.当前页.ToString();
if (!db.下一页有效性)
{
this.下一页.Enabled = false;
}
else
{
this.下一页.Enabled = true;
}
if (!db.上一页有效性)
{
this.上一页.Enabled = false;
}
else
{
this.上一页.Enabled = true;
}
}
- 用代码说废话之--实现ADO.NET Entity Framework 的数据分页
- 网站分页功能的实现(Entity Framework和ADO.NET两种综述)
- Asp.Net Ajax+WCF Service+ADO.NET Entity Framework实现数据列表,数据筛选,分页,排序,删除
- ADO.NET Entity Framework 之“无法加载指定的元数据资源。”
- Jquery Pagination Ajax 分页实例 For ASP.NET MVC3(用Ado.Net Entity Framework作数据操作)
- Entity FrameWork实现增、删、改、分页的数据层代码实现
- ADO.NET Entity Framework之esql 语法
- ADO.NET Entity Framework之ObjectQuery对象
- ADO.NET Entity Framework
- ADO.NET Entity Framework
- ADO.NET Entity Framework
- ADO.NET Entity FrameWork
- ADO.NET Entity Framework与ADO.NET的区别
- ADO.NET Entity Framework与ADO.NET的区别
- Entity Framework介绍更多»Entity Framework的全称是ADO.NET Entity Framework,
- 关注ADO.NET Entity Framework
- Mysql ADO.NET Entity Framework
- (转)ADO.NET entity framework
- oracle数据导入导出,客户端
- MySQL实用命令
- 利用底层键盘钩子拦载任意按键(回调版)
- aslkdfjklasf
- svm的使用
- 用代码说废话之--实现ADO.NET Entity Framework 的数据分页
- 几句话
- [翻译]ActionScript 3 Jpeg Encoder实例:保存flash中的图片 - [flash开发]
- 图片加水印
- 比较操作符和逻辑操作符 / 三元操作符 “?:”
- js获取浏览器高度和宽度值(多浏览器)
- XP下Redhat linux AS 5 硬盘安装详解
- SQL修改字段默認值方法
- 关于tomcat 报错 找不到oracle.jdbc.driver.OracleDriver 的解决办法