aspnetpager 7.1 用户自定义逻辑分页的问题?

编程有钱人了 2008-07-23 09:08:33
下面是我的代码
环境 VWD2005 和 .net framework 2.0

ParaOpra po = new ParaOpra();
Message ms = new Message();
//public string xianshi = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
this.AspNetPager1.RecordCount =po.PageSizes();//计算总记录数
this.ShowMsg();
this.AspNetPager1.CustomInfoHTML= "总记录数"+this.AspNetPager1.RecordCount.ToString();
this.AspNetPager1.CustomInfoHTML+=" "+"当前第"+AspNetPager1.CurrentPageIndex.ToString()+"页";
}
}
private void ShowMsg()
{
string ssql = "select * from companyMsg";
OleDbConnection conn = new OleDbConnection(OleDbHelper.ConnectionStringLocalTransaction);
OleDbDataAdapter da = new OleDbDataAdapter(ssql,conn);
DataTable dt = new DataTable();
da.Fill(dt);
int startIndex = this.AspNetPager1.StartRecordIndex;
StringBuilder sb = new StringBuilder();
sb.Append("<table width=\"500\" style=\"margin-left:50px;\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
DataRow row;
if (AspNetPager1.RecordCount == 0)
{
sb.Append("<tr><td>现在暂时没有留言</td></tr>");
}
else
{
while (startIndex <= this.AspNetPager1.EndRecordIndex)
{
row = dt.Rows[startIndex - 1];
sb.Append("<tr><td width=\"50\" style=\"text-align:right\">" + "标题:" + "</td><td>" + row["MsgTitle"] + " " + " 时间:" + row["MsgTime"] + "</td></tr>");
sb.Append("<tr><td width=\"50\" style=\"text-align:right\">内容:</td><td>" + row["MsgContent"] + "</td></tr>");
startIndex++;
}
}

sb.Append("</table>");

this.PlaceHolder1.Controls.Add(new LiteralControl(sb.ToString()));
}
protected void Submit_Click(object sender, EventArgs e)
{
ms.MsgTitle = this.msgtitle.Text;
ms.MsgTime = DateTime.Now.ToString();
ms.MsgContent = this.msgcontent.Text;
ms.MsgUserIP = HttpContext.Current.Request.UserHostAddress;
po.CusMsg(ms);
if(po.CusMsg(ms)>0)
{
this.ShowMsg();
Page.ClientScript.RegisterStartupScript(this.GetType(), "alert1", "<script>alert('留言成功!');</script>");

}
}

protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;
this.ShowMsg();
}


为什么我点留言后 总记录数不增加?而且新添加的数据并不在上面显示
刷新也不行,重新转到也不行,除非把应用程序关掉,重新启动才可以,而且分页没效果。。。??
...全文
182 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdiyer 2008-07-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 wangjun8868 的回复:]
this.AspNetPager1.PageSize = 5;
现在问题都解决了
就剩这个了

不管在前台还是程序控制始终是默认的10
改不了
[/Quote]
你在哪里设置的这个属性?如果在分页事件程序中,那就太迟了,如果你要动态改变每页显示的记录数,可以试试用最新的7.1的UrlPageSizeName属性在url中指定每页记录数来实现。

[Quote=引用 19 楼 jyk 的回复:]
this.AspNetPager1.DataBind()
这个是什么时候加上的呀?
[/Quote]
我也纳闷呢,看了一下AspNetPager继承的Panel类,才发现是Panel的方法:)
编程有钱人了 2008-07-24
  • 打赏
  • 举报
回复
ok 谢谢了
问题解决了

大家辛苦了

呵呵
fang1572 2008-07-23
  • 打赏
  • 举报
回复
学习了,我一直以为是设置完recordcount后,必须要databind()一下呢
webdiyer 2008-07-23
  • 打赏
  • 举报
回复
楼主代码写错了,给数据显示控件绑定数据应该在PageChanged事件处理程序中,而不是PageChanging,PageChanging事件是为了在分页过程中取消分页操作而设的,没而且在事件处理程序中不需要CurrentPageIndex=e.NewPageIndex这样的代码,控件会自动获取当前页索引。关于添加记录没有在分页控件总记录数中显示的问题,是添加记录后没有重新设置RecordCount属性引起的,另外上面一些网友说的AspNetPager1.DataBind()方法是没有意义的,不需要调用这个方法,因为分页控件并不需要绑定数据。
fang1572 2008-07-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wangjun8868 的回复:]
但是用 7.0.2的时候是可以的
[/Quote]
不会吧
编程有钱人了 2008-07-23
  • 打赏
  • 举报
回复
个是因为你查询数据的时候没有用到CurrentPageIndex
你应该对string ssql = "select * from companyMsg order by id desc";
进行修改,这个最好是用个分页存储过程来实现,就是要实现,比如每页显示12条,你第一次绑定的时候就是要查出第1到第12条
就是第次查询的记录数是从(CurrentPageIndex -1)*pagesize+1到CurrentPageIndex *pagesize



但是用 7.0.2的时候是可以的
fang1572 2008-07-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wangjun8868 的回复:]
现在能正常分页了
但当插入新数据的时候 总记录数不变 而且 不管点到第几有页 始终显示第一页
[/Quote]
但当插入新数据的时候 总记录数不变
---------------------------------
this.AspNetPager1.RecordCount = po.PageSizes();//你看下这个值是否变了

而且 不管点到第几有页 始终显示第一页
-------------------------------------
这个是因为你查询数据的时候没有用到CurrentPageIndex
你应该对string ssql = "select * from companyMsg order by id desc";
进行修改,这个最好是用个分页存储过程来实现,就是要实现,比如每页显示12条,你第一次绑定的时候就是要查出第1到第12条
就是第次查询的记录数是从(CurrentPageIndex -1)*pagesize+1到CurrentPageIndex *pagesize
编程有钱人了 2008-07-23
  • 打赏
  • 举报
