我目前正在开展一个涉及从jqgrid的特定列中获取值的项目。我被告知你应该使用' getCell'为此,它总是返回false,而不是给我一个值。谁能帮我解决这个问题?我渲染JqGrid的代码如下:
RenderGrid: function () {
var $deft = $("#MyGrid");
$("#MyGrid").jqGrid({
datatype: "local",
editurl: "<%=Session("BaseUri")%>" + '/path/to/irrelevant/helper/page',
colNames: ['Actions', 'ButtonId', 'DefectCode', 'Name', ],
colModel: [
{ name: 'act', index: 'act', width: 100, sortable: false },
{ name: 'ButtonId', index: 'ButtonId', editable: false, width:50 },
{ name: 'DefectCode', index: 'DefectCode', editable: true, width: 50 },
{ name: 'Name', index: 'Name', sortable: false, width: 200, editable: true }
],
pager: '#pMyGrid',
caption: "McGriddles",
multiselect: false,
loadonce: false,
rowNum: 10,
viewrecords: true,
sortorder: "desc",
width: new Number(300),
gridview: true,
height: "100%",
data: ButtonLibrary,
ondblClickRow: function (id) {
if (id && id !== lastSel) {
jQuery("#MyGrid").restoreRow(lastSel);
lastSel = id;
}
jQuery("#MyGrid").editRow(id, true);
},
gridComplete: function () {
var ids = jQuery("#MyGrid").jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
var cl = ids[i];
be = "<input style='height:22px;width:20px;' type='button' value='E' onclick=\"jQuery('#MyGrid').editRow('" + cl + "');\" />";
se = "<input style='height:22px;width:20px;' type='button' value='S' onclick=\"jQuery('#MyGrid').saveRow('" + cl + "');\" />";
var ButtonId = $('#MyGrid').jqGrid('getCell', ids[i], 'ButtonId');
//-------------> console.log(ButtonId); //always returns false
GBDelete = "<input style='height:22px;width:20px;' type='button' value='X' onclick=\"DeleteRowData('" + cl + "');\" />";
jQuery("#MyGrid").jqGrid('setRowData', ids[i], { act: be + se + GBDelete });
}
}
});
},
};
答案 0 :(得分:1)
getCell在两种情况下返回false: 1.如果在colModel中找不到列名,或者 2.无法找到行ID
为此目的,最好从响应中获取一列或数据,作为id。
在你的情况下使用本地数据时,最好在colModel数组中设置set key:true,以便正常工作。
我的建议是建立一个将作为id的列(确定它具有唯一值),这应该设置为key:true in colModel
编辑:如果您遇到此问题,请发布一些数据以查看发生的情况。
还指定使用哪个版本的jqGrid