您没有提供有效的演示,但希望我仍然正确理解您。
我认为,要改变不编辑列的值
POD_UnitCostand
POD_ExtCost在该jQuery UI的价值选择在编辑自动完成控制
POD_VendorDiscount. 另外的价值可编辑栏
POD_OrderQtyand
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", ""); });}
我应该指出,以上代码仅适用于内联编辑。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)