求一款无控件的asp.net分页代码 信息多了必须分页 哪位高手帮帮忙,谢谢! 代码如下:

2025-02-24 23:00:45
推荐回答(3个)
回答1:

如果数据量很大 那么对分页的性能要求就很高 目前简易操作的分页控件已经不能满足这个需求,目前考虑到数据量和性能的分页方式就是存储过程分页 存储过程分页的原理就是 根据PageSize(例如 PageSize=30)来每次只取出30条数据 当翻页时在读取出后30条数据 这样不管数据量多大  也只会消耗读取30条记录的流量 对程序整体性能很有帮助

存储过程分页代码:

   代码

CREATE PROCEDURE GetRecordFromPage

@tblName varchar(255),--表名

@fldName varchar(255),--字段名这里测试了一下,只能一个字段,

@PageSize int=10,--每页多少条

PageIndex int=1,--以后表现页

@OrderType bit=0,--设置排序范例,非0值则降序

@strWhere varchar(2000)=''--查问前提(把稳:不要加where)

AS

declare @strSQL varchar(6000)--主语句

declare @strTmp varchar(1000)--临时变量

declare @strOrder varchar(500)--排序范例

if @OrderType!=0

begin

set @strTmp='<(selectmin'set @strOrder='order by ['+@fldName+']desc'

end

else

begin

set @strTmp='>(selectmax'set@strOrder='orderby['+@fldName+']asc'

end

set @strSQL='select top'+str(@PageSize)+'*from['+@tblName+']where['+@fldName+']'+@strTmp+'(['+@fldName+'])from

(selecttop'+str((@PageIndex-1)*@PageSize)+'['+@fldName+']from['+@tblName+']'+@strOrder+')as tblTmp)'+@strOrder

if @strWhere!=''

set @strSQL='selecttop'+str(@PageSize)+'*from['+@tblName+']

where['+@fldName+']'+@strTmp+'(['+@fldName+'])from(selecttop'+str((@PageIndex-1)*@PageSize)+'['+@fldName+']from['+@tblName+']

where'+@strWhere+''+@strOrder+')astblTmp)

and'+@strWhere+''+@strOrder

if@PageIndex=1

begin

set @strTmp=''

if @strWhere!=''

set @strTmp='where('+@strWhere+')'set@strSQL='selecttop'+str(@PageSize)+'*from['+@tblName+']'+@strTmp+''+@strOrderendexec(@strSQL)

GO

PS:参数以标明含义  调用时只需传入对应的参数就OK  分页最好弄个这样样式的分页

如果还需要具体程序代码 可以百度HI我  希望有帮助~

回答2:

去网上搜,各种的分页代码多的是
建议去CSDN上看看。。

回答3:

1.添加六个按钮
当前页码:
   
总页码:
   
onclick="lbtnOne_Click">第一页
   
上一页
   
onclick="lbtnNext_Click">下一页
   
onclick="lbtnBack_Click">最后一页

2.定义一个分页方法:
public void dlBind(int count, DataSet ds, Label lblPage, Label lblTag, LinkButton lbtnOne, LinkButton lbtnUp, LinkButton lbtnNext, LinkButton lbtnBack, GridView gvewAll)
{
int curpage = Convert.ToInt32(lblPage.Text);
PagedDataSource ps = new PagedDataSource();
ps.DataSource = ds.Tables[0].DefaultView;
ps.AllowPaging = true;
ps.PageSize = count;
ps.CurrentPageIndex = curpage - 1;
lbtnOne.Enabled = true;
lbtnUp.Enabled = true;
lbtnNext.Enabled = true;
lbtnBack.Enabled = true;
if (curpage == 1)
{
lbtnOne.Enabled = false;
lbtnUp.Enabled = false;
}
else if (curpage == ps.PageCount)
{
lbtnNext.Enabled = false;
lbtnBack.Enabled = false;
}
lblTag.Text = ps.PageCount.ToString();
gvewAll.DataSource = ps;
gvewAll.DataBind();
}
3.调用方法:
private void NewsPage()
{
SqlConnection conn = SqlHelper.GetConnectionString("WareHouse");
DataSet ds = new DataSet();
ds = SqlHelper.ExecuteDataset(conn,CommandType.Text,"select * from T_kucun");
Validate vali = new Validate();
vali.dlBind(2, ds, lblPage, lblTag, lbtnOne, lbtnUp, lbtnNext, lbtnBack, gvewStock);
}
4.对按钮的事件:
protected void lbtnOne_Click(object sender, EventArgs e)
{
lblPage.Text = "1";
NewsPage();
}
protected void lbtnUp_Click(object sender, EventArgs e)
{
lblPage.Text = Convert.ToString(Convert.ToInt32(lblPage.Text)-1);
NewsPage();
}
protected void lbtnNext_Click(object sender, EventArgs e)
{
lblPage.Text = Convert.ToString(Convert.ToInt32(lblPage.Text)+1);
NewsPage();
}
protected void lbtnBack_Click(object sender, EventArgs e)
{
lblPage.Text = lblTag.Text;
NewsPage();
}

5.sqlhelper是我添加的连接数据库的方法,你可以自己用其他方法加一个连接数据库,这种方法你试试,我都是这样做的,其中的2是每页显示的数据条为2,你也可以改其他的数