关于在winform下DataGrid分页代码

关于在winform下DataGrid分页代码

最近头头要我们用DataGrid显示数据的时候一条一条的显示,当点击了某按钮时,下条记录就出现,也就是一次只显示一条记录,~于是我就想到了用DataGrid分页,当然我们在开发中也遇到了很多问题,特别是细节上的~在这里我要特别感谢我的朋友reficul和Oscar给了我不少帮助~
-------------------------代码-----------------------------------
public int NowPage = 1,PageCount = 1,PageSize = 1;//先定义变量并初始化
private void button1_Click(object sender, System.EventArgs e)//上一页
  {
   NowPage--;
   LoadData(sender,e);
  }
  private void button2_Click(object sender, System.EventArgs e)//下一页
  {
   NowPage++;
   LoadData(sender,e);
  }
  private void LoadData(object sender,System.EventArgs e)
  {
   try
   {
    string conn = "server=.;user id=sa;password=;database=Northwind";//连接数据库,我用的事例数据库是SQL里面的
    //设置数据库连接
    SqlConnection SconnStr = new SqlConnection (conn);
    if(SconnStr.State.ToString()=="Closed")
    {
     SconnStr.Open ();
    }
    SqlCommand Countcmd = new SqlCommand ("select count(*) as co from Employees",SconnStr);//读出总记录数
    SqlDataReader Countdr = Countcmd.ExecuteReader();
    if(Countdr.Read())
    {
     PageCount = Int32.Parse (Countdr["co"].ToString ())/PageSize;//用总记录数除于每页显示的记录数=总页数
     if(Int32.Parse (Countdr["co"].ToString ())%PageSize>0) //取模运算,
     {
      PageCount = PageCount +1;//超过一页的显示数按2页算
     }
     if(PageCount<1)//不足一页显示数的按一页算
     {
      PageCount=1;
     }
    }
    SconnStr.Close ();
    pageinfo.Text ="共"+PageCount+"页\t 第"+NowPage+"页";
    //设置操作数据库命令
    if(NowPage>=PageCount)//如果当前的页面值大于或等于总页面数的话,那么当前页面为最后的页面
    {
     NowPage= PageCount;
    }
    if(NowPage<=1)//如果当前的页面值小于或等于一页面的话,那么当前页面为第一页
    {
     NowPage=1;
    }
    int start = (NowPage-1)*PageSize;//当前页的开始记录是前几页的总记录数的最后一个记录
    string command = "select * from Employees ";//填充数据,并显示
    SqlDataAdapter sda = new SqlDataAdapter ( command,SconnStr);
    DataSet ds = new DataSet ();
    sda.Fill(ds,start,PageSize,"Employees");
    dataGrid1.DataSource = ds.Tables ["Employees"].DefaultView ;
    dataGrid1.SetDataBinding(ds,"Employees");
   }
   catch(Exception err)
   {
    MessageBox.Show(err.Message.ToString());
   }
  }
  private void button3_Click(object sender, System.EventArgs e)//首页
  {
       NowPage= 1;
         LoadData(sender,e);
  }
  private void button4_Click(object sender, System.EventArgs e)//尾页
  {
         NowPage= PageCount;
         LoadData(sender,e);
  }

转载于:https://www.cnblogs.com/lds85930/archive/2007/09/18/896967.html

微信扫码订阅
UP更新不错过~
关注
  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值