asp.net的分页程序出现空对象。

开发.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对象为空

clipboard.png
然后我试着改成了list.DataSource = page.Data;
结果:
界面不显示任何内容。
求助各路大神~

阅读 2.7k
2 个回答

最好的办法就是打断点自己调试、

图片描述

着重看getAllCardsListPage这个方法对不对,运行进去看看

新手上路,请多包涵

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题