jQuery MiniUI

标题: reload问题 [打印本页]

作者: shanyidong    时间: 2012-12-13 12:52:05     标题: reload问题

请问,我改变了一行数据,方法执行成功以后调用grid.reload(),为了取得新改变的值,我在grid.reload()之后用grid.getRow(0).FigureOut获得FigureOut字段新值(假设是第一行),但为何,获得的值是未改变之前的值,而grid更新以后显示数据是已更新的数据呢?

作者: factory    时间: 2012-12-13 13:30:29

获取修改的值,可以这样获取
var rowData = grid.getChanges();
rowData[0].FigureOut
作者: shanyidong    时间: 2012-12-13 13:52:54

factory 发表于 2012-12-13 13:30
获取修改的值,可以这样获取
var rowData = grid.getChanges();
rowData[0].FigureOut

我想获得所有修改的和未修改的FigureOut的值,如何获得呢?为何我在reload以后得到的值还是未修改的值?
作者: factory    时间: 2012-12-13 14:03:52

shanyidong 发表于 2012-12-13 13:52
我想获得所有修改的和未修改的FigureOut的值,如何获得呢?为何我在reload以后得到的值还是未修改的值? ...

reload()就是刷新表格了,刷新之前你保存了没有?没的话是被刷新到原来数据的
作者: shanyidong    时间: 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里刷新的数据吗?我是菜鸟还请谅解
作者: shanyidong    时间: 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();得出的结果还是未修改的。请版主帮我看看吧
作者: niko    时间: 2012-12-13 17:10:53

grid.reload();
这时候它是异步交互的,你直接在reload之后获取数据,还是当前的数据。

grid.reload(function(){
   var data = grid.getData();//这时候才是reload之后的新数据
});
作者: shanyidong    时间: 2012-12-13 17:16:33

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

那我要怎么改才能获得新数据并调用zongji()方法呢?要改mini.js文件吗?
作者: niko    时间: 2012-12-13 21:02:33

grid.reload(function(){
  zongji();
});

或监听grid的load事件:
grid.on("load", function(){
  zongji();
});
作者: shanyidong    时间: 2012-12-14 08:41:04

niko 发表于 2012-12-13 21:02
grid.reload(function(){
  zongji();
});

谢谢你,问题解决了。




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