-
您的位置:首页 → 精文荟萃 → 软件资讯 → DataGrid分页使用小结
DataGrid分页使用小结
时间:2004/10/7 19:13:00来源:本站整理作者:蓝点我要评论(0)
-
默认分页模式:
选中“允许分页”;页大小;页导航设置,可以是上下方式,也可以用页码方式
格式里可以设置“页导航”按钮的对起方式;
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;
}
相关阅读
Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
-
热门文章
360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3
最新文章
微信3.6.0测试版更新了微信支付漏洞会造成哪
360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗
人气排行
xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本
查看所有0条评论>>