C#数据分页实现(非控件)

1 在窗体上放置三个LinkButton。分别命名为“前一页”、“第 页”、“下一页”

2 绑定数据

3 单击LinkButton实现分页


实现代码如下

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlServerCe;
using System.Linq;
using System.Windows.Forms;
using System.Data.SqlClient;




namespace DataPaging
{
public class Paging
{
#region字段
public static string TableName; // 要操作的表的名称
public static int totalPages; // 总计的页数
public static int currentPages; // 当前是第几页
public static int startIndex; // 起始索引
public static int perPageCount = 20; // 每页要显示的页数
#endregion
#region 方法
/// <summary>
/// 绑定选定的表的信息
/// </summary>
/// <param name="param_TableName">要绑定的表</param>
public void BindDataToGridView(string param_TableName,int index)
{
int count = SQLCE.SearchInforByParam(strParam1, strParam2, strParam3, strParam4, -1,
perPageCount).Tables[TableName].Rows.Count;
totalPages = Convert.ToInt32(SQLCE.GetPages(count, 20));
this.lblTotalPages.Text = String.Format("共 {0} 页", totalPages);
currentPages = 1;
this.lblCurrentPages.Text = string.Format("第 {0} 页", currentPages);
gridControl1.DataSource = SQLCE.GetTableInformation(index,20).Tables[param_TableName].DefaultView;
}
/// <summary>
/// 从数据源中读取指定条数的数据
/// </summary>
/// <param name="strSql">要执行的SQL语句</param>
/// <returns>返回查询结果DataSet</returns>
public static DataSet GetTableInformation(int i, int j)
{
string strSql = string.Format("select * from {0}", sqlceTableName);
SqlCeConnection conn = new SqlCeConnection(ConnectionString);
SqlCeDataAdapter adapter = new SqlCeDataAdapter(strSql, conn);
DataSet ds = new DataSet();
try
{
adapter.Fill(ds, i, j, string.Format("{0}", sqlceTableName));
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
conn.Close();
}
return ds;
}
/// <summary>
/// 获得分页后共有多少页
/// </summary>
/// <param name="totslRows">当前操作总计的记录数</param>
/// <param name="size">每页要显示的记录数</param>
/// <returns>返回总计要分几页</returns>
public static string GetPages(int totslRows,int size)
{
int pages = totslRows % size; //共有多少页
if (pages == 0)
{
pages = totslRows / size;
}
else
{
pages = totslRows / size + 1;
}


return pages.ToString();
}
/// <summary>
/// 根据条件查询信息
/// </summary>
/// <param name="strParam1">用户输入的MessageBody值</param>
/// <param name="strParam2">用户输入的开始时间</param>
/// <param name="strParam3">用户输入的结束时间</param>
/// <param name="strParam4">用户输入的mark值</param>
/// <param name="i">从零开始的记录号</param>
/// <param name="j">要检索的最大记录数</param>
/// <returns>返回一个DataSet</returns>
public static DataSet SearchInforByParam(string strParam1, DateTime strParam2, DateTime strParam3, string strParam4, int i, int j)
{
string strSql = "";
SqlCeConnection conn = new SqlCeConnection(ConnectionString);
DataSet ds = new DataSet();
SqlCeDataAdapter adapter;
SqlCeCommand cmd = new SqlCeCommand();
try
{
//中间这部分代码与分页无关紧要,所以省略
cmd.CommandText = strSql;
cmd.Connection = conn;
adapter = new SqlCeDataAdapter(cmd);
conn.Open();
if (i != -1)
{
adapter.Fill(ds, i, j, string.Format("{0}", sqlceTableName));
}
else
{
adapter.Fill(ds, string.Format("{0}", sqlceTableName));
}


}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
conn.Close();
}


return ds;
}
#endregion
#region 事件
/// <summary>
/// 单击【上一页】按钮触发的事件处理程序
/// </summary>
/// <param name="sender">引发事件对象的引用</param>
/// <param name="e">该事件传递的参数</param>
private void linklblLast_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
int m = currentPages - 1;
if (m < 1)
{
currentPages = 1;
lblCurrentPages.Text = string.Format("第 {0} 页", currentPages);
MessageBox.Show("已经是第一页!", "提示");
}
else
{
lblCurrentPages.Text = string.Format("第 {0} 页", m);
currentPages = m;
}
startIndex = currentPages * 20 - 20;
gridControl1.DataSource = SQLCE.SearchInforByParam(strParam1, strParam2, strParam3, strParam4, startIndex,
perPageCount).Tables[TableName].DefaultView;
}
/// <summary>
/// 单击【下一页】按钮触发的事件处理程序
/// </summary>
/// <param name="sender">引发事件对象的引用</param>
/// <param name="e">该事件传递的参数</param>
private void linklblNext_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
int m = currentPages + 1;
startIndex = currentPages * 20;
if (m > totalPages)
{
lblCurrentPages.Text = string.Format("第 {0} 页", totalPages);
currentPages = totalPages;
MessageBox.Show("已经是最后一页!", "提示");
}
else
{
lblCurrentPages.Text = string.Format("第 {0} 页", m);
currentPages = m;
gridControl1.DataSource = SQLCE.SearchInforByParam(strParam1, strParam2, strParam3, strParam4, startIndex,
perPageCount).Tables[TableName].DefaultView;
}
}
#endregion
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值