我想在我的网格中添加一行,它使用免费版的jqgrid。 因为内置添加按钮不是很直观,我使用单独的添加按钮。 所以我想做这样的事情;
$("#btnAddContract").click(function () {
var id = $("#ContractId").val();
var url = GetHiddenField("sir-selected-contract-url") + id + "/add";
var callback = contractAdded;
dataService.addSelectedContract(url, callback);
});
var contractAdded = function (data) {
var grid = $("#grid");
var position = 0;
grid.insertRow(data, position); // pseudo code - this cannot work
}
当然grid.insertRow方法不存在。我应该用什么来做这项工作?
答案 0 :(得分:0)
jqGrid具有方法addRowData
,允许向网格添加新行。您没有发布用于创建 jqGrid的JavaScript代码。因此,我必须猜测一些事情。
首先,如果您使用本地网格(datatype: "local"
),则添加该行是纯粹的本地更改jqGrid而不与服务器进行任何通信。方法addRowData
是低级方法。它允许添加新行而不用强制排序数据,而无需测试页面的当前大小。因此,您可以在网格的任何其他行之前/之后添加行。添加行后,行数可能会大于页面大小。
了解网格的每一行都有id
属性(rowid)非常重要。见here。新行的id
值是addRowData
的第一个参数。 addRowData
的第二个参数是包含行数据的对象。第三个参数指定网格中新行的位置。它可以是:"first"
,"last"
,"before"
,"after"
,"afterSelected"
,"beforeSelected"
。仅当您使用addRowData
或"before"
作为3-d参数时,才应指定"after"
的第4个参数。它指定行的rowid,在之前/之后应添加新行。
向网格添加新行的另一种可能性是以下代码:
var p = $("#grid").jqGrid("getGridParam"); // get reference to all parameters
p.data = newData; // replace the data array to another data
$("#grid").trigger("reloadGrid", { current: true }); // reload holding the selection
可以看到上述代码可用于替换网格数据与其他数据。可能需要花费更多时间作为addRowData
的调用,但该方法的一大优势是:您将看到正确排序的数据。页面大小和寻呼机中的信息也绝对正确。我建议您测试两种方式,看看哪种方式更符合您的要求。