开发.net程序的时候,涉及到分页的功能了,所以按照java的那一套办法手写了一个分页的工具类:
具体如下:
第一个是StuInfo实体类:StuInfo.cs
using System;
using System.Web;
namespace noteReg
{
public class StuInfo
{
private string ks_zkz;
public string Ks_zkz
{
get { return ks_zkz; }
set { ks_zkz = value; }
}
private string tj_km_dm;
public string Tj_km_dm
{
get { return tj_km_dm; }
set { tj_km_dm = value; }
}
private string kssj;
public string Kssj
{
get { return kssj; }
set { kssj = value; }
}
private string bjsh_jg_jq;
public string Bjsh_jg_jq
{
get { return bjsh_jg_jq; }
set { bjsh_jg_jq = value; }
}
private string bjsh_jg_qx;
public string Bjsh_jg_qx
{
get { return bjsh_jg_qx; }
set { bjsh_jg_qx = value; }
}
private string bjsh_jg_skb;
public string Bjsh_jg_skb
{
get { return bjsh_jg_skb; }
set { bjsh_jg_skb = value; }
}
private string bjsh_jg_zs;
public string Bjsh_jg_zs
{
get { return bjsh_jg_zs; }
set { bjsh_jg_zs = value; }
}
}
}
第二个是:
**`PageUtil.cs`**
using System;
using System.Web;
using System.Collections.Generic;
namespace noteReg.property
{
public class PageUtil
{
private int pageNo;
public int PageNo
{
get { return pageNo; }
set { pageNo = value; }
}
private int pageSize;
public int PageSize
{
get { return pageSize; }
set { pageSize = value; }
}
private int totalCount;
public int TotalCount
{
get { return totalCount; }
set { totalCount = value; }
}
private List<StuInfo> data;//当前页的元素集合
public List<StuInfo> Data
{
get { return data; }
set { data = value; }
}
public void setData(List<StuInfo> data)
{
this.data = data;
}
public void setPageNo(int pageNo)
{
this.pageNo = pageNo;
}
private int totalPage;
public PageUtil(int pageSize, int totalCount)
{
this.pageSize = pageSize;
this.totalCount = totalCount;
if (this.totalCount % this.pageSize == 0)
{
this.totalPage = this.totalCount / this.pageSize;
}
else
{
this.totalPage = this.totalCount / this.pageSize + 1;
}
}
}
}
第三个是Pagination.cs
using System;
using System.Configuration;
using System.Web;
using Oracle.ManagedDataAccess.Client;
using System.Collections.Generic;
namespace noteReg.property
{
public class Pagination
{
public PageUtil getAllCardsListPage(int pageNo,int pageSize)
{
List<StuInfo> stuList = new List<StuInfo>();
String connctionString = ConfigurationManager.ConnectionStrings["Oracle_DB"].ToString();
OracleConnection conn = new OracleConnection(connctionString);
OracleCommand cmd = conn.CreateCommand();
int totalCount = 0;//记录唯一话学号后的总记录数
PageUtil page = null;//声明页面对象
cmd.CommandText = "SELECT COUNT(DISTINCT(KS_ZKZ)) FROM ZK.T_BYSQ_KS_KC";
conn.Open();
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
totalCount = reader.GetInt32(0);
}
cmd.CommandText = "SELECT KS_ZKZ,rn FROM (SELECT KS_ZKZ,ROWNUM rn FROM (SELECT DISTINCT(a.KS_ZKZ) from ZK.T_BYSQ_KS_KC a ORDER BY a.KS_ZKZ ASC)) WHERE rn>="+(pageNo-1)*pageSize+" AND rn<="+pageNo*pageSize;
while(reader.Read()){
StuInfo stu = new StuInfo();
stu.Ks_zkz = reader[0].ToString();
stuList.Add(stu);
}
page = new PageUtil(pageSize,totalCount);
page.setData(stuList);
conn.Close();
return page;
}
}
}
调用上面的方式的页面处理程序的代码如下:
Pagination dao = new Pagination();
int pageNo = Convert.ToInt32(Request.QueryString["pageNo"]);
PageUtil page = dao.getAllCardsListPage(pageNo,10);
list.DataSource = page;
list.DataBind();
问题出现在list.DataSource = page;
这一行,显示page中的Data对象为空
然后我试着改成了list.DataSource = page.Data;
结果:
界面不显示任何内容。
求助各路大神~
最好的办法就是打断点自己调试、
着重看
getAllCardsListPage
这个方法对不对,运行进去看看