概要
大家好。
有时候会有获取列表页面的当前记录数的情况。例如:像下面这样显示状态为“处理中”的记录件数的时候是非常方便的。
但是,kintone里并没有获取记录件数的API。获取记录件数的话通常有2种方法:一种为使用records.json每次获取100件来计算,另一种为DOM的字符串操作。这次将为大家介绍使用records.json每次获取100件来计算的方法。
代码
(function() { "use strict"; // 列表页面 kintone.events.on('app.record.index.show', function(event) { // 现在的搜索条件&获取处理中的记录 (new KintoneRecordManager).getProcessingRecords(function(records) { kintone.app.getHeaderMenuSpaceElement().innerHTML = '处理中的记录件数:' + records.length; }); }); })(); /** * kintone record manager */ KintoneRecordManager = (function() { KintoneRecordManager.prototype.records = []; KintoneRecordManager.prototype.appId = null; KintoneRecordManager.prototype.query = ''; KintoneRecordManager.prototype.limit = 100; KintoneRecordManager.prototype.offset = 0; function KintoneRecordManager() { this.appId = kintone.app.getId(); } // 现在的搜索条件&获取处理中的记录 KintoneRecordManager.prototype.getProcessingRecords = function(callback) { this.appId = kintone.app.getId(); this.query = kintone.app.getQueryCondition() + ' status = "处理中"'; this.getRecords(callback); }; // 获取记录 KintoneRecordManager.prototype.getRecords = function(callback) { kintone.api(kintone.api.url('/k/v1/records', true), 'GET', { app: this.appId, query: this.query + (' limit ' + this.limit + ' offset ' + this.offset) }, (function(_this) { return function(res) { var len; Array.prototype.push.apply(_this.records, res.records); len = res.records.length; _this.offset += len; if (len < _this.limit) { _this.ready = true; if (callback !== null) { callback(_this.records); } } else { _this.getRecords(callback); } }; })(this)); }; return KintoneRecordManager; })();
调用KintoneRecordManager的getRecords知道获取的记录件数不到100件。
最后
这次,给大家讲解了记录件数的获取方法。但是这个方法,假如记录件数多的话,获取记录的时间也会增加。在这种情形下,虽然可以使用DOM的字符串操作来获取下面截图的记录件数,但是版本更新的时候就会无法运行所以并不推荐。
要是kintone可以早点推出可以获取记录件数的API就好了呢(^^♪
该Tips在2014年6月版中进行过确认。
回复(2)
coca 你好!
可以使用批量获取记录api的totalCount参数获取记录总数量。
详情请参见:
https://cybozudev.kf5.com/hc/kb/article/201594#step2
注:
要获取满足【query】参数中指定的条件的记录条数时,指定【true】。
能否用批量获取记录api的totalCount参数获取记录总数量?