回复
修改完的代码

ParaOpra po = new ParaOpra();
Message ms = new Message();
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
this.AspNetPager1.RecordCount = po.PageSizes();
this.AspNetPager1.CustomInfoHTML = "总记录数" + this.AspNetPager1.RecordCount.ToString();
this.AspNetPager1.CustomInfoHTML += " " + "当前第" + AspNetPager1.CurrentPageIndex.ToString() + "页";
this.AspNetPager1.DataBind();
this.ShowMsg();
}
}
private void ShowMsg()
{
string ssql = "select * from companyMsg order by id desc";
OleDbConnection conn = new OleDbConnection(OleDbHelper.ConnectionStringLocalTransaction);
OleDbDataAdapter da = new OleDbDataAdapter(ssql,conn);

DataTable dt = new DataTable();
da.Fill(dt);
int startIndex = this.AspNetPager1.StartRecordIndex;
StringBuilder sb = new StringBuilder();
sb.Append("<table width=\"500\" style=\"margin-left:50px;\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">");
DataRow row;
if (AspNetPager1.RecordCount == 0)
{
sb.Append("<tr><td>现在暂时没有留言</td></tr>");
}
else
{
while (startIndex <= this.AspNetPager1.EndRecordIndex)
{
row = dt.Rows[startIndex - 1];
sb.Append("<tr><td width=\"50\" style=\"text-align:right\">" + "标题:" + "</td><td>" + row["MsgTitle"] + " " + " 时间:" + row["MsgTime"] + "</td></tr>");
sb.Append("<tr><td width=\"50\" style=\"text-align:right\">内容:</td><td>" + row["MsgContent"] + "</td></tr>");
startIndex++;
}
}

sb.Append("</table>");
this.PlaceHolder1.Controls.Add(new LiteralControl(sb.ToString()));

}
protected void Submit_Click(object sender, EventArgs e)
{
ms.MsgTitle = this.msgtitle.Text;
ms.MsgTime = DateTime.Now.ToString();
ms.MsgContent = this.msgcontent.Text;
ms.MsgUserIP = HttpContext.Current.Request.UserHostAddress;
if(po.CusMsg(ms)>0)
{

Page.ClientScript.RegisterStartupScript(this.GetType(), "alert1", "<script>alert('留言成功!');</script>");
this.ShowMsg();
}
}


protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;
this.ShowMsg();
}


现在能正常分页了
但当插入新数据的时候 总记录数不变 而且 不管点到第几有页 始终显示第一页
fang1572 2008-07-23
  • 打赏
  • 举报
回复
为什么每插入的时候一次插入2条?
插入数据其实和分页控件是没关系的,这个控件只是一个工具,把你的数据显示出来
至于显示什么数据是你数据源的原因
你插入的时候就往数据库里插入一条数据,然后对aspnetpage进行重新绑定就可以了
twtetg 2008-07-23
  • 打赏
  • 举报
回复
学习关注,帮你顶!!
尐孑 2008-07-23
  • 打赏
  • 举报
回复
编程有钱人了 2008-07-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mengjun5200 的回复:]
引用 3 楼 fang1572 的回复:
这个分页控件最简单的用法是
this.AspNetPager1.RecordCount =100;//100是记录数
this.AspNetPager1.DataBind() ;
这样就可以了
[/Quote]

为什么每插入的时候一次插入2条?
fang1572 2008-07-23
  • 打赏
  • 举报
回复

ParaOpra po = new ParaOpra();
Message ms = new Message();
//public string xianshi = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
DataBind() ;
}
}
private void DataBind()
{
string ssql = "select * from companyMsg";//这里做点修改,可以用一个存储过程什么的,根据this.AspNetPager1.CurrentPageIndex和,this.AspNetPager1.PageSize来查出所需要的数据
OleDbConnection conn = new OleDbConnection(OleDbHelper.ConnectionStringLocalTransaction);
OleDbDataAdapter da = new OleDbDataAdapter(ssql,conn);
DataTable dt = new DataTable();
da.Fill(dt);
this.AspNetPager1.RecordCount =dt.Rows.Count;
this.AspNetPager1.DataBind();
}

protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;
DataBind();
}

mengjun5200 2008-07-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fang1572 的回复:]
这个分页控件最简单的用法是
this.AspNetPager1.RecordCount =100;//100是记录数
this.AspNetPager1.DataBind() ;
这样就可以了
[/Quote]
fang1572 2008-07-23
  • 打赏
  • 举报
回复
这个分页控件最简单的用法是
this.AspNetPager1.RecordCount =100;//100是记录数
this.AspNetPager1.DataBind() ;
这样就可以了
编程有钱人了 2008-07-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fang1572 的回复:]
this.AspNetPager1.DataBind()
[/Quote]

还是不管用
fang1572 2008-07-23
  • 打赏
  • 举报
回复
this.AspNetPager1.DataBind()
自然框架 2008-07-23
  • 打赏
  • 举报
回复
this.AspNetPager1.DataBind()
这个是什么时候加上的呀?
fang1572 2008-07-23
  • 打赏
  • 举报
回复
pagesize一般默认好像是12吧,不知道是不是7.1改了
我一般都是这样用的,没问题啊
this.AspNetPager1.PageSize = 5;
this.AspNetPager1.RecordCount = count;
this.AspNetPager1.DataBind();
不好前面作者说了,好像不用 this.AspNetPager1.DataBind();
加载更多回复(1)

62,074

社区成员

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

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

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

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