急,急,急分页问题???

sunboyyun 2009-01-04 01:34:33
public int Record_Per_Page; //定义每页显示记录数
int nPageCount; //定义总页数
int nRecCount; //定义总记录数
int nPage; //定义当前页
//获得总记录数
nRecCount = pd.GetObjectCountByTime(timeStart, timeEnd);
StringBuilder strHtml = new StringBuilder("");

//取得当前页数,并判断
if (Request["pagesize"] == null)
Record_Per_Page = 25;
else
Record_Per_Page = Convert.ToInt32(Request["pagesize"]);

//判断是否存在数据记录
if (nRecCount > 0)
{
//确定数据记录要显示的页面数
nPageCount = nRecCount / Record_Per_Page;
if (nRecCount % Record_Per_Page > 0)
nPageCount++;
if (nPage < 1)
nPage = 1;
if (nPage > nPageCount)
nPage = nPageCount;

//将页面显示到屏幕上,并作连接
for (int i = 1; i < nPageCount; i++)
{
strHtml.Append("<a href='Dengji.aspx?page=" + i + "×tart=" + timeStart.ToString("yyyy-MM-dd") + "&timeend=" + timeEnd.ToString("yyyy-MM-dd") + " '>");
//strHtml.Append("<a href='Dengji.aspx?page=" + i + "'>");
if (i == nPage) strHtml.Append("<b>" + i + "</b>");
else strHtml.Append(i);
strHtml.Append("</a> ");
}
//确认当前页面的开始记录和终止记录
int nStart = Record_Per_Page * (nPage - 1);
int nEnd = nStart + Record_Per_Page - 1;
if (nEnd > nRecCount - 1)
nEnd = nRecCount - 1;

strlnk = strHtml.ToString();

StrSql.AppendFormat("SELECT distinct TOP {0} * FROM C_Work_Object WHERE ", Record_Per_Page.ToString());
StrSql.AppendFormat("( Obj_id NOT IN (SELECT TOP {0} Obj_id FROM C_Work_Object", (Record_Per_Page * (nPage - 1)).ToString());
StrSql.Append(" ORDER BY Obj_id DESC)");
strSql.Append(" ORDER BY Obj_id DESC");
pdperson = pd.GetObjectBySql(StrSql.ToString() +strSql.ToString() );
这是我写的一个手工分页代码,设置的每页显示的记录数是25条,但现在的问题是当页面计算出来多余的记录数大于或少于25条时,都不显示,哪位大狭帮指点一下啊,怎么改正啊???多谢~~
...全文
136 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunboyyun 2009-01-05
  • 打赏
  • 举报
回复
因为数据不好取啊,所以就只能自己写分页了,有没有高手指点一下啊,我的记录数小于25条时为什么不显示啊 ????急啊,望高手指教啊??
chinacn101 2009-01-04
  • 打赏
  • 举报
回复
晕 又不是没分页干吗自己写?

PagedDataSource ps = new PagedDataSource();
ps.AllowPaging = true;
ps.PageSize = 2;
ps.CurrentPageIndex = pg - 1;
ps.DataSource = *****;

//***** bind
if (!ps.IsFirstPage)
{

HyperLink1.NavigateUrl = "?" + (pg - 1);
}
if (!ps.IsLastPage)
{
HyperLink2.NavigateUrl = "?" + (pg + 1);
}
sunboyyun 2009-01-04
  • 打赏
  • 举报
回复
这个问题就这么难么??
sunboyyun 2009-01-04
  • 打赏
  • 举报
回复
郁闷,没有高手进来指点??
sunboyyun 2009-01-04
  • 打赏
  • 举报
回复
楼上的大狭,加上等号也不向啊,显示的都是整页数啊,多余的记录数即:不够页面指定的25记录数还是没显示出来啊??急啊,什么原因啊???
starsword 2009-01-04
  • 打赏
  • 举报
回复
//将页面显示到屏幕上,并作连接
for (int i = 1; i < nPageCount; i++)
{
strHtml.Append(" <a href='Dengji.aspx?page=" + i + "×tart=" + timeStart.ToString("yyyy-MM-dd") + "&timeend=" + timeEnd.ToString("yyyy-MM-dd") + " '>");
//strHtml.Append(" <a href='Dengji.aspx?page=" + i + "'>");
if (i == nPage) strHtml.Append(" <b>" + i + " </b>");
else strHtml.Append(i);
strHtml.Append(" </a> ");
}
============================================================================

在上面的 for 循环条件里,应该是

for (int i = 1; i <= nPageCount; i++)

注意其中的终止 i <= nPageCount
sunboyyun 2009-01-04
  • 打赏
  • 举报
回复
就没有高手进来指教一下吗????
sunboyyun 2009-01-04
  • 打赏
  • 举报
回复
PDPerson pd = new PDPerson();

//获得总记录数
nRecCount = pd.GetObjectCountByTime(timeStart, timeEnd);
StringBuilder strHtml = new StringBuilder("");

//取得当前页数,并判断
if (Request["pagesize"] == null)
Record_Per_Page = 25;
else
Record_Per_Page = Convert.ToInt32(Request["pagesize"]);

//判断是否存在数据记录
if (nRecCount > 0)
{
//确定数据记录要显示的页面数
nPageCount = nRecCount / Record_Per_Page;
if (nRecCount % Record_Per_Page > 0)
nPageCount++;
if (nPage < 1)
nPage = 1;
if (nPage > nPageCount)
nPage = nPageCount;

//将页面显示到屏幕上,并作连接
for (int i = 1; i < nPageCount; i++)
{
strHtml.Append("<a href='Dengji.aspx?page=" + i + "×tart=" + timeStart.ToString("yyyy-MM-dd") + "&timeend=" + timeEnd.ToString("yyyy-MM-dd") + " '>");
//strHtml.Append("<a href='Dengji.aspx?page=" + i + "'>");
if (i == nPage) strHtml.Append("<b>" + i + "</b>");
else strHtml.Append(i);
strHtml.Append("</a> ");

}

//确认当前页面的开始记录和终止记录
int nStart = Record_Per_Page * (nPage - 1);
int nEnd = nStart + Record_Per_Page - 1;
if (nEnd > nRecCount - 1)
nEnd = nRecCount - 1;

strlnk = strHtml.ToString();

StringBuilder StrSql = new StringBuilder();
StringBuilder strSql = new StringBuilder();
StrSql.AppendFormat("SELECT distinct TOP {0} * FROM C_Work_Object WHERE ", Record_Per_Page.ToString());
StrSql.AppendFormat("( Obj_id NOT IN (SELECT TOP {0} Obj_id FROM C_Work_Object", (Record_Per_Page * (nPage - 1)).ToString()); if (timeStart != DateTime.MinValue || timeEnd != DateTime.MinValue)
{
StrSql.Append(" where ");
if (timeStart == DateTime.MinValue)
{
StrSql.AppendFormat(" Obj_dotime < '{0}'", timeEnd.ToString());
strSql.AppendFormat(" Obj_dotime < '{0}')", timeEnd.ToString());
}
else if (timeEnd == DateTime.MinValue)
{
StrSql.AppendFormat(" Obj_dotime > '{0}'", timeStart.ToString());
strSql.AppendFormat(" Obj_dotime > '{0}')", timeStart.ToString());
}
else
{
StrSql.AppendFormat(" Obj_dotime between '{0}' and '{1}'", timeStart.ToString(), timeEnd.ToString());
strSql.AppendFormat(" Obj_dotime between '{0}' and '{1}')", timeStart.ToString(), timeEnd.ToString());
}

}
StrSql.Append(" ORDER BY Obj_id DESC)");
StrSql.Append(" and ");
strSql.Append(" ORDER BY Obj_id DESC");
pdperson = pd.GetObjectBySql(StrSql.ToString() +strSql.ToString() );
楼上的掌柜,加入断点没有报错,我的问题是:计算页面数不可能刚好是整数啊,但多余的记录数,我的就显示不出来了,帮忙指点一下啊>>>??
Fibona 2009-01-04
  • 打赏
  • 举报
回复
StrSql.AppendFormat("SELECT distinct TOP {0} * FROM C_Work_Object WHERE ", Record_Per_Page.ToString());
StrSql.AppendFormat("( Obj_id NOT IN (SELECT TOP {0} Obj_id FROM C_Work_Object", (Record_Per_Page * (nPage - 1)).ToString());
StrSql.Append(" ORDER BY Obj_id DESC)");
strSql.Append(" ORDER BY Obj_id DESC");
pdperson = pd.GetObjectBySql(StrSql.ToString());

//你上面打了两个StrSql.Append("ORDER BY Obj_id DESC"); 与 strSql.Append(" ORDER BY Obj_id DESC");
重复了吧,

你加一个断点看看你的Sql语句,拿到查询分析器里面,肯定报错了,

注:
select top @PageSize * from TableName where [PK] not in(select top @RecordStart [pk] from jobs ) order by pk asc/desc。
@PageSize是每一页显示的条数。
TableName是要求分页的表或者视图,PK是一个唯一字段。
@RecordStart 是记录开始的位置.根据每一页多少条,与第几页,算出来的.具体算法一般为:@RecordStart=PageSize*(PageNums-1)。
sunboyyun 2009-01-04
  • 打赏
  • 举报
回复
大狭们都很忙啊 ??怎么没有人进来指点一下啊??

111,130

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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