jQuery MiniUI

 找回密码
 立即注册
查看: 5505|回复: 9
打印 上一主题 下一主题

reload问题 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2012-12-13 12:52:05 |只看该作者 |倒序浏览
请问,我改变了一行数据,方法执行成功以后调用grid.reload(),为了取得新改变的值,我在grid.reload()之后用grid.getRow(0).FigureOut获得FigureOut字段新值(假设是第一行),但为何,获得的值是未改变之前的值,而grid更新以后显示数据是已更新的数据呢?

Rank: 8Rank: 8

沙发
发表于 2012-12-13 13:30:29 |只看该作者
获取修改的值,可以这样获取
var rowData = grid.getChanges();
rowData[0].FigureOut

Rank: 2

板凳
发表于 2012-12-13 13:52:54 |只看该作者
factory 发表于 2012-12-13 13:30
获取修改的值,可以这样获取
var rowData = grid.getChanges();
rowData[0].FigureOut

我想获得所有修改的和未修改的FigureOut的值,如何获得呢?为何我在reload以后得到的值还是未修改的值?

Rank: 8Rank: 8

地板
发表于 2012-12-13 14:03:52 |只看该作者
shanyidong 发表于 2012-12-13 13:52
我想获得所有修改的和未修改的FigureOut的值,如何获得呢?为何我在reload以后得到的值还是未修改的值? ...

reload()就是刷新表格了,刷新之前你保存了没有?没的话是被刷新到原来数据的

Rank: 2

5#
发表于 2012-12-13 16:14:19 |只看该作者
factory 发表于 2012-12-13 14:03
reload()就是刷新表格了,刷新之前你保存了没有?没的话是被刷新到原来数据的 ...

后台保存了,前台也显示出来了,可是在reload之后加上grid.getRow(0).FigureOut得到的是未修改的值,我逐步调试了,一直到success之后grid.getRow(0).FigureOut得到的值一直都是未修改的,方法结束后执行mini.js,然后表格显示修改后的数据。请问是在mini.js里刷新的数据吗?我是菜鸟还请谅解

Rank: 2

6#
发表于 2012-12-13 16:19:34 |只看该作者
factory 发表于 2012-12-13 14:03
reload()就是刷新表格了,刷新之前你保存了没有?没的话是被刷新到原来数据的 ...

function updateRow() {
            var form = new mini.Form("editForm1");
            var o = form.getData();
            form.validate();
            total();
            if (form.isValid() == false) return;
            var data = grid.getChanges();
            var json = mini.encode([o]);
            grid.loading("更新中,请稍后......");
            $.ajax({
                url: "GoodsPurchaseBus.aspx?method=EditGoodsDetails&PurchaseOrdersNo=" + OrdersNo,
                data: { data: json },
                cache: false,
                success: function (text) {

                    grid.reload();
                    
                },
                error: function (jqXHR, textStatus, errorThrown) {
                    alert(jqXHR.responseText);
                    CloseWindow();
                }
            });
                        grid.hideAllRowDetail();

        }

function zongji() {
            var at = mini.get("AmountTo");
            var sum = 0;
            for (var i = 0; i < grid.getData().length; i++) {
                sum = parseFloat(sum) + parseFloat(grid.getRow(i).FigureOut);
            }
            at.setValue(sum);

        }

我在success的grid.reload()中加zongji();得出的是未修改的

在updateRow方法的最后一句加zongji();得出的结果还是未修改的。请版主帮我看看吧

Rank: 9Rank: 9Rank: 9

7#
发表于 2012-12-13 17:10:53 |只看该作者
grid.reload();
这时候它是异步交互的,你直接在reload之后获取数据,还是当前的数据。

grid.reload(function(){
   var data = grid.getData();//这时候才是reload之后的新数据
});

Rank: 2

8#
发表于 2012-12-13 17:16:33 |只看该作者
niko 发表于 2012-12-13 17:10
grid.reload();
这时候它是异步交互的,你直接在reload之后获取数据,还是当前的数据。

那我要怎么改才能获得新数据并调用zongji()方法呢?要改mini.js文件吗?

Rank: 9Rank: 9Rank: 9

9#
发表于 2012-12-13 21:02:33 |只看该作者
grid.reload(function(){
  zongji();
});

或监听grid的load事件:
grid.on("load", function(){
  zongji();
});

Rank: 2

10#
发表于 2012-12-14 08:41:04 |只看该作者
niko 发表于 2012-12-13 21:02
grid.reload(function(){
  zongji();
});

谢谢你,问题解决了。

Archiver|普加软件

GMT+8, 2024-11-26 17:47 , Processed in 1.053261 second(s), 10 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部