自己写代码实现分页导航

       问题提出: 在ASP.NET中,分页导航似乎变得很简单,使用DataGrid做一些简单的设置就OK了。但是细心老练的程序员不会喜欢这种方式的,因为这种方式每显示一页都需要将全部数据放置到DataGrid中,再选择相应页次的几个数据。当数据量很大的时候,速度就会成为问题。还有一个缺点是页面风格,当最后一页的记录条数小于设定的每页的条数时,样子就会变得很难看。

       技术分析:我们需要的是只查询出当前页次的记录,并按照设定的风格显示出来。这里设计到两个问题:一是数据库的查询,怎么动态的将特定页的特定数据查询出来;二是显示的问题,需要自己写一个函数来实现分页级导航的功能。

       MySql、Oracle数据库都有自己的查询数据库中指定开始和结束记录的SQL语句。但是好想SQl Server数据库只有 TOP  关键字来查询前几条记录。不过没关系,我们可以使用这个来创造出查询数据库中指定开始和结束记录的SQL语句:

       定义 page:当前页次;pageSize:每页显示条数;

         SELECT TOP pageSize from myTable

         WHERE ID NOT IN (

                 SELECT TOP pageSize*(page-1) FROM myTable

                 ORDER BY ID

           )

          ORDER BY ID

        这个只是一个简单的没有查询条件的查询,如果需要查询条件的时候,记住别忘记在两处都要添加查询条件。

        第二步是写一个Page类来实现分页导航的功能。其中一个方法:public string pageList(string strTitle,string strTab,string[] flds,string[] cols,string strCon,int pageSize,int startIndex)

strTile:分页导航的标题,例如为“新闻列表”

strTab:数据表名

flds:标题栏

cols:对应的数据字段

strCon:查询条件

pageSize:每页显示条数

startIndex:开始页数(0,1,2,3)

 

返回一段字符串代码,这段代码就是生成的分页导航的HTML代码,在pageLoad事件里,调用该方法,并将返回值赋值给页面上定义好的一个div就可以了。

this.New_Page.InnerHtml = Page.PageList(strTitle,strTab,flds,cols,strCon,recordCount,PageSize,0);


  示例代码:篇幅限制,需要请联系我。

MSN:fanhuayi76@hotmail.com

QQ:7760126

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用 Flask 和 Bootstrap 实现完整分页导航菜单的示例代码: ```python from flask import Flask, render_template, request from math import ceil app = Flask(__name__) # 模拟数据 data = [ {"id": 1, "name": "John"}, {"id": 2, "name": "Mary"}, {"id": 3, "name": "Tom"}, {"id": 4, "name": "Jane"}, {"id": 5, "name": "Bob"}, {"id": 6, "name": "Kate"}, {"id": 7, "name": "David"}, {"id": 8, "name": "Lily"}, {"id": 9, "name": "Peter"}, {"id": 10, "name": "Lucy"}, {"id": 11, "name": "Mike"}, {"id": 12, "name": "Susan"}, {"id": 13, "name": "Jack"}, {"id": 14, "name": "Sophie"}, {"id": 15, "name": "Chris"}, {"id": 16, "name": "Emma"}, {"id": 17, "name": "Kevin"}, {"id": 18, "name": "Grace"}, {"id": 19, "name": "Frank"}, {"id": 20, "name": "Olivia"} ] # 每显示的数据条数 PER_PAGE = 5 @app.route("/") def index(): # 获取当前码,如果没有则默认为第一 page = request.args.get("page", 1, type=int) # 计算总数 total_pages = ceil(len(data) / PER_PAGE) # 获取当前数据 start_index = (page - 1) * PER_PAGE end_index = start_index + PER_PAGE current_data = data[start_index:end_index] # 渲染模板 return render_template("index.html", data=current_data, page=page, total_pages=total_pages) if __name__ == "__main__": app.run(debug=True) ``` 在模板文件 `index.html` 中,你需要使用 Bootstrap 的分页组件来显示分页导航菜单。以下是示例代码: ```html <!DOCTYPE html> <html> <head> <title>Flask Pagination Example</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"> </head> <body> <div class="container"> <h1 class="text-center">Flask Pagination Example</h1> <table class="table"> <thead> <tr> <th>ID</th> <th>Name</th> </tr> </thead> <tbody> {% for item in data %} <tr> <td>{{ item.id }}</td> <td>{{ item.name }}</td> </tr> {% endfor %} </tbody> </table> <nav aria-label="Page navigation example"> <ul class="pagination justify-content-center"> {% if page > 1 %} <li class="page-item"><a class="page-link" href="?page={{ page-1 }}">上一</a></li> {% endif %} {% for i in range(1, total_pages+1) %} {% if i == page %} <li class="page-item active"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li> {% else %} <li class="page-item"><a class="page-link" href="?page={{ i }}">{{ i }}</a></li> {% endif %} {% endfor %} {% if page < total_pages %} <li class="page-item"><a class="page-link" href="?page={{ page+1 }}">下一</a></li> {% endif %} </ul> </nav> </div> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script> </body> </html> ``` 在这个示例中,我们使用了 Bootstrap 的分页组件来显示分页导航菜单。在模板文件中,我们使用了 Flask 的模板引擎来动态生成分页链接。当用户点击分页链接时,Flask 会重新加载面并显示相应的数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值