求分页思路啊,整了几天了,一筹莫展
我在做一个留言板,想把数据库某表中的记录逐条分页显示出来,就像csdn论坛这种样式(完了还有管理,回复等功能),请教具体步骤跟方法思路,不要贴链接,我看过好多个了,要么老长不知如何套用,麻烦前辈耐心指点一下,越详细越好了,(创建什么文件开始),在线等,弄好速度给分
[解决办法]
分页可以用AspNetPager,示例在这里:http://webdiyer.com/AspNetPagerDemo/default.aspx
[解决办法]
思路无非是从数据库里读取 第n条到第m条的数据。。其中这个n和m是根据你需要分页的每页条数决定的。比如你15条数据分3页显示,你要查看第二页的数据就查询第6到第10条数据。数据库查询的部分自己写存储过程或者SQL语句了,分页控件的话可以用 AspNetPager ,用法可以参考 http://blog.csdn.net/ptyzhu/article/details/7911708
[解决办法]
我做的留言板 跟CSDN类似 有回复功能
管理吗 只有 删除 留言 删除 回复
用DataList 控件 回复的话 在DataList里面嵌套一个DataList
这是后台给DataList 绑定数据 分页代码
- C# code
public void DataListBind() //将数据绑定到Datalist控件 { string connectString = @"Data Source=.;Initial Catalog=MyWeb;User ID=sa;Password=123456"; SqlConnection conn = new SqlConnection(connectString); string sqlStr = "select * from Message order by no desc"; SqlDataAdapter sda = new SqlDataAdapter(sqlStr, conn); DataSet ds = new DataSet(); sda.Fill(ds, "pro"); //创建数据源 PagedDataSource pds = new PagedDataSource(); pds.DataSource = ds.Tables["pro"].DefaultView; //允许分页 pds.AllowPaging = true; //设置每页显示记录数 pds.PageSize = 5; //获取总页数 pageCount = pds.PageCount; this.lb_PageCount.Text = pageCount.ToString(); pds.CurrentPageIndex = currentPage - 1; //当前页 this.lb_CurrentPage.Text = Convert.ToString(currentPage); //数据绑定 this.dl_ShowMessage.DataSource = pds; this.dl_ShowMessage.DataBind(); } /// <summary> /// 上一页 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void PreviousLB_Click(object sender, EventArgs e) { if (this.lb_CurrentPage.Text != "1") { currentPage = int.Parse(this.lb_CurrentPage.Text) - 1; this.lb_CurrentPage.Text = currentPage.ToString(); DataListBind(); } } /// <summary> /// 下一页 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void NextLB_Click(object sender, EventArgs e) { if (this.lb_PageCount.Text == this.lb_CurrentPage.Text) { } else { currentPage = int.Parse(this.lb_CurrentPage.Text) + 1; this.lb_CurrentPage.Text = currentPage.ToString(); DataListBind(); } } /// <summary> /// 第一页 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void FirstLB_Click(object sender, EventArgs e) { if (this.lb_CurrentPage.Text == "1") { } else { currentPage = 1; DataListBind(); } } /// <summary> /// 最后一页 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void EndLB_Click(object sender, EventArgs e) { this.lb_CurrentPage.Text = this.lb_PageCount.Text; currentPage = int.Parse(this.lb_CurrentPage.Text); DataListBind(); }
[解决办法]
------解决方案--------------------
[解决办法]
可以使用一些现成的控件,但自己最好研究下原理,代码之类的,对自己提高有帮助的
[解决办法]
给你个比较好点的思路,先读数据库200条数据,存放在一个DATATABLE中,每页显示20条,当翻到10也或者该页面刷新的时候在去数据库抓取200条数据,抓多少数据看你分页了,这样能解决你数据库数据过多而导致分页卡,则不需要每次翻页都对数据库读取。
[解决办法]
[解决办法]
http://blog.csdn.net/wangyizhi58/article/details/7914582 看看吧或许有帮助
[解决办法]
[解决办法]
告诉你我经常的做法吧。
用reapeat控件
1. 肯定是做好了界面了,然后把要循环的html放入
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
/***这里放要循环的html,在指定的地方放入要绑定的数据,***/
</ItemTemplate>
</asp:Repeater>
2. 在后台给Repeater绑定数据就行了
3. 分页的话,你直接在网上搜搜Repeater自定义分页就行了
我是很烦用那些第三方空间的
[解决办法]
LZ要真分页还是假分页啊。
两个分页的方法略有不同啊。
1.查出数据库所有记录,每页显示10行。
2.每次查10条记录显示出来,下一页从上一页的最后一个记录id的下一个id开始查10条记录!
思路就上边两个方法。
貌似用reapeat是比较好的。
[解决办法]