web2py的SQLFORM.grid构造时,可以在 paginate 设置 每页显示条数,如何让用前台动态的设置,假如我们有个 页面function叫做 index
def index(): grid = SQLFORM.grid(... paginate = 20, ...) return locals()
要实现动态设置paginate,就把这个参数放在session中:
def index(): if not session.Paginate: paginate = 20 else: paginate = session.Paginate grid = SQLFORM.grid(... paginate = paginate, ...) return locals()
增加一个 另外一个function,设置
def setPaginate(): if request.args[0] not in ['10','20','50','100']: return else: session.paginate = int(request.args[0]) return
在view 的html里面增加:
<div > <form action="" style="float:right"> <select name="Paginate" οnchange="setPaginate(this.value)" style="font-family:Verdana, Arial, Helvetica, sans-serif;"> <option value=""></option> <option value="/10">每页10条</option> <option value="/20">每页20条</option> <option value="/50">每页50条</option> <option value="/100">每页100条</option> </select> </form> <p style="float:right">当前每页显示{{=Paginate_upload}}条,设置每页显示数量:</p> </div>
<script> function setPaginate(str) { var xmlhttp; if (str == "") {return;} xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", "/setPaginate" + str, true); xmlhttp.send(); location.reload(); } </script>
看看最终效果