Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何设置从editform动态计算的jqgrid值_Jquery_Jqgrid - Fatal编程技术网

Jquery 如何设置从editform动态计算的jqgrid值

Jquery 如何设置从editform动态计算的jqgrid值,jquery,jqgrid,Jquery,Jqgrid,我有一个jqgrid列,包含交易id、借方、贷方和余额。 借方和贷方由数据库填充,余额由贷方和借方之差的计算设置。 编辑是在editform中完成的。一旦用户更改了借方或贷方的一个值,我需要在网格的选定行中更新余额列 非常感谢您的帮助 $myGrid.jqGrid({ url: myURL + '?method=GetTranactions', postData: { prID: function() { return getProv(); },

我有一个jqgrid列,包含交易id、借方、贷方和余额。 借方和贷方由数据库填充,余额由贷方和借方之差的计算设置。 编辑是在editform中完成的。一旦用户更改了借方或贷方的一个值,我需要在网格的选定行中更新余额列

非常感谢您的帮助

$myGrid.jqGrid({                
url: myURL + '?method=GetTranactions', 
postData: { 
    prID: function() { return getProv(); },
    mn: function() { return $("#month option:selected").val(); },
    yr: function() { return $("#year option:selected").val(); }
},
datatype: 'json', 
mtype: 'POST',
colNames:['Trx ID','Debit','Credit','Balance',],
colModel :[
    {name:'accttrx_id',index:'accttrx_id', width:75, sorttype:"int", editable:true},
    {name:'debit',index:'debit', 
        width:70, 
        align:"right",
        formatter:'number',
        sorttype:"number",
        editable:true,
        edittype:"text",
        editoptions:{
            size:20,
            defaultValue:'0',                                       
            dataEvents: [   
                {
                    type: 'change',
                    fn: function(e) {
                        var db = $(e.target).val();
                        var cr = $('#credit').val();
                        bal = cr - db;  // got the balance 
                        alert(bal); // how to update balance column for current row?
                        }
                    }
                ]

            },
        editrules:{required:true},
        formoptions:{elmprefix:"(*)"}
        },
    {name:'balance',index:'balance',
        width:70, 
        align:"right",
        formatter:'number',
        sorttype:"number",
        editable:false},....

$myGrid.navGrid('#pager', {
search:false,
edit:true,edittitle:"Edit Transation",
add:true,addtitle:"Add Transaction",
refresh:true,
del:true,deltitle:"Delete Transaction"
},
{
beforeShowForm: 
    function(form) { 
        $('#tr_accttrx_id', form).hide();                           
    },
    afterSubmit:
    ..... update balance after submit?

对于editForm中的自定义计算,如您在此处所述,我通常将代码放入您在此处所述的
beforeShowForm
函数中。请使用类似的方法:

beforeShowForm: function() {
    $('#debit,#credit').change(function(){
        $('#balance').val( parseFloat($('#credit').val()) - parseFloat($('#debit').val()) );
    });
},
reloadAfterSubmit: true,
...
jQuery选择器(
$('#balance')
例如)使用jqGrid列的名称作为ID选择器。我这样做是因为我知道jqGrid将列名放入编辑表单中的输入元素ID中

提交后重新加载(在网格中显示更新的信息)

为了在网格中显示新的余额值,请使用编辑表单的
reloadeaftersubmit
属性,我在上面的示例中包括了该属性。请确认您正在使用表单编辑还是在线编辑?如果您使用的是表单编辑,那么我的答案中的代码应该有效,如果应该与
editGridRow
方法一起使用。请看这里:

浮动和货币方面的小问题


虽然上面的代码在大部分情况下都可以工作,但请不要担心parseFloat命令不应用于金钱计算。我以前遇到过这个问题。相反,您可以在editForm中使用。

进行自定义计算,如您在此处所述,我通常将代码放入您在此处所述的
beforeShowForm
函数中。请使用类似的方法:

beforeShowForm: function() {
    $('#debit,#credit').change(function(){
        $('#balance').val( parseFloat($('#credit').val()) - parseFloat($('#debit').val()) );
    });
},
reloadAfterSubmit: true,
...
jQuery选择器(
$('#balance')
例如)使用jqGrid列的名称作为ID选择器。我这样做是因为我知道jqGrid将列名放入编辑表单中的输入元素ID中

提交后重新加载(在网格中显示更新的信息)

为了在网格中显示新的余额值,请使用编辑表单的
reloadeaftersubmit
属性,我在上面的示例中包括了该属性。请确认您正在使用表单编辑还是在线编辑?如果您使用的是表单编辑,那么我的答案中的代码应该有效,如果应该与
editGridRow
方法一起使用。请看这里:

浮动和货币方面的小问题


虽然上面的代码在大部分情况下都可以工作,但请不要担心parseFloat命令不应用于金钱计算。我以前遇到过这个问题。相反,您可以使用.

谢谢Jeffery,on change code可以很好地作为触发器,我添加了alert()来检查这一点,但是下面这行没有设置网格$('#balance').val(parseFloat($('#credit').val())-parseFloat($('#debit').val())中的值;您必须提交表单以保存数据,然后重新加载网格。在我单击“提交”后,借方和贷方的值将更新,但在我刷新页面之前,余额的值不会更新。我将余额添加到查询中的列中,作为贷方和借方列之差的派生值。这有助于我初始加载网格,但没有更新。您可以在提交后重新加载网格,请查看我的更新答案。嗯,没有enuf声誉,有13和需要15谢谢Jeffery,关于更改代码作为触发器工作正常,我添加了alert()来检查这一点,但下面这行没有设置网格$(“#balance”)中的值.val(parseFloat($('#credit').val())-parseFloat($('#debit').val());您必须提交表单以保存数据,然后重新加载网格。在我单击“提交”后,借方和贷方的值将更新,但在我刷新页面之前,余额的值不会更新。我将余额添加到查询中的列中,作为贷方和借方列之差的派生值。这有助于我初次加载网格,但没有更新。你可以在提交后重新加载网格,请查看我的更新答案。嗯,没有信誉,有13个,需要15个