jqgrid在另一个单元格更改时更改可编辑单元格的值(相关列)

jqgrid在另一个单元格更改时更改可编辑单元格的值(相关列),第1张

jqgrid在另一个单元格更改时更改可编辑单元格的值(相关列)

您没有提供有效的演示,但希望我仍然正确理解您。

我认为,要改变不编辑列的值

POD_UnitCost
and
POD_ExtCost
在该jQuery UI的价值选择在编辑自动完成控制
POD_VendorDiscount
. 另外的价值可编辑栏
POD_OrderQty
and
POD_VendorListPrice
会期间使用的计算。来自
select
自动完成回调的当前代码

var rowData = $('#list').jqGrid('getRowData', rowid);cont = rowData.POD_VendorListPrice;console.log(cont);rowData.POD_ExtCost = (1-ui.item.id)*cont;

是不正确的。第一个问题是使用的

getRowData
方式访问当前处于内联编辑模式的列。这是不对的。
getRowData
将让你的HTML片段从细胞代替
value
的相应
<input>
元素。第二个错误:您只设置
POD_ExtCost
rowData
对象而没有任何其他 *** 作。它不会更改POD_ExtCost列中的值。相反,您应该做的是:可以使用
getRowData
setRowData
获取/设置未编辑列的值,并且必须获取
<input>edit
元素的元素并获取其value值才能获取当前的编辑值。

我无法测试以下代码,但是正确的方法可能是例如
以下示例

dataInit: function(elem) {    var $self = $(this), // save the reference to the grid        $elem = $(elem); // save the reference to <input>    $elem.autocomplete({        source: autocompleteSource,        select: function (event, ui) { var $tr = $elem.closest("tr.jqgrow"), newCost, rowid = $tr.attr("id"),     orderQty = parseFloat($tr.find("input[name=POD_OrderQty]").val()),     listPrice = parseFloat($tr.find("input[name=POD_VendorListPrice]").val()); if (ui.item) {     console.log(orderQty);     console.log(listPrice);     newCost = (1 - parseFloat(ui.item.id)) * listPrice;     $self.jqGrid("setRowData", rowid, {         POD_UnitCost: newCost,         POD_ExtCost: orderQty * newCost     }); }        },        minLength: 0,        minChars: 0,        autoFill: true,        mustMatch: true,        matchContains: false,        scrollHeight: 220    }).on("focus", function(event) {        $(this).autocomplete("search", "");    });}

我应该指出,以上代码仅适用于内联编辑。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5652230.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存