Действительно не уверен, что происходит. При загрузке на свой собственный - загружается нормально, быстро и без ошибок. При вызове из другой страницы - с ошибкой «Элемент не является таблицей»jqGrid Element не является таблицей при загрузке с другой страницы
<table id="Products"><tr><td></td></tr></table>
<table id="Products_pager"></table>
<script>
$(document).ready(function() {
var editOptions = {
keys: true,
aftersavefunc: function() {
var $self = $(this);
setTimeout(function() {
$self.trigger("reloadGrid", [{current: true}]);
}, 50);
},
url: "xtras/Products.php"
},
gridIdSelector = "#Products",
pagerIdSelector = "#Products_pager",
$grid = $(gridIdSelector);
$.extend($.jgrid.search, {
sopt: ["eq", "ne", "cn", "bw", "bn", "ge", "le", "lt", "gt"],
multipleSearch: true
});
var last_selected_row;
$grid.jqGrid({
url:'xtras/Products.php',
editurl:'xtras/Products.php',
datatype: "json",
mtype:'GET',
colModel:[
.............
],
height: "100%",
minWidth: 900,
rowNum:15,
rowList:[10,15,20,30,50,100,150,200],
viewrecords: true,
sortname:"ID",
sortorder: "desc",
pager: pagerIdSelector,
caption:"Products",
afterSubmit: function() {
$("#Products").jqGrid('editRow',row_id, true, null,
function(){ $("#Products").trigger("reloadGrid", [{current: true}]); },
'xtras/Products.php',
null,{},
{},{}
);
},
ajaxGridOptions: {cache: false},
loadError: function (jqXHR, textStatus, errorThrown) {
alert('HTTP status code: ' + jqXHR.status + '\n' +
'textStatus: ' + textStatus + '\n' +
'errorThrown: ' + errorThrown);
alert('HTTP message body (jqXHR.responseText): ' + '\n' + jqXHR.responseText);
},
loadComplete: function(data) {
},
ondblClickRow: function (rowid) {
var $self = $(this),
savedRows = $self.jqGrid("getGridParam", "savedRow");
if (savedRows.length > 0 && savedRows[0].id !== rowid) {
// cancel editing of another row is editing
// don't cancel on double click on the current editing
$self.jqGrid("restoreRow", savedRows[0].id);
}
if (savedRows.length === 0) {
$self.jqGrid("editRow", rowid, editOptions);
}
}
}).jqGrid("navGrid", pagerIdSelector, {add: false, edit: false, refreshstate: "current"})
.jqGrid("inlineNav", pagerIdSelector, { editParams: editOptions, addParams: {addRowParams: editOptions}})
.jqGrid("navButtonAdd", pagerIdSelector, {
caption: "",
title: "Copy selected row",
id: $grid[0].id + "_ilcopy",
buttonicon: "ui-icon-copy",
onClickButton: function() {
var $self = $(this), p = $self.jqGrid("getGridParam"), rowData,
srcrowid = p.selrow, savedRows = p.savedRow;
if (srcrowid !== null) {
if (savedRows.length > 0) {
// cancel editing
$self.jqGrid("restoreRow", savedRows[0].id);
}
rowData = $self.jqGrid("getRowData", srcrowid);
rowData.ID = "";
rowData.Catalogue = "";
rowData.UPCEAN = "";
rowData.copyID = srcrowid;
$self.jqGrid("addRow", {
initdata: rowData,
addRowParams: editOptions
});
} else {
alert("Please select a row to copy");
return false;
}
}
});
// Enable/disable buttons on start/end of editing
$grid.bind("jqGridInlineEditRow jqGridInlineAfterSaveRow jqGridInlineAfterRestoreRow", function() {
var $self = $(this),
savedRows = $self.jqGrid("getGridParam", "savedRow");
if (savedRows.length > 0) {
// some row is editing now
$(gridIdSelector + "_ilsave," + gridIdSelector + "_ilcancel").removeClass("ui-state-disabled");
$(gridIdSelector + "_ilcopy," + gridIdSelector + "_iladd," + gridIdSelector + "_iledit").addClass("ui-state-disabled");
} else {
// No row is editing now
$(gridIdSelector + "_ilsave," + gridIdSelector + "_ilcancel").addClass("ui-state-disabled");
$(gridIdSelector + "_ilcopy," + gridIdSelector + "_iladd," + gridIdSelector + "_iledit").removeClass("ui-state-disabled");
}
});
});
</script>
Любые предложения оценили
не понимаю, что вы имеете в виду - как ваш код более современный, чем мой? Существует причина, по которой она написана так, как она написана, поскольку вы можете видеть, что я настроил пейджер и пользовательское встроенное редактирование – Elen