0
点赞
收藏
分享

微信扫一扫

CSwinform程序分页

CSwinform程序分页_当前页

 

 

/// <summary>
/// 通用数据分页类
/// </summary>
public class SqlDataPager
{
#region 一般属性

/// <summary>
/// 每页显示的条数
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 需要显示的字段(以逗号分隔 )
/// </summary>
public string FiledName { get; set; }
/// <summary>
/// 表的名称
/// </summary>
public string TableName { get; set; }
/// <summary>
/// 查询条件
/// </summary>
public string Condition { get; set; }
/// <summary>
/// 表的主键或唯一键
/// </summary>
public string PrimaryKey { get; set; }
/// <summary>
/// 当前页码
/// </summary>
public int CurrentPage { get; set; }
/// <summary>
/// 排序条件
/// </summary>
public string Sort { get; set; }

#endregion

#region 只读属性

/// <summary>
/// 记录的总数【不能直接赋值】
/// </summary>
// public int RecordCount { get; set; }//此中手设计不安全
private int recordCount;
public int RecordCount//设置只读属性,外面不能直接赋值
{
get { return recordCount; }
}
/// <summary>
/// 总页数
/// </summary>
public int TotalPages
{
get
{
if (recordCount != 0)//如果查询记录总数不为0
{
if (recordCount % PageSize != 0)
{
return recordCount / PageSize + 1;
}
else
{
return recordCount / PageSize;
}
}
else
{
this.CurrentPage = 1;//如果查询没有数据,则当前页码需要复位
return 0;
}
}
}
#endregion

//分页查询方法所用的SQL语句
private string GetPagedSQL()
{
//计算需要过滤的总数
string filterCount = (PageSize * (CurrentPage - 1)).ToString();
//组合SQL语句
string sql = "select Top {0} {1} from {2} where {3} and {4} not in ";
sql += "(select Top {5} {6} from {7} where {8} order by {9} ) order by {10};";
sql += "select count(*) from {11} where {12}";
sql = string.Format(sql, PageSize, FiledName, TableName, Condition,
PrimaryKey, filterCount, PrimaryKey, TableName, Condition, Sort, Sort, TableName, Condition);
return sql;
}
/// <summary>
/// 执行分页查询,返回DataTable
/// </summary>
/// <returns></returns>
public DataTable GetPagedData()
{
//【1】执行查询,返回分页后的结果集
DataSet ds = SQLHelper.GetDataSet(GetPagedSQL());
//【2】获取满足记录的总数
this.recordCount = Convert.ToInt32(ds.Tables[1].Rows[0][0]);
return ds.Tables[0];
}
}

  

