DataGrid分页使用小结

原创 2004年09月17日 19:59:00
默认分页模式:
选中“允许分页”;页大小;页导航设置,可以是上下方式,也可以用页码方式
格式里可以设置“页导航”按钮的对起方式;
 
 private void datashow()//绑定数据
  {
   string sql="server=127.0.0.1;database=ltp;user id=sa;password=";
   SqlConnection mycon=new SqlConnection(sql);
 
   string selsql="select * from data";
   SqlDataAdapter da=new SqlDataAdapter(selsql,mycon);
 
   DataSet ds=new DataSet();
   da.Fill(ds,"data");
 
   this.DataGrid1.DataSource=ds.Tables["data"];
   this.DataGrid1.DataBind();
   
  }

响应事件 PageIndexChanged()
 
    this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
    datashow();
   
 
 
 
自定义导航控件的默认分页模式
   当前页:this.Label1.Text=(this.DataGrid1.CurrentPageIndex+1).ToString();
           因为CurrentPageIndex从0开始的,所以要+1

   总页数:this.Label2.Text=this.DataGrid1.PageCount.ToString();
  
//第一页
this.DataGrid1.CurrentPageIndex=0;
//上一页
if(this.DataGrid1.CurrentPageIndex>0)
   {
    this.DataGrid1.CurrentPageIndex-=1;
    this.datashow();
   }
//下一页
   if(this.DataGrid1.CurrentPageIndex<(this.DataGrid1.PageCount-1))
   {
    this.DataGrid1.CurrentPageIndex+=1;
    this.datashow();
   }
//最后一页
this.DataGrid1.CurrentPageIndex=this.DataGrid1.PageCount-1
 
 
最后再 datashow();
 
 
自定义数据分页--非常重要!(提高性能效率)
   每次this.datashow();是提取全部数据,反而降低了效率。
 
正确的方法:
1,选中“允许分页”;“允许自定义分页”;页大小。
2,添加导航按钮,设置CommandName属性,previous,next
3,代码:
 
  //记录每一页的开始索引
  int startindex;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   //自定义按钮事件
   this.btnprevious.Click+=new System.EventHandler(this.NavigateToPage);
   this.btnnext.Click+=new System.EventHandler(this.NavigateToPage);
 
    //or   OnCommand="NavigateToPage"

   if(!IsPostBack)
   {
    startindex=0;
 
    //得到数据源的记录数,并指派给DataGrid1
 
    string constr="server=127.0.0.1;database=ltp;user id=sa;password=";
    SqlConnection mycon=new SqlConnection(constr);
    mycon.Open();
 
    string sql="select 总数=count(*) from data";
    SqlCommand com=new SqlCommand(sql,mycon);
 
    SqlDataReader dr=com.ExecuteReader(CommandBehavior.SingleRow);
    if(dr.Read())
     this.DataGrid1.VirtualItemCount=(int)dr["总数"];
    dr.Close();
    mycon.Close();
    
    //
    this.bindGrid(startindex,"previous");
 
 
 
   }
  }
 

  //自定义按钮事件
  private  void NavigateToPage(object sender,System.EventArgs e)
  {
   string pageinfo=((Button)sender).CommandName;
   switch(pageinfo)
   {
    case "previous":
     if(this.DataGrid1.CurrentPageIndex>0)
     {
      this.DataGrid1.CurrentPageIndex-=1;
      
     }
     break;
 
    case "next":
     if(this.DataGrid1.CurrentPageIndex<(this.DataGrid1.PageCount-1))
     {
      this.DataGrid1.CurrentPageIndex+=1;
      
     }
     break;
 
   }
 
   //得到开始的索引
   startindex=this.DataGrid1.CurrentPageIndex*this.DataGrid1.PageSize;
   //重新绑定
   this.bindGrid(startindex,pageinfo);
 

  }
 
  //从数据源提取所需的数据记录--方法2(有int序号的表)
  private void bindGrid2(int startindex,string pageinfo)
  {
   string constr="server=127.0.0.1;database=ltp;user id=sa;password=";
   SqlConnection mycon=new SqlConnection(constr);
   mycon.Open();
 
   string sql="select top 5 * from data where 序号>="+startindex+" order by 序号";
   SqlDataAdapter da=new SqlDataAdapter(sql,mycon);
 
   DataSet ds=new DataSet();
   da.Fill(ds,"data");
   this.DataGrid1.DataSource=ds.Tables["data"];
   this.DataGrid1.DataBind();
   
   mycon.Close();
 

  }
 

  //从数据源提取所需的数据记录--方法1(按某字符串列排序的)
  private void bindGrid(int startindex,string pageinfo)
  {
   string constr="server=127.0.0.1;database=ltp;user id=sa;password=";
   SqlConnection mycon=new SqlConnection(constr);
   mycon.Open();
 
   SqlCommand com=new SqlCommand();
 
   switch(pageinfo)
   {
    case "previous":
     string sql="select top 5 * from data where 持股名称>=@id order by 持股名称";
     com=new SqlCommand(sql,mycon);
 
    // com=new SqlCommand("select top 5 * from data where 持股名称>=@id order by 持股名称",mycon);
     
     if(startindex==0)
     {
      com.Parameters.Add("@id",SqlDbType.NVarChar,10).Value="";
     }
     else
     {
      //把开始
      com.Parameters.Add("@id",SqlDbType.NVarChar,10).Value=ViewState[(this.DataGrid1.CurrentPageIndex+1).ToString()];
     // com.Parameters.Add("@id",SqlDbType.NVarChar,10).Value=this.DataGrid1.Items[0].Cells[1].Text;
     }
     break;
 
    case "next":
     string sql2="select top 5 * from data where 持股名称>@id order by 持股名称";
     com=new SqlCommand(sql2,mycon);
     
     //把最后一行的列值赋给下一页开始
     com.Parameters.Add("@id",SqlDbType.NVarChar,10).Value=this.DataGrid1.Items[4].Cells[1].Text;
     break;
   }
 
   SqlDataReader dr=com.ExecuteReader();
   this.DataGrid1.DataSource=dr;
   this.DataGrid1.DataBind();
   dr.Close();
   mycon.Close();
 
   //重新得到当前开始第一行的列值
   ViewState[(this.DataGrid1.CurrentPageIndex+1).ToString()]=this.DataGrid1.Items[0].Cells[1].Text;
           
 
  }

