首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于分页控件AspNetPager中的EndRecordIndex属性,该怎么处理

2013-07-09 
关于分页控件AspNetPager中的EndRecordIndex属性第一次加载是页码和分页都是正确的,repeater控件显示的是

关于分页控件AspNetPager中的EndRecordIndex属性
第一次加载是页码和分页都是正确的,repeater控件显示的是一条数据
当我输入的查询条件得到的是一条数据时,也没错;
当我打算再次显示多条数据时,repeater控件得到的就是一条数据,而且调试的EndRecordIndex=1,

帮我看看代码哪有漏洞,实在找不出来啦?




表示层的内容:


  protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GetddlregionSource();  //区域的数据源

            string pre = txtpredate.Value + " 00:00:00";
            string next = txtnextdate.Value + " 23:59:59";
            string regions = ddlregion.SelectedItem.Text;

            AspNetPager1.RecordCount = JICHAManager.GetAspNetPagerCount(AspNetPager1.StartRecordIndex, AspNetPager1.EndRecordIndex,pre,next,regions);  //加载时得到总页数

            GetAspNetPagerSource(); //得到所有的记录
        }
      
    }

    #region “得到地区的数据源”
    public void GetddlregionSource()
    {
        IList<SEC_REGION> list = SEC_REGIONManager.GetAllRegion();
        ddlregion.DataTextField = "REGION_NAME";
        ddlregion.DataValueField = "REGION_ID";
        ddlregion.DataSource = list;
        ddlregion.DataBind();
        ddlregion.Items.Insert(0, new ListItem("--全部--", "-1"));
    }
    #endregion


   


    #region “提交”按钮
    protected void btnsubmit_Click(object sender, EventArgs e)
    {

        AspNetPager1.CurrentPageIndex = 1;

        string pre = txtpredate.Value + " 00:00:00";
        string next = txtnextdate.Value + " 23:59:59";


        string regions = ddlregion.SelectedItem.Text;

        GetAspNetPagerSource();

        AspNetPager1.RecordCount = JICHAManager.GetAspNetPagerCount(AspNetPager1.StartRecordIndex, AspNetPager1.EndRecordIndex, pre, next, regions);

       

    }
    #endregion

    #region “得到条件得到分页控件的数据源”

    public void GetAspNetPagerSource()
    {
        string pre = txtpredate.Value + " 00:00:00";
        string next = txtnextdate.Value + " 23:59:59";
        string regions = ddlregion.SelectedItem.Text;

        IList<Model.JICHA> list = JICHAManager.GetAspNetPagerSource(AspNetPager1.StartRecordIndex, AspNetPager1.EndRecordIndex, pre, next, regions);

        if (list != null)
        {
            Repeater1.DataSource = list;
            Repeater1.DataBind();
        }
        else
        {
            ClientScript.RegisterStartupScript(GetType(), "", "<script>alert('数据不存在,请重新输入条件');</script>");
            

        }
    }

    #endregion 


    #region “翻页”
    protected void AspNetPager1_PageChanged(object sender, EventArgs e)
    {
        string pre = txtpredate.Value + " 00:00:00";
        string next = txtnextdate.Value + " 23:59:59";
        string regions = ddlregion.SelectedItem.Text;

        //AspNetPager1.RecordCount = JICHAManager.GetAspNetPagerCount(AspNetPager1.StartRecordIndex, AspNetPager1.EndRecordIndex, pre, next, regions);



        GetAspNetPagerSource();

    }
    #endregion 
}




DAl中的:

 /// <summary>
        /// 根据起始时间,起始页码,地区得到所有的总页数
        /// </summary>
        /// <param name="start">起页码</param>
        /// <param name="end">止页码</param>
        /// <param name="pre">起时间</param>
        /// <param name="next">止时间</param>
        /// <param name="regions">地区</param>
        /// <returns>总页码</returns>
        public static int GetAspNetPagerCount(int start, int end, string pre, string next, string regions)
        {
            string sql = "";
            if (pre.Length<10 && regions=="--全部--")
            {  //初次加载
                sql = "select count(*) from JICHA";
            }
            else if (pre.Length > 10 && regions == "--全部--")
            { //地区为所有地方
                sql = string.Format("select count(*) from (select *, row_number() over (order by juid) as num from JICHA  where J_DATE between '{0}' and '{1}' ) as newjc where num between {2} and {3}", pre, next, start, end);
            }
            else
            {
                sql = string.Format("select count(*) from (select *, row_number() over (order by juid) as num from JICHA  where STORE_ADDRESS like '{0}%' and  J_DATE between '{1}' and '{2}' ) as newjc where num between {3} and {4}", regions, pre, next, start, end);


            }
            
            try
            {
                int val =Convert.ToInt32(SqlHelper.ExecuteScalar(SqlHelper.AppConnectionString, CommandType.Text, sql, null));
                if (val>0)
                {
                    return val;
                }
                else
                {
                    return 0;
                }
            }
            catch (Exception)
            {
                
                return 0;
            }
        }



       /// <summary>
        /// 根据查询时间的起始时间和所在区域得到数据源
       /// </summary>
       /// <param name="start">起页码</param>
       /// <param name="end">止页码</param>
       /// <param name="pre">起时间</param>
       /// <param name="next">止时间</param>
       /// <param name="regions">所属区域</param>
       /// <returns>集合</returns>
        public static IList<JICHA> GetAspNetPagerSource(int start, int end, string pre, string next, string regions)


        {
            string sql = "";
            if (regions=="--全部--" && pre.Length>10)
            {
                 sql = string.Format("select * from (select *,row_number() over (order by juid) as num from jicha where  J_DATE between '{0}' and '{1}') as newjicha where num between {2} and {3}", pre, next, start, end);
            }
            else if (pre.Length<10)
            {
                 sql = string.Format("select * from (select *,row_number() over (order by juid) as num from jicha ) as newjicha where num between {0} and {1}",  start, end);
                
            }
            else
            {
                 sql = string.Format("select * from (select *,row_number() over (order by juid) as num from jicha where STORE_ADDRESS like '{0}%' and  J_DATE between '{1}' and '{2}') as newjicha where num between {3} and {4}", regions, pre, next, start, end);
            }
            

            IList<JICHA> list = new List<JICHA>();

            try
            {
                SqlDataReader reader = SqlHelper.ExecuteReader(SqlHelper.AppConnectionString, CommandType.Text, sql, null);


                while (reader.Read())
                {
                    JICHA jc = new JICHA(reader);
                    list.Add(jc);
                }
                if (list!=null)
                {
                    reader.Close();
                    return list;
                }
                else
                {
                    reader.Close();
                    return null;
                }
            }
            catch (Exception)
            {
                
                return null;
            }
        }

控件 分页 SQL


[解决办法]

引用:
Quote: 引用:

再次显示多条数据时
调试看一下有没有赋到值给AspNetPager1.RecordCount


调用啦,显示的是1,但本来应该是2的

哪就是GetAspNetPagerCount这个方法的问题了

热点排行
Bad Request.