public partial class FrmDataPager : Form
{
private SqlDataPager objPager = null;
public FrmDataPager()
{
InitializeComponent();
this.dtpBirthday.Text = "1988-1-1";

//初始化数据分页对象
objPager = new SqlDataPager()
{
PrimaryKey = "StudentId",//表的主键
TableName = "Students",
FiledName = "StudentId,StudentName,Gender,Birthday,PhoneNumber",
CurrentPage = 1,
Sort = "StudentId ASC"//排序条件
};

//设置默认的显示条数
this.cboRecordList.SelectedIndex = 1;
this.dgvStudentList.AutoGenerateColumns = false;

//禁用相关按钮
this.btnFirst.Enabled = false;
this.btnNext.Enabled = false;
this.btnPre.Enabled = false;
this.btnLast.Enabled = false;
this.btnToPage.Enabled = false;
}
//执行查询的公共方法
private void Query()
{
//开启所有按钮
this.btnFirst.Enabled = true;
this.btnNext.Enabled = true;
this.btnPre.Enabled = true;
this.btnLast.Enabled = true;
this.btnToPage.Enabled = true;

//【1】设置分页查询的条件
objPager.Condition = string.Format("Birthday>'{0}'", this.dtpBirthday.Text);
//【2】设置每页显示的条数
objPager.PageSize = Convert.ToInt32(this.cboRecordList.Text.Trim());
//【3】执行查询
this.dgvStudentList.DataSource = objPager.GetPagedData();
//【4】显示记录总数、显示总页数、显示当前页码
this.lblRecordsCount.Text =objPager.RecordCount.ToString ();
this.lblPageCount.Text = objPager.TotalPages.ToString();
if (this.lblPageCount.Text == "0")
{
this.lblCurrentPage.Text = "0";
}
else
{
this.lblCurrentPage.Text = objPager.CurrentPage.ToString();
}

//禁用按钮的情况
if (this.lblPageCount.Text == "0" || this.lblPageCount.Text == "1")
{
this.btnFirst.Enabled = false;
this.btnNext.Enabled = false;
this.btnPre.Enabled = false;
this.btnLast.Enabled = false;
this.btnToPage.Enabled = false;
}
else
{
this.btnToPage.Enabled = true;
}
}


//提交查询
private void btnQuery_Click(object sender, EventArgs e)
{
objPager.CurrentPage = 1;//每次执行查询都要设置为第1页
Query();
this.btnPre.Enabled = false;
this.btnFirst.Enabled = false;
}
//第1页
private void btnFirst_Click(object sender, EventArgs e)
{
objPager.CurrentPage = 1;
Query();
this.btnPre.Enabled = false;
this.btnFirst.Enabled = false;
// btnQuery_Click(null, null);//可以直接调用上面的事件
}
//下一页
private void btnNext_Click(object sender, EventArgs e)
{
objPager.CurrentPage += 1;
Query();
//当执行到最后一页的时候应该禁用最后一页和下一页的按钮
if (objPager.CurrentPage == objPager.TotalPages)
{
this.btnNext.Enabled = false;
this.btnLast.Enabled = false;
}
}
//上一页
private void btnPre_Click(object sender, EventArgs e)
{
objPager.CurrentPage -= 1;
Query();
if (objPager.CurrentPage == 1)
{
this.btnPre.Enabled = false;
this.btnFirst.Enabled = false;
}
}
//最后一页
private void btnLast_Click(object sender, EventArgs e)
{
objPager.CurrentPage = objPager.TotalPages;
Query();
this.btnNext.Enabled = false;
this.btnLast.Enabled = false;
}
//跳转到
private void btnToPage_Click(object sender, EventArgs e)
{
if (this.txtToPage.Text.Trim().Length == 0)
{
MessageBox.Show("请输入要跳转的页码!","信息提示");
this.txtToPage.Focus();
return;
}
//使用正则表达式验证必须为大于0的正整数...
int toPage = Convert.ToInt32(this.txtToPage.Text.Trim());
if (toPage > objPager.TotalPages)
{
MessageBox.Show("跳转的页数不能大于数据总页数!","信息提示");
this.txtToPage.Focus();
this.txtToPage.SelectAll();
return;
}
//开始跳转页数
objPager.CurrentPage = toPage;
Query();
if (objPager.CurrentPage == 1)
{
this.btnPre.Enabled = false;
this.btnFirst.Enabled = false;
}
else if (objPager.CurrentPage == objPager.TotalPages)
{
this.btnNext.Enabled = false;
this.btnLast.Enabled = false;
}
}
//关闭窗口
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
}
}

  带参数的分装:

public class SqlDataPager
{
public SqlDataPager() { }
/// <summary>
/// 每页显示的条数
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 总页数
/// </summary>
public int TotalPages
{
get
{
if (RecordsCount != 0)
{
if (RecordsCount % PageSize != 0)
return RecordsCount / PageSize + 1;
else
return RecordsCount / PageSize;
}
else
{
this.CurrentPageIndex = 1;//设置默认页
return 0;
}
}
}
/// <summary>
/// 记录总数
/// </summary>
public int RecordsCount { get; set; }
/// <summary>
/// 当前页的页码
/// </summary>
public int CurrentPageIndex { get; set; }
/// <summary>
/// 获取分页的SQL语句
/// </summary>
private string GetPagedSQL()
{
//组合SQL语句
string sql =
"Select Top (@PageSize) StudentId,StudentName,Gender,Birthday,PhoneNumber from Students " +
"where Birthday>@Birthday and StudentId not in" +
" (Select Top (@filterCount) StudentId from Students where Birthday>@Birthday order by StudentId ASC)" +
"order by StudentId ASC;" +
"select count(*) from Students where Birthday>@Birthday";
return sql;
}
/// <summary>
/// 执行分页查询,返回DataTable
/// </summary>
/// <returns></returns>
public DataTable GetPagedData(string birthday)
{
//封装查询需要的参数
SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@PageSize",this.PageSize),
new SqlParameter("@filterCount",(PageSize * (CurrentPageIndex - 1))),
new SqlParameter("@Birthday",birthday)
};
//执行查询
DataSet ds = SQLHelper.GetDataSet(this.GetPagedSQL(), param);
//获取满足条件的记录总数
this.RecordsCount = Convert.ToInt32(ds.Tables[1].Rows[0][0]);
//返回数据列表
return ds.Tables[0];
}
}

  

