读书人

asp.net repeater sql分页解决思路

发布时间: 2013-08-09 15:16:24 作者: rapoo

asp.net repeater sql分页
public static List<empextender> getAllemp(int PageSize,int PageIndex)
{
string sql = "select * from (select empname,empid,sex,row_number() over(order by empid asc) rn from andy_shen_emp_infomation)"
+" where rownum<=:PageSize "
+"and empid not in"
+"(select empid from (select empname,empid,sex,row_number() over(order by empid asc) rn from andy_shen_emp_infomation)"
+ " where rn <=(:PageSize*:PageIndex))"
+ "and rn<=(:PageSize*:PageIndex*2) and rn>=(:PageSize*:PageIndex) ";
List<empextender> list = new List<empextender>();
OracleParameter[] para = new OracleParameter[] {
new OracleParameter(":PageSize",PageSize),
new OracleParameter(":PageIndex",PageIndex),
};
DataSet ds = OracleHelper.getDataSet(OracleHelper.web2Constring, sql, CommandType.Text, para);
foreach (DataRow dr in ds.Tables[0].Rows)
{
empextender var = new empextender();


var.EMPID = dr["EMPID"].ToString();
var.EMPNAME = dr["EMPNAME"].ToString();
var.rn = Convert.ToInt32(dr["rn"].ToString());
var.SEX = dr["SEX"].ToString();
var.PageSize = Convert.ToInt32(dr["PageSize"].ToString());
var.PageIndex = Convert.ToInt32(dr["PageIndex"].ToString());
list.Add(var);
}
return list;
}






using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Model;
using BLL;

public partial class Repeater : System.Web.UI.Page
{
private int _PageIndex;

public int PageIndex
{
get { return Convert.ToInt32(ViewState["PageIndex"]); }
set
{
if (ViewState["PageIndex"] != null)
{
_PageIndex = Convert.ToInt32(ViewState["PageIndex"]);
}
}
}




private int _PageSize;

public int PageSize
{
get { return Convert.ToInt32(ViewState["PageSize"]); }
set { _PageSize = Convert.ToInt32(ViewState["PageSize"]); }


}

private int _PageCount;

public int PageCount
{
get { return Convert.ToInt32(ViewState["PageCount"]); }
set { _PageCount = Convert.ToInt32(ViewState["PageCount"]); }
}


protected void Page_Load(object sender, EventArgs e)
{


if(!Page.IsPostBack)
{
bindRe();
ViewState["PageIndex"] = 1;
ViewState["PageSize"] = 5;
int recount = calc();

int PageCount = recount % PageSize == 0 ? recount / PageSize : ((recount / PageSize )+ 1); //总共几页
ViewState["PageCount"] = PageCount;

this.lblcurr.Text = ViewState["curr"].ToString();
this.lblPageCount.Text = ViewState["PageCount"].ToString();
}
}

private int calc()
{
List<empextender> list = Manager.getAllemp(5, Convert.ToInt32(ViewState["PageCount"]));
int recount = list.Count;
return recount;
}

private void bindRe()
{
//ViewState["PageIndex"] = 1;

//int PageSize = 6; //每页显示6

List<empextender> list = Manager.getAllemp(5, Convert.ToInt32(ViewState["PageCount"]));

// int recount = list.Count; //总记录



//int PageCount = recount % PageSize == 0 ? recount / PageSize : recount / PageSize+1; //总共几页
//ViewState["PageCount"] = PageCount;

this.Repeater1.DataSource = list;

this.Repeater1.DataBind();

//this.lblcurr.Text = ViewState["curr"].ToString();
//this.lblPageCount.Text = ViewState["PageCount"].ToString();

BindBtn();
}

private void BindBtn()
{
int currentPage = Convert.ToInt32(ViewState["PageIndex"]);
//ViewState["curr"] = currentPage;
//if(currentPage+1>1)
//{
// this.btnPre.Enabled=true;
// this.btnNext.Enabled = true;
// this.btnFir.Enabled = true;
// this.btnEnd.Enabled = true;
//}

if(currentPage==PageCount)
{
this.btnPre.Enabled = true;
this.btnNext.Enabled = false;
this.btnFir.Enabled = true;
this.btnEnd.Enabled = false;
}

if(currentPage==1)
{
this.btnPre.Enabled = false;
this.btnNext.Enabled = true;
this.btnFir.Enabled = false;
this.btnEnd.Enabled = true;


}
}


protected void btnFir_Click(object sender, EventArgs e)
{
ViewState["PageIndex"] = 1;
bindRe();
}
protected void btnPre_Click(object sender, EventArgs e)
{
ViewState["PageIndex"] = Convert.ToInt32(ViewState["PageIndex"])-1;
bindRe();
}
protected void btnNext_Click(object sender, EventArgs e)
{
ViewState["PageIndex"] = Convert.ToInt32(ViewState["PageIndex"]) + 1;
bindRe();
}
protected void btnEnd_Click(object sender, EventArgs e)
{
ViewState["PageIndex"] = PageCount;
bindRe();
}
}





public class empextender : emp
{
private int _PageIndex;

public int PageIndex
{
get { return _PageIndex; }
set { _PageIndex = value; }
}

private int _PageSize;

public int PageSize
{
get { return _PageSize; }
set { _PageSize = value; }
}

private int _rn;

public int rn
{
get { return _rn; }


set { _rn = value; }
}


这是分页代码,model中我是用了扩展类,运行时报ORA-01008: not all variables bound

求解!!!!!!!!!!1 ASP.NET 对象 类 SQL
[解决办法]
这么多代码,懒得看
分页用ASPNETPager就行了,很简单http://www.webdiyer.com/Controls/AspNetPager/
[解决办法]
这位兄台,分页只是样式,数据传递,你应该会,仅此而已,不要用那么多的服务器控件

ASPNETPager也只是展示而已 不知道那个绑定两次解决了没有,好久没用了

都是自己写的

[解决办法]
这样说吧,分页的展示其实就是一个a链接可用和不可用的问题

<a disabled="disabled">首页</a>

<a href="?page=2">下一页</a>

然后外面套一个div 自己控制

数据展示自己写for循环,repeater也是for循环啊,好多用repeater嵌套,感觉很无语,

为何不用二维数组来解决,话跑题了。。

<div class="fenye"><a disabled="disabled">首页</a><a disabled="disabled">上一页</a><span class="current">1</span><a href="?page=2">2</a><a href="?page=3">3</a><a href="?page=4">4</a><a href="?page=5">5</a><a href="?page=6">6</a><a href="?page=2">下一页</a><a href="?page=6">尾页</a> 共6页</div>
</div>

[解决办法]
<span class="current">1</span> 是当前第几页

你不想被人家的控件一直控制吧,没有服务器控件了,你怎么办,还得自己写,自己写完以后,你发现

就是那么简单,调用更方便 这个会了 ajax分页,随手拈来 因为原理一个样子
[解决办法]
这么多代码,懒得看
分页用ASPNETPager就行了,很简单http://www.webdiyer.com/Controls/AspNetPager/
[解决办法]

引用:
这么多代码,懒得看
分页用ASPNETPager就行了,很简单http://www.webdiyer.com/Controls/AspNetPager/
jQuery了

读书人网 >asp.net

热点推荐