dataGridview中的分页功能实现(多个对像,不是单一的)

前端之家收集整理的这篇文章主要介绍了dataGridview中的分页功能实现(多个对像,不是单一的)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

page.class

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Windows .Forms;

namespace pageClass
{
class Page
{

public int pageIndex = 1; //用于存放页数
public DataTable objDataTable = null;
private int pageRowNumber = 15;//分页的行数默认的为18

public int getPageRowNumber()//返回分页的行数
{
return pageRowNumber;
}

public void setDataTable(DataTable datattable)
{
this.objDataTable = datattable;
}
public void setpageNumber(string number)//设置分页的行数
{
try
{
this.pageRowNumber =Convert.ToInt32(number);
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString(),"提示信息",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
public void pageEnter(string pageNumber)//转到页数的方法,传过来的是一个文本框中的值
{
try
{
pageIndex = Convert.ToInt32(pageNumber);//取得文本框中的值

pageLoad();//加裁页
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString(),MessageBoxIcon.Warning);
}
}
public DataTable pageLoad()//找页并加裁数据
{
try
{

//生成一个新的表

if (pageIndex <= 1)//为真时表示到了0页以下所以要回到第一页
{
pageIndex = 1;
}
else if (pageIndex > objDataTable.Rows.Count / getPageRowNumber() + 1)
{
pageIndex = 1;//表示到了尽头也在回到第一页
}
//真时停用上一页
//isEnabledPageUp();
//表示记录数除以10以后加1表示到了最后一页 真时停用下一页
//isEnabledPageDowm();
/**因为记录的开始是0所以要为页数-1
* 输入的页数为1时,应该得到的记录是0到19
* 输入的页数为2时,应该得到的记录是20到39
* 。。。。。。。。。。。。。。。。。。。
*
* */
DataTable dt = new DataTable();
for (int k = 0; k < objDataTable.Columns.Count; k++)//objdatset.Tables[0].Columns.Count是总的行数从1开始
{
dt.Columns.Add(this.objDataTable.Columns[k].ColumnName.ToString(),typeof(string));
}
try
{
//给表中的每一列赋值
for (int i = (pageIndex - 1) * getPageRowNumber(); i <= (pageIndex - 1) * getPageRowNumber() + (getPageRowNumber() - 1); i++)//添加
{
DataRow dr = dt.NewRow();
for (int j = 0; j < objDataTable.Columns.Count; j++)//objdatset.Tables[0].Columns.Count是总的行数从1开始
{
dr[j] = objDataTable.Rows[i][j];//添加
}
dt.Rows.Add(dr);//把得到的新行添加到新的表中
}
return dt;
}
catch (Exception)
{
return dt;
}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString(),MessageBoxIcon.Warning);
return null;
}
}
public void pageUp()//上一页
{
pageIndex = pageIndex - 1;
pageLoad();
}
public void pageDown()//下一页
{
pageIndex = pageIndex + 1;
pageLoad();
}
public Boolean isEnabledPageDowm()//此为下一页
{
//表示记录数除以pageNumber以后加1表示到了最后一页 真时停用下一页
if (pageIndex == objDataTable.Rows.Count / getPageRowNumber() + 1)
{
return false;
}
else
{
return true;
}
}
public Boolean isEnabledPageUp()//此为上一页
{
//真时停用上一页
if (pageIndex == 1)
{
return false;
}
else
{
return true;
}
}
}
}
MysqL.class

using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Data;
using System.Data.sqlClient;
namespace pageClass
{
class MysqL
{
private sqlConnection objsqlConnection;
private sqlDataAdapter objsqlAdapter;
private DataSet dataset;
//用于执行sql语句的方法只而传值第一个对数的表名第二个是要执行的sql语句
public DataSet exesql(string tableName,string strsql)
{
//this.sqlConncetion();
try
{
objsqlConnection.Open();//打开连接
objsqlAdapter = new sqlDataAdapter(strsql,objsqlConnection);
dataset = new DataSet();
objsqlAdapter.Fill(dataset,tableName);//把得到的值给DataGrid
return dataset;
}
catch (Exception ee)
{
MessageBox.Show("/n语句执行失败请检测您的输入信息后再重试!!!发生异常的原因如下/n/n" + ee.Message.ToString(),MessageBoxButtons.YesNo,MessageBoxIcon.Warning);
return null;
}
finally
{
objsqlConnection.Close();
}
}
public void sqlConnection()
{
try
{
objsqlConnection = new sqlConnection("Data Source=.;Initial Catalog=text;Integrated Security=True");
}
catch (Exception)
{
MessageBox.Show("没有可用的数据库或连接不成功,请确保数据库已附加,请自行检测谢谢合作!!!");
}
}
}
}
Form1

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace pageClass
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
DataSet objDataSet = null;
MysqL objMysqL = new MysqL();
Page objpage = new Page();
private void isEnabledButton()//判断是否停用相关Button
{
this.btnUP.Enabled = objpage.isEnabledPageUp();
this.btnDown.Enabled = objpage.isEnabledPageDowm();
}
private void dataBinddgMyGrid()//用于给datagrid赋值的方法
{
try
{
objpage.setDataTable(this.objDataSet.Tables[0]);

dgMyGrid.DataSource = objpage.pageLoad();//把得到的值给DataGrid
this.txtPageNumber.Text = objpage.pageIndex.ToString();//显示当前的页数
this.txtNumber.Text = objpage.getPageRowNumber().ToString ();
isEnabledButton();
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString(),MessageBoxIcon.Warning);
}
}
//用于执行sql语句的方法只而传值第一个对数的表名第二个是要执行的sql语句
private void exesql(string tableName,string strsql)
{
try
{
objDataSet = objMysqL.exesql(tableName,strsql);
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString(),MessageBoxIcon.Warning);
}
}
private void Form1_Load(object sender,EventArgs e)
{
objMysqL.sqlConnection();//初始代Conncetion对象
}

private void btnUP_Click(object sender,EventArgs e)//上一页
{
objpage.pageUp();
dataBinddgMyGrid();
}

private void btnDown_Click(object sender,EventArgs e)//下一页
{
objpage.pageDown();
dataBinddgMyGrid();
}

private void btnGO_Click(object sender,EventArgs e)//转到指定的页数
{
objpage.pageEnter(this.txtPageNumber.Text .Trim ().ToString ());
dataBinddgMyGrid();
}

private void btnEnter_Click(object sender,EventArgs e)//设置分页的行数
{
objpage.setpageNumber(this.txtNumber.Text .Trim ().ToString ());
dataBinddgMyGrid();
}

private void btnCode_Click(object sender,EventArgs e)//查询shop表
{
string MysqL = "select * from [shop]";
exesql("shop",MysqL);
dataBinddgMyGrid();
}

private void btnStudent_Click(object sender,EventArgs e)//查询studentInfo表
{
string MysqL = "select * from studentInfo";
exesql("studentInfo",MysqL);
dataBinddgMyGrid();
}

private void btnDorm_Click(object sender,EventArgs e)//查询dorm表 { string MysqL = "select * from [dorm]"; exesql("dorm",MysqL); dataBinddgMyGrid(); } }}

猜你在找的设计模式相关文章