DataGrid分页使用小结

datagrid|分页

默认分页模式:
选中“允许分页”;页大小;页导航设置,可以是上下方式,也可以用页码方式
格式里可以设置“页导航”按钮的对起方式;

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":

时间: 2024-11-17 01:07:11

DataGrid分页使用小结的相关文章

自定义DataGrid分页设置

datagrid|分页 先定义ASPX页面,注意AllowCustomPaging要设为"False":<body> <form id="DictList" method="post" runat="server"> <TABLE style="BORDER-COLLAPSE: collapse" cellSpacing="0" width="10

DataGrid 分页问题

datagrid|分页|问题    最近做网站遇到了一个奇怪的问题,在进行DataGrid进行分页时,无法响应 PageIndExchanged 事件 .   我也查阅了很多关于这方面的文章,可是还是没有得到解决方案. 在和别人的探讨中发现了症结所在      首先,我先将代码贴过来:      下面是DataGird控件的HTML代码(不包含字段绑定)      <ASP:datagrid id="SearchGrid" runat="server" wid

分享:用PreRender解决DataGrid分页最后一页行数不满的排版问题

datagrid|分页|解决|问题 DataGrid如果使用分页,最后一页可能不能"满页",这样DataGrid的排版可能会出现问题,剩下的行每行太宽,整个DataGrid变得难看. 解决方法大概可以从三个地方考虑:1.在DataSource中填上新数据行.2.在DataGrid中填上新空白控件行.3.在webpage中用javascript填上新的html控件行. 我采用的是第二种方法,在datagrid的prerender事件的响应方法中,在footer行之上填入空白行,代码如下:

DataGrid 分页问题 -- 无法响应 PageIndexChanged 事件

datagrid|分页|问题|响应   最近做网站遇到了一个奇怪的问题,在进行DataGrid进行分页时,无法响应 PageIndexChanged 事件 . 我也查阅了很多关于这方面的文章,可是还是没有得到解决方案. 在和别人的探讨中发现了症结所在 首先,我先将代码贴过来: 下面是DataGird控件的HTML代码(不包含字段绑定) <asp:datagrid id="SearchGrid" runat="server" width="100%&q

一个功能齐全的DataGrid分页例子

datagrid|分页 <%@ Page language="c#" EnableViewState = "true" Codebehind="DataGridPaging.aspx.cs" AutoEventWireup="false" Inherits="eMeng.Exam.DataGridPaging.DataGridPaging" %><!DOCTYPE HTML PUBLIC

ASP.NET中自定义DataGrid分页设置的实现

asp.net|datagrid|分页 我实现了DataGrid的个性化分页,现在把代码贴出来朋友们参考,同时在这个功能的实现过程,参考了"飞刀"从国外翻译的一篇文章. 先定义ASPX页面,注意AllowCustomPaging要设为"False": <body><form id="DictList" method="post" runat="server"><TABLE st

典型Datagrid分页、排序、删除代码

datagrid|分页|排序 <%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="datagrid.WebForm1" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML

Datagrid分页、排序、删除代码

datagrid|分页|排序 <%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="datagrid.WebForm1" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML

datagrid分页问题(前后跳页)《控件版》

datagrid|分页|控件|问题 把它定义在用户控件中的.在.ASCX中写的. 在CSDN上看了很多的DATAGRID分页问题,当然DATAGRID有自己的分页项,功能是很有限的,我也在CSDN上看了很多自己分页的代码,发现都是用C#写的,我写了一个用ASP.NET中VB语言写的.以下代码供大家参考. HTML代码: <%@ Control Language="vb" AutoEventWireup="false" Codebehind="Data