DataGrid中自带的分页功能的使用

作者:木子   http://blog.csdn.net/derny/1、把AllowPaging属性设置为true   并设置PageSize的大小2、在html页面中设置datagrid的属性On...
  • 21aspnet
  • 21aspnet
  • 2004年10月26日 19:43
  • 1754

jqueryeasyui动态生成分页的相关属性设置datagrid

1)title:该DataGrid面板的标题文本。                  2)iconCls:一个CSS类,将提供一个背景图片作为标题图标。                  3)bo...
  • wxwreus
  • wxwreus
  • 2017年02月11日 15:45
  • 1405

jquery easyui datagrid 分页实现---善良公社项目

对于这样的框架还有很多值得我们学习的地方,上面的这些按纽都可以灵活的去添加,例如:添加导入、导出数据等,都容易实现,好的框架的学习,让我们学会了如何站在举人的肩膀上更快成长,具体的行动需要我们融入自己...
  • lishehe
  • lishehe
  • 2013年11月26日 13:42
  • 43458

PHP 的DataGrid 分页

PHP的页面,表格嵌入分页条,小结: 参考:http://www.jeasyui.com/tutorial/datagrid/datagrid2.php 注意: To load data fro...
  • navystar
  • navystar
  • 2015年06月12日 14:08
  • 1118

EasyUI的datagrid组件实现分页

EasyUI的datagrid组件实现分页,后台为Struts2+Spring+Hibernate,利用DetachedCriteria对象进行简单的分页查询。要点: datagrid组件的参数和响应...
  • jianshen0925
  • jianshen0925
  • 2016年11月08日 14:23
  • 1317

easyui 中的datagrid分页技术实现

一些基本的知识参考官网          http://www.jeasyui.com/documentation/index.php# 这里我强调一点 datagrid会...
  • cao478208248
  • cao478208248
  • 2014年06月13日 17:59
  • 3816

为什么使用EasyUI DataGrid进行分页设置pageSize却无效

原地址:http://www.dearboy.cn/a/201405/421.html 在使用EasyUI的DataGrid控件进行分页时,初次加载设置了pageSize却还是默认的10条数据,pa...
  • yipanbo
  • yipanbo
  • 2016年09月13日 11:31
  • 6919

springMVC+easyui中的datagrid分页

前言:在以前用servlet+JSP做小型管理系统时,数据表格分页的代码编写往往都要花费一些时间,这次学习了Spring+springMVC+Mybatis,熟悉了一下前端框架easyUI的用法之后,...
  • qq_21231581
  • qq_21231581
  • 2016年08月09日 12:57
  • 837

Easyui 使用datagrid分页 详解 代码

做网站的后台设计,用到了easyui,在使用datagrid的分页时遇到了很多问题,比如如何传递分页参数,如何接收总的数据量,经过小半天的研究,终于搞出来了,下面是一些常遇到的问题,可能会对新手有所帮...
  • jp571534020
  • jp571534020
  • 2014年12月16日 11:30
  • 15289

DataGrid分页显示复选框选中

我们都曾做过DataGrid的分页实现,使用.NET中的控件非常简单,但如果在DataGrid中添加一个模板列,内部放一个CheckBox的话, 转到下一页再转回则会发现原来选中的内容已经没有了!以...
  • Ricky_66
  • Ricky_66
  • 2010年09月28日 14:30
  • 1440
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DataGrid分页使用小结
举报原因:
原因补充:

(最多只允许输入30个字)