private static string connString = "Server=.;DataBase=DataPagerDB;Uid=sa;Pwd=password01!";

/// <summary>
/// 执行Insert、Update、Delete操作
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int Update(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 执行返回单一结果的查询
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object GetSingleResult(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 返回只读数据集的查询
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static SqlDataReader GetReader(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
conn.Close();
throw ex;
}
}
/// <summary>
/// 返回DataSet数据集
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataSet GetDataSet(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
//创建数据适配器(数据传输的载体)
SqlDataAdapter da = new SqlDataAdapter(cmd);
//创建一个数据集对象(内存数据库)
DataSet ds = new DataSet();
try
{
conn.Open();
da.Fill(ds);//调用适配器的Fill方法,将数据从数据库端,传送到客户端的数据集对象中
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
public static DataSet GetDataSet(string sql,SqlParameter[] param)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddRange(param);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
conn.Open();
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}

  存储过程的分页:

use DataPagerDB
go
if exists(select * from sysobjects where name='usp_DataPager')
drop procedure usp_DataPager
go
create procedure usp_DataPager
@PageSize int,--每页显示多少条
@FilterCount int, --过滤的条数
@Birthday varchar(20) --查询条件参数
as
Select Top (@PageSize) StudentId,StudentName,Gender,Birthday,PhoneNumber from Students
where Birthday>@Birthday and StudentId not in
(Select Top (@FilterCount) StudentId from Students where Birthday>@Birthday order by StudentId ASC)
order by StudentId ASC
--查询满足记录条数
select count(*) from Students where Birthday>@Birthday
go

  

/// <summary>
/// 通用数据分页类
/// </summary>
public class SqlDataPager
{
public SqlDataPager() { }
/// <summary>
/// 每页显示的条数
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 总页数
/// </summary>
public int TotalPages
{
get
{
if (RecordsCount != 0)
{
if (RecordsCount % PageSize != 0)
return RecordsCount / PageSize + 1;
else
return RecordsCount / PageSize;
}
else
{
this.CurrentPageIndex = 1;//设置默认页
return 0;
}
}
}
/// <summary>
/// 记录总数
/// </summary>
public int RecordsCount { get; set; }
/// <summary>
/// 当前页的页码
/// </summary>
public int CurrentPageIndex { get; set; }

/// <summary>
/// 执行分页查询,返回DataTable
/// </summary>
/// <returns></returns>
public DataTable GetPagedData(string birthday)
{
//封装查询需要的参数
SqlParameter[] param = new SqlParameter[]
{
new SqlParameter("@PageSize",this.PageSize),
new SqlParameter("@filterCount",(PageSize * (CurrentPageIndex - 1))),
new SqlParameter("@Birthday",birthday)
};
//执行查询
DataSet ds = SQLHelper.GetDataSet("usp_DataPager", param);
//获取满足条件的记录总数
this.RecordsCount = Convert.ToInt32(ds.Tables[1].Rows[0][0]);
//返回数据列表
return ds.Tables[0];
}
}

  

private static string connString = "Server=.;DataBase=DataPagerDB;Uid=sa;Pwd=password01!";

/// <summary>
/// 执行Insert、Update、Delete操作
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int Update(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 执行返回单一结果的查询
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object GetSingleResult(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 返回只读数据集的查询
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static SqlDataReader GetReader(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
conn.Close();
throw ex;
}
}
/// <summary>
/// 返回DataSet数据集
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static DataSet GetDataSet(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
//创建数据适配器(数据传输的载体)
SqlDataAdapter da = new SqlDataAdapter(cmd);
//创建一个数据集对象(内存数据库)
DataSet ds = new DataSet();
try
{
conn.Open();
da.Fill(ds);//调用适配器的Fill方法,将数据从数据库端,传送到客户端的数据集对象中
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
public static DataSet GetDataSet(string procName,SqlParameter[] param)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(procName, conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(param);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
conn.Open();
da.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
}

  



举报

相关推荐

0 条评论