关于分页控件AspNetPager中的EndRecordIndex属性

party620 2013-06-29 04:36:51
第一次加载是页码和分页都是正确的,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;
}
}

...全文
150 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
party620 2013-06-29
  • 打赏
  • 举报
回复
我调试过了,方法没问题,就是穿进去的值有问题,AspNetPager1.EndRecordIndex的值得到的1,本来不应该是1的,我就是想问我的表示层里面的漏洞的地方,要不然,得到AspNetPager1.EndRecordIndex值应该是正确的
tan598121925 2013-06-29
  • 打赏
  • 举报
回复
引用 4 楼 lyx_1094562530 的回复:
[quote=引用 3 楼 tan598121925 的回复:] [quote=引用 2 楼 lyx_1094562530 的回复:] [quote=引用 1 楼 tan598121925 的回复:] 再次显示多条数据时 调试看一下有没有赋到值给AspNetPager1.RecordCount
调用啦,显示的是1,但本来应该是2的[/quote] 哪就是GetAspNetPagerCount这个方法的问题了[/quote] 这一个应该也没错的,因为我前两次执行获得的值都是正确的[/quote] 你调试一下这个方法就知道了
party620 2013-06-29
  • 打赏
  • 举报
回复
引用 3 楼 tan598121925 的回复:
[quote=引用 2 楼 lyx_1094562530 的回复:] [quote=引用 1 楼 tan598121925 的回复:] 再次显示多条数据时 调试看一下有没有赋到值给AspNetPager1.RecordCount
调用啦,显示的是1,但本来应该是2的[/quote] 哪就是GetAspNetPagerCount这个方法的问题了[/quote] 这一个应该也没错的,因为我前两次执行获得的值都是正确的
tan598121925 2013-06-29
  • 打赏
  • 举报
回复
引用 2 楼 lyx_1094562530 的回复:
[quote=引用 1 楼 tan598121925 的回复:] 再次显示多条数据时 调试看一下有没有赋到值给AspNetPager1.RecordCount
调用啦,显示的是1,但本来应该是2的[/quote] 哪就是GetAspNetPagerCount这个方法的问题了
party620 2013-06-29
  • 打赏
  • 举报
回复
引用 1 楼 tan598121925 的回复:
再次显示多条数据时 调试看一下有没有赋到值给AspNetPager1.RecordCount
调用啦,显示的是1,但本来应该是2的
tan598121925 2013-06-29
  • 打赏
  • 举报
回复
再次显示多条数据时 调试看一下有没有赋到值给AspNetPager1.RecordCount

62,075

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