这是我的网格定义
$("#requestSearchResultsGrid").jqGrid({
datatype : 'jsonstring',
height : 210,
colModel : [
{
label : '<input type="checkbox" id="reqChkIdResult" name="selectedCheck" value="" onclick="checkAllRequestSearchResults(event)"/>',
name : '',
index : '',
align : 'center',
editable : true,
sortable : false,
resizable : false,
edittype : 'checkbox',
editoptions : {
value : "true:false"
},
formatter : function cboxFormatter(cellvalue,options,rowObject) {
return '<input type="checkbox" name="selectedCheck"'
+ (cellvalue ? ' checked="checked"' : '')
+ 'onclick="checkRequestSearchResults()" id="'
+ options.rowId
+ '_veh" name="exp"/>';
},
formatoptions : {
disabled : false
},
width : 20
},
{
label : 'Dept',
name : 'deptId',
index : 'deptId',
sortable : false,
align : 'right',
width : 40
},
{
label : 'Class',
name : 'classId',
index : 'classId',
sortable : false,
align : 'right',
width : 40
},
{
label : 'SKU',
name : 'skuNum',
index : 'skuNum',
sortable : true,
width : 90,
align : 'right'
},
{
label : 'SKU Description',
name : 'skuDesc',
index : 'skuDesc',
sortable : true,
width : 120,
align : 'left'
},
{
label : 'ID',
name : 'reqId',
index : 'reqId',
sortable : true,
width : 40,
align : 'right'
},
{
label : 'Request Description',
name : 'reqDesc',
index : 'reqDesc',
width : 150,
align : 'left'
},
{
label : 'Event Type',
name : 'eventTypeName',
index : 'eventTypeName',
sortable : false,
width : 75,
align : 'left'
},
{
label : 'Due Date',
name : 'dueDate',
index : 'dueDate',
width : 70,
align : 'right'
},
{
label : 'Workflow Status',
name : 'workflowStatusDesc',
index : 'workflowStatusDesc',
sortable : false,
align : 'left',
width : 120
},
{
label : 'Selection Status',
name : 'selectionStatusDesc',
index : 'selectionStatusDesc',
sortable : false,
align : 'left',
width : 120
},
{
label : 'Validation Status',
name : 'validationStatusDesc',
index : 'validationStatusDesc',
sortable : false,
align : 'left',
width : 120
},
{
label : 'Event Name',
name : 'eventName',
index : 'eventName',
width : 100,
align : 'left'
},
{
label : 'Phase',
name : 'phase',
index : 'phase',
width : 80,
align : 'left'
},
{
label : 'Run Start',
name : 'runStart',
index : 'runStart',
sortable : false,
width : 70,
align : 'right'
},
{
label : 'Run End',
name : 'runEnd',
index : 'runEnd',
sortable : false,
width : 70,
align : 'right'
},
{
label : 'Supplier',
name : 'supplierName',
index : 'supplierName',
sortable : false,
width : 60,
align : 'right'
},
{
label : 'Owner',
name : 'assignedUserId',
index : 'assignedUserId',
sortable : false,
width : 100,
align : 'left'
},
{
label : 'Private',
name : 'pvtInd',
index : 'pvtInd',
sortable : false,
align : 'left',
width : 50
},
{
label : 'Last Modified',
name : 'lastModified',
index : 'lastModified',
sortable : false,
align : 'right',
width : 110
} ],
jsonReader : {
root : "requestDetails",
repeatitems : false
},
onSelectRow : function(rowId) {
selectedRowId = rowId;
},
afterInsertRow : function(rowid,rowdata) {
var currentDate = new Date();
currDate = currentDate.getDate();
currYear = currentDate.getFullYear();
currMonth = currentDate.getMonth();
var dat = new Date(rowdata.dueDate);
pdate = dat.getDate();
pmonth = dat.getMonth();
pyear = dat.getYear();
if ((pdate > currDate) && (pdate <= currDate + 3)) {
$(this).jqGrid('setRowData',rowid,false,{color : 'red'});
}
},
gridComplete : function(){
$("#requestSearchResultsGrid tr").jscontext({html : requestContextMenu});
},
rowNum : 100,
sortorder : 'asc',
sortname : 'requestType',
viewrecords : true,
loadonce : true,
autowidth : true,
shrinkToFit : false,
gridview : true,
scrollOffset : 0,
id : 'requestId',
ondblClickRow : editRequest
}).jqGrid('setGridWidth',$('#appBody').width() - 10);
我正在通过使用下面的代码片段从服务向网格添加数据,我是一个增量变量。基于某些条件,我只会将数据添加到网格中,所以我使用的是addRowData。
$(“#requestSearchResultsGrid”)。jqGrid('addRowData',i + 1,gridData);
问题是上述行正在执行抛出运行时异常
TypeError:在ni = t.p.rownumbers === true时,t.p未定义? 1:0;
答案 0 :(得分:1)
您没有发布显示使用的代码addRowData
。我想您尝试在创建网格之前调用addRowData
。我想这是你的主要问题。
此外,我建议您重新设计代码。你使用没有datatype : 'jsonstring'
的{{1}}没有任何意义。在使用初始datastr
数据填充网格后,datastr
将更改为datatype : 'jsonstring'
。之后{@ 1}}将不会被使用。同样地,我不理解"local"
的含义。如果使用jsonReader
使用数据填充网格,则直接使用行数据指定对象(请参阅代码示例中的afterInsertRow
)。 addRowData
的代码似乎只是添加gridData
列。您可以在调用afterInsertRow
之前直接添加/更改color
color
的{{1}}属性。
另一个问题是gridData
的使用,我完全不推荐(参见the answer)。当前实现调用网格的每一行(addRowData
元素)gridComplete
。添加第一行后,您可以为该行调用jscontext
。然后添加下一行并为所有现有行调用<tr>
。因此,您第二次为之前的加法行调用jscontext
。等等。最后,您可以为同一行多个分支调用jscontext
。