jQuery MiniUI

标题: Datagrid里面如何捕获前一页下一页最后页最前页的事件? [打印本页]

作者: money    时间: 2013-5-29 15:37:23     标题: Datagrid里面如何捕获前一页下一页最后页最前页的事件?

请教2个问题:
1、因为在当前页有更新,想在翻页的时候提示并更新数据,如何捕获翻页事件呢?
2、如果当前页没有更新数据,是否可以通过grid.getChanges()来判断?还是其他方法?


作者: factory    时间: 2013-5-29 17:29:22

1.可以监听onload和onbeforeload事件
2.是的,如果数据没有修改,判断getChanges().length就可以了
作者: money    时间: 2013-5-30 14:18:57

本帖最后由 money 于 2013-5-30 14:20 编辑
factory 发表于 2013-5-29 17:29
1.可以监听onload和onbeforeload事件
2.是的,如果数据没有修改,判断getChanges().length就可以了 ...

在问个问题,我现在可以捕获到翻页事件,但是我增加了个确认框,我想在确认框按完“确认”或者"取消",在进入后台程序处理,应该怎么实现?现在的状况是翻页完了才弹出确认框,下面是我写的方法,应该如何修改?

<div id="datagrid" class="mini-datagrid" style="width: 90%; height: 350px;" allowResize="false"
                url="../service/admin/data" >

function onbeforeload() {
                mini.parse();
                var grid = mini.get("datagrid");
                var data = grid.getChanges();
                if (data.length > 0) {
                        mini.confirm("当前页面数据有变化,是否需要更新?", "提示",
                                function (action) {
                                        if (action == "ok") {
                                                var json = mini.encode(data);
                                                grid.loading("保存中,请稍后......");
                                                $.ajax({
                                                    url: "../service/admin/SaveData",
                                                    }
                                                });
                                        }                                       
                                }
                        );               
                }
        }
作者: factory    时间: 2013-5-30 14:21:56

money 发表于 2013-5-30 14:18
在问个问题,我现在可以捕获到翻页事件,但是我增加了个确认框,我想在确认框按完“确认”或者"取消",在 ...

不允许翻页的话,e.cancel = true,就是取消翻页了
作者: money    时间: 2013-5-30 14:38:48

factory 发表于 2013-5-30 14:21
不允许翻页的话,e.cancel = true,就是取消翻页了

不是要取消翻页的问题,是执行顺序的问题,正确的步骤应该是按下翻页按钮先弹出“确认取消框”,然后按下“确认”的话,走后台更新数据,按下“取消”的话,就不更新数据,都是要翻页的,只是后台走的action不一样而已,而我现在上面的代码执行顺序是先翻页了,然后在弹出对话框,视觉上就错了,不知道应该如何修改?好像变成同步一起执行
作者: factory    时间: 2013-5-30 15:35:28

money 发表于 2013-5-30 14:38
不是要取消翻页的问题,是执行顺序的问题,正确的步骤应该是按下翻页按钮先弹出“确认取消框”,然后按下 ...

miniui的确认框是不会阻塞住代码的执行的,事实上,JS创建的确认框都不会阻塞住下面的代码,你必须要用浏览器自带的类似那种alert的那种,才会阻塞住
你把你的代码改下,改成这样

function onbeforeload(e) {
                var data = grid.getChanges();
                if (data.length > 0) {
                    if (confirm("当前页面数据有变化,是否需要更新?")) {
                        alert(1)
                    } else {
                        alert(2)
                    }            
                }
        }

这就满足你的要求了




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2