用于过帐特定单元格的jqGrid方法

用于过帐特定单元格的jqGrid方法,jqgrid,Jqgrid,我有一个网格,它有一个根据行中不同单元格计算值的方法。 然后,我将特定单元格设置为包含此值: $("#gridID").setCell(rowid, "Cell_Name", myCalculatedValue); 然后,我想通过将值保存到数据库来完成此操作,但似乎找不到用于此操作的方法。 基本上我想要的是 $("#gridID").saveCellToDataBase(rowid, "Cell_Name"); 由于此单元格不是已编辑的单元格,而是由于另一个正在编辑的单元格而计算的值,因

我有一个网格,它有一个根据行中不同单元格计算值的方法。 然后,我将特定单元格设置为包含此值:

  $("#gridID").setCell(rowid, "Cell_Name", myCalculatedValue);
然后,我想通过将值保存到数据库来完成此操作,但似乎找不到用于此操作的方法。 基本上我想要的是

$("#gridID").saveCellToDataBase(rowid, "Cell_Name");
由于此单元格不是已编辑的单元格,而是由于另一个正在编辑的单元格而计算的值,因此默认情况下不会保存此单元格

我希望能解决我问题的方法是:

$("#gridID").jqGrid("saveRow", rowid, true);


但这些方法似乎都不能满足我的要求。

如果我理解正确,您可以尝试将数据发布到服务器,但一个(或多个)字段不可编辑,并且依赖于其他字段的计算,如数量*单价

正如您所知,不可编辑字段不会发布到服务器,因此无法保存。为了实现这一点,我在这里看到两种可能的解决方案

  • 在服务器上进行计算,无需从jqGrid发布此值
  • 计算jqGrid中的值并将其发布到服务器
  • 所有这些都有利弊,我想您不能在服务器上进行此计算

    要通过编辑将附加值发布到服务器,取决于使用的编辑方法-表单编辑、内联编辑或单元格编辑

    下面,我将介绍一种可能的内联编辑解决方案,作为练习,您将发现它适用于其他方法

    在jqGrid中,有一种机制,可以通过编辑的字段将您想要的内容再次发布到服务器。用我们的术语,我们称之为序列化。此序列化发生在将数据发布到服务器之前,并根据编辑模块的不同而具有不同的名称。 在内联编辑的情况下,此事件称为serializeRowData,它是网格参数,而不是事件的参数

    在您的情况下,代码应该如下所示:

    $("jqGrid").jqGrid({
        ...
        serializeRowData : function( data ) {
        // suppose you have Qty and Unit field and want to post Total = Qty*Unit
    
            if(data.Qty && data.Unit) {
                data.Total = data.Qty*data.Unit;
            }
            return data;
        } 
    
    请注意serializeRowData末尾的返回。
    因此,每次调用saveRow时都会执行此事件,但这在Guriddo中有很好的描述

    我通过收集所有数据并进行ajax调用来处理此问题,尽管如此,我还是希望看到解决此问题的jqGrid解决方案。
    $("jqGrid").jqGrid({
        ...
        serializeRowData : function( data ) {
        // suppose you have Qty and Unit field and want to post Total = Qty*Unit
    
            if(data.Qty && data.Unit) {
                data.Total = data.Qty*data.Unit;
            }
            return data;
        }