起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1789|回复: 8

[结贴] data组件的first() last()要怎么使用啊,

[复制链接]

26

主题

73

帖子

156

积分

初级会员

Rank: 2

积分
156
QQ
发表于 2016-11-29 21:26:07 | 显示全部楼层 |阅读模式
本帖最后由 smart 于 2016-11-29 22:11 编辑

通过data组件加载数据,按照分页模式来的,使用this.comp('data').count()确认加载了5条记录,但是加载后使用this.comp('data').first(); 和this.comp('data').last()都是在第一条记录。要怎么使用啊?加载上一页后,游标是处于什么位置,如何移动到上一页的最后一条,对于加载下一页的情况是正常的,直接移动到下一条就到下一页的第一条了。

1

主题

6163

帖子

2095

积分

金牌会员

Rank: 6Rank: 6

积分
2095
QQ
发表于 2016-11-30 10:03:26 | 显示全部楼层
this.comp('data').getFirstRow();和this.comp('data').getLastRow();
这样可以吗?
回复 支持 反对

使用道具 举报

53

主题

928

帖子

1730

积分

金牌会员

Rank: 6Rank: 6

积分
1730
发表于 2016-11-30 10:06:09 | 显示全部楼层
我用过next()和pre()   
我是这样用的
this.comp('data').next();
var row = this.comp("data").getCurrentRow();
this.comp("data").val("列名",row);
承接wex5开发web项目、微信页面等;
低费用进行零散功能开发(java、JS、微信各种接口、阿里云接口等)
QQ:459349489
回复 支持 反对

使用道具 举报

发表于 2016-11-30 11:13:47 | 显示全部楼层
doudou459 发表于 2016-11-30 10:06
我用过next()和pre()   
我是这样用的
this.comp('data').next();

请看API 文档,上下移动的方法就是
next()和pre()

请问你有什么问题吗??想实现什么功能?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

73

帖子

156

积分

初级会员

Rank: 2

积分
156
QQ
 楼主| 发表于 2016-11-30 11:32:29 | 显示全部楼层
本帖最后由 smart 于 2016-11-30 11:46 编辑

我是这样使用的,当我翻页到上一页时,limit=5 ,当加载的是11~15行时,翻上一页应该加载的是6~10行,,我翻上一页,此时显示的应该是第9行,但是我怎么设置都是显示第6行数据。
                        this.page = this.page - 1;
                        debugger;
                        this.comp('data').loadPageData(this.page);
                        this.comp('data').pre();
是哪里还有问题吗?是否有函数可以查看当前的游标位置啊?或者指定游标显示
对于一次性全部加载数据,next() Pre()都是很正常的,问题在分页时,向前翻页后定位数据有问题


回复 支持 反对

使用道具 举报

发表于 2016-11-30 11:52:16 | 显示全部楼层
smart 发表于 2016-11-30 11:32
我是这样使用的,当我翻页到上一页时,limit=5 ,当加载的是11~15行时,翻上一页应该加载的是6~10行,,我翻 ...

如果你的data数据不是增量加载的!
需要先执行 last ()方法指定最后一行数据!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

73

帖子

156

积分

初级会员

Rank: 2

积分
156
QQ
 楼主| 发表于 2016-11-30 12:01:39 | 显示全部楼层
我通过下面CustomRefresh实现取数据。
Model.prototype.data1CustomRefresh = function(event){
                event.async = false;
                var self = window;
                var db = self.demoDB.getDatabase();
                var data = event.source;
                //debugger;
                var append = event.options && event.options.append; // 是否数据追加模式

                var limit = event.limit;         // 分页行数
                var offset = event.offset;       // 分页偏移
                // 执行SQL查询
                msql = "SELECT * FROM APPDATA ";
                SqliteUtil.executeSql(db, msql  " LIMIT ? OFFSET ? ", [ limit, offset ], onSuccess, onError);
                function onSuccess(res) {
                        //debugger;
                        //转换返回数据结果
                        var table = SqliteUtil.rowsToTable(res.rows);
                        if (offset === 0) {
                                // 如果偏移为零则表明加载第一页,需要在Table中提供总行数,用于分页计算
                                SqliteUtil.executeSql(db, "SELECT COUNT(*) cnt FROM APPDATA " + " WHERE " + mwhere, [], function(res) {
                                        SqliteUtil.setTableTotal(table, res.rows.item(0).cnt);   //此处返回记录总数,方便分页
                                        doRefreshData();
                                });
                        } else {
                                doRefreshData();
                        }
                        function doRefreshData() {
                                data.loadData(table, append);
                                // 异步执行模式下,加载数据后必须执行doRefreshAfter
                                data.doRefreshAfter(true, event.options);
                        }
                }
                function onError(msg) {
                        data.doRefreshAfter(false, event.options);
                }       



上一页使用下面代码
this.page = this.page - 1;
                        debugger;
                        this.comp('data1').loadPageData(this.page);
                        this.comp('data1').last();
也是不对啊
回复 支持 反对

使用道具 举报

发表于 2016-11-30 13:19:27 | 显示全部楼层
smart 发表于 2016-11-30 12:01
我通过下面CustomRefresh实现取数据。
Model.prototype.data1CustomRefresh = function(event){
           ...

debugger 调试看看,执行哪行代码出错的??
加载数据的回调方法执行 data.loadData 执行的时候
  this.comp('data1').last();有没有执行呢??
.last()方法建议放在loadData() 方法后面!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

26

主题

73

帖子

156

积分

初级会员

Rank: 2

积分
156
QQ
 楼主| 发表于 2016-11-30 14:21:48 | 显示全部楼层
问题终于解决了,还是出在异步的原因,直接使用next()  pre(),数据未返回模式下就执行了,导致未起作用,增加在AfterRefresh中对应的移动,才能准确移动到位置,增加了该事件中的处理量。感觉不是十分好用。不过对了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-23 17:54 , Processed in 0.064244 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表