平台默认的报表分页设置record-per-page:每页显示几条记录批注是打印和导出PDF在可以起作用的
运行时默认是不会分页的,如果要显示分页需要自己实现分页的工具条,KSQL或者SQL中分页查询
本例是用KSQL实现的,定义了两个action,一个action是带参数分页查报表数据的,另一个action是查报表数据的总记录数
带参数分页查报表数据的action对应的java代码如下:
public static Table reportPage(Integer offset){
String ksql = "select rq.* from AP_RQ rq limit " + offset+",10";//KSQL中使用limit分页查询,每页取10条数据
Table table = KSQL.select(ksql, null, "/appdemo/test/data", null);
return table;
}
查报表数据的总记录数的action对应的java代码如下:
public static BigDecimal reportPageCount() {
String ksql = "select count(rq) as cnt from AP_RQ rq";
Table tCount = KSQL.select(ksql, null, "/appdemo/test/data", null);
BigDecimal num = tCount.iterator().next().getDecimal("cnt");
return num;
}
.w中reportData关联带参数分页查报表数据的action,并且report的autoLoad设置为false
.w中放按钮实现上一页、下一页的操作,放html的label和input实现显示共多少页,当前第几页以及输入跳转,并且控制第一页时上一页按钮不可用,最后一页时下一页按钮不可用
如下:
<a component="$UI/system/components/justep/button/button" class="btn btn-default"
label="上一页" xid="button7" bind-disable="$model.page.get() == 1" onClick="button7Click">
<i xid="i7"/>
<span xid="span7">上一页</span>
</a>
<label xid="label1">label</label>
<input type="text" value="" xid="input2" bind-keydown="input2Keydown" style="width:24px;"/>
<label xid="label2"><![CDATA[页]]></label>
<a component="$UI/system/components/justep/button/button" class="btn btn-default"
label="下一页" xid="button8" bind-disable="$model.page.get() == $model.pageCount.get()"
onClick="button8Click">
<i xid="i8"/>
<span xid="span8">下一页</span>
</a>
var Model = function() {
this.callParent();
this.offset = 0;//表示从第几条开始取
this.pageCount = justep.Bind.observable(0);//记录总页数
this.page = justep.Bind.observable(1);//记录当前页数
};
定义给reportData传参刷新report组件显示数据的方法reportRefresh:
Model.prototype.reportRefresh = function() {
var reportData = this.comp("reportData");
var report = this.comp("report");
reportData.setIntegerVar("offset", this.offset);//把从第几条开始取this.offset的值传给reportData的offset参数到后端分页查询数据
report.refresh();
};
model的onLoad事件中调用查报表数据的总记录数的action,并调用reportRefresh方法:
Model.prototype.modelLoad = function(event) {
var self = this;
biz.Request.sendBizRequest({
"context" : this.getContext(),
"action" : "reportPageCountAction",
"callback" : function(callbackData) {
if (callbackData.state) {
var count = callbackData.response;
self.pageCount.set(Math.ceil(count / 10));//计算总页数,给this.pageCount赋值
$(self.getElementByXid("label1")).html("共" + self.pageCount.get() + "页,当前第1页,跳转至");
self.reportRefresh();
} else
alert("获取记录数失败");
}
});
};
.w中默认没有bizData,调用action时的用的biz需要添加引用
var biz = require(“$UI/system/lib/biz”);
输入跳转的input的回车事件实现:
Model.prototype.input2Keydown = function(event) {
if (event.keyCode == 13) {
var intPage = $(this.getElementByXid("input2")).val();//获取输入的值
if (intPage > 0 && intPage <= this.pageCount.get()) {//判断输入值在1到总页数之间
this.offset = (intPage - 1) * 10;//从第几条开始取this.offset赋值
this.page.set(intPage);//当前页数this.page赋值
$(this.getElementByXid("label1")).html("共" + this.pageCount.get() + "页,当前第" + intPage + "页,跳转至");
this.reportRefresh();
} else
alert("请输入正确的页码");
}
};
上一页按钮的onClick实现如下:
Model.prototype.button7Click = function(event) {
this.page.set(this.page.get() - 1);//当前页数this.page赋值
$(this.getElementByXid("label1")).html("共" + this.pageCount.get() + "页,当前第" + this.page.get() + "页,跳转至");
this.offset = this.offset - 10;//从第几条开始取this.offset赋值
this.reportRefresh();
};
下一页按钮的onClick实现如下:
Model.prototype.button8Click = function(event) {
this.page.set(parseInt(this.page.get()) + 1);//当前页数this.page赋值
$(this.getElementByXid("label1")).html("共" + this.pageCount.get() + "页,当前第" + this.page.get() + "页,跳转至");
this.offset = this.offset + 10;//从第几条开始取this.offset赋值
this.reportRefresh();
};

评一波