急,急,分页显示问题?

sunboyyun 2008-12-29 10:27:27
这是我自己写的分页代码,没有用系统里的水晶报表之类的,是用table做的报表~
protected void Page_Load(object sender, EventArgs e)
{
if (Request["page"] == null)
nPage = 1;
else
nPage = Convert.ToInt32(Request["page"]);

DateTime timeStart = DateTime.MinValue;
DateTime timeEnd = DateTime.MinValue;
if (Request["timestart"] != "") timeStart = DateTime.Parse(Request["timestart"]);
if (Request["timeend"] != "") timeEnd = DateTime.Parse(Request["timeend"]);

PageDisplay(timeStart, timeEnd);
}

public void PageDisplay(DateTime timeStart, DateTime timeEnd)
{
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") + " '>");
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();
StrSql.AppendFormat("SELECT 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());
}
else if (timeEnd == DateTime.MinValue)
{
StrSql.AppendFormat(" Obj_dotime > '{0}'", timeStart.ToString());
}
else
{
StrSql.AppendFormat(" Obj_dotime between '{0}' and '{1}'", timeStart.ToString(), timeEnd.ToString());
}
StrSql.Append(" ORDER BY Obj_id DESC ))");
}

StrSql.Append(" ORDER BY Obj_id DESC ");
pdperson = pd.GetObjectBySql(StrSql.ToString());

}
}

上面涉及到到两个调用的方法如下:
public DataTable GetObjectBySql(string SQLString)
{
return this.dbProcessor.SelectDataTable(SQLString);
}

//根据接收的时间获得总数
public int GetObjectCountByTime(DateTime timeStart, DateTime timeEnd)
{
StringBuilder strsql = new StringBuilder("select count(Obj_id) from [dbo].[C_Work_Object]");
if (timeStart != DateTime.MinValue || timeEnd != DateTime.MinValue)
{
strsql.Append(" where ");
if (timeStart == DateTime.MinValue)
{
strsql.AppendFormat("Obj_dotime< '{0}'", timeEnd.ToString());
}
else if (timeEnd == DateTime.MinValue)
{
strsql.AppendFormat("Obj_dotime> '{0}'", timeStart.ToString());
}
else
{
strsql.AppendFormat("Obj_dotime between '{0}' and '{1}'", timeStart.ToString(), timeEnd.ToString());
}
}
return Convert.ToInt32(this.dbProcessor.ExecuteInsert(strsql.ToString()));
}

在页面用<td><%=strlnk %>来显示的,可出现的数据好象有几页的数据是一样的,哪位大狭指点一下啊,看有什么地方出错没?谢谢~
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyx717 2008-12-29
  • 打赏
  • 举报
回复
UP
abcyzq 2008-12-29
  • 打赏
  • 举报
回复
同意2楼的观点。
hanghangz 2008-12-29
  • 打赏
  • 举报
回复
看着晕,友情mark
sunboyyun 2008-12-29
  • 打赏
  • 举报
回复
不会吧,没有人???
sunboyyun 2008-12-29
  • 打赏
  • 举报
回复
//将页面显示到屏幕上,并作连接
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") + " '>");
if (i == nPage) strHtml.Append(" <b>" + i + " </b>");
else strHtml.Append(i);
strHtml.Append(" </a> ");

} 这地方有问题吗?请指教啊?
longren_zhisan 2008-12-29
  • 打赏
  • 举报
回复
//将页面显示到屏幕上,并作连接
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") + " '>");
if (i == nPage) strHtml.Append(" <b>" + i + " </b>");
else strHtml.Append(i);
strHtml.Append(" </a> ");

}
sunboyyun 2008-12-29
  • 打赏
  • 举报
回复
请高手们慷慨解囊相助啊~~~

111,130

社区成员

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

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

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