jqGrid 不刷新新数据
jqGrid does not refresh with new data
我通过传入页码 n 从服务器获取 json 数据,该页码应获取第 n 100 行。加载一次并按下 "next page" 按钮后,它似乎正确地获取了新数据(刷新时我输出了新数据中的第一个对象)但它没有在我的网格中填充该数据。
<div>
<button id="refreshJobsButton">Refresh Jobs</button>
<button id="nextPageJobsButton">Next page</button>
<table id="JobTable"><tr><td/></tr></table>
<div id="JobPager" class="ui-widget"></div>
</div>
$(document).ready(function() {
var page = 0;
$('#nextPageJobsButton').button({
icons: {
primary: "ui-icon ui-icon-arrowrefresh-1-s"
}
}).click(function(){
page = page + 1;
$("#JobTable").jqGrid('GridUnload');
refreshJob(page);
});
};
function refreshJob(page) {
var $source = "ajax/refreshJob?page=" + page;
$.ajax({
url: $source,
dataType: "json",
success: populateJobs,
error: handleAjaxError
});
}
function populateJobs(jobs) {
k = Object.keys(jobs)[0];
l = Object.keys(jobs[k])[0];
alert ("First job in list is " + jobs[k][l]); //Outputs correct job of that page
$(function() {
var grid = $('#JobTable');
$('#JobTable').jqGrid({
datatype: 'jsonstring',
editurl: 'ajax/modifyJob',
mtype: 'POST',
loadonce: false,
datastr: jobs,
height: 600,
autowidth: true,
forceFit: true,
gridview: true,
viewrecords: true,
multiselect: true,
sortable: false,
toppager: true,
treeGrid: true,
treeGridModel: 'adjacency',
treedatatype: 'POST',
ExpandColumn: 'Job',
ExpandColClick: true,
colNames: [
"Id (hidden)",
"Job Type (hidden)"
],
colModel: [{
name: 'id',
index: 'id',
editable: true,
edittype: 'text',
key: true
}, {
name: 'jobType',
index: 'jobType',
editable: true,
edittype: 'text'
}],
jsonReader: {
repeatitems: false,
root: function(obj) {
return obj;
},
page: function() {
return 1;
},
total: function() {
return 1;
},
records: function(obj) {
return obj.length;
}
}
});
谁能告诉我哪里出了问题?
在您的代码中搜索 $(function() {
。它与 $(document).ready(function() {
相同,但您在 $(document).ready(function() {
中包含了块 $(function() {
。您应该删除 $(function() {
(请参阅创建 jqGrid 的位置附近)。
我通过传入页码 n 从服务器获取 json 数据,该页码应获取第 n 100 行。加载一次并按下 "next page" 按钮后,它似乎正确地获取了新数据(刷新时我输出了新数据中的第一个对象)但它没有在我的网格中填充该数据。
<div>
<button id="refreshJobsButton">Refresh Jobs</button>
<button id="nextPageJobsButton">Next page</button>
<table id="JobTable"><tr><td/></tr></table>
<div id="JobPager" class="ui-widget"></div>
</div>
$(document).ready(function() {
var page = 0;
$('#nextPageJobsButton').button({
icons: {
primary: "ui-icon ui-icon-arrowrefresh-1-s"
}
}).click(function(){
page = page + 1;
$("#JobTable").jqGrid('GridUnload');
refreshJob(page);
});
};
function refreshJob(page) {
var $source = "ajax/refreshJob?page=" + page;
$.ajax({
url: $source,
dataType: "json",
success: populateJobs,
error: handleAjaxError
});
}
function populateJobs(jobs) {
k = Object.keys(jobs)[0];
l = Object.keys(jobs[k])[0];
alert ("First job in list is " + jobs[k][l]); //Outputs correct job of that page
$(function() {
var grid = $('#JobTable');
$('#JobTable').jqGrid({
datatype: 'jsonstring',
editurl: 'ajax/modifyJob',
mtype: 'POST',
loadonce: false,
datastr: jobs,
height: 600,
autowidth: true,
forceFit: true,
gridview: true,
viewrecords: true,
multiselect: true,
sortable: false,
toppager: true,
treeGrid: true,
treeGridModel: 'adjacency',
treedatatype: 'POST',
ExpandColumn: 'Job',
ExpandColClick: true,
colNames: [
"Id (hidden)",
"Job Type (hidden)"
],
colModel: [{
name: 'id',
index: 'id',
editable: true,
edittype: 'text',
key: true
}, {
name: 'jobType',
index: 'jobType',
editable: true,
edittype: 'text'
}],
jsonReader: {
repeatitems: false,
root: function(obj) {
return obj;
},
page: function() {
return 1;
},
total: function() {
return 1;
},
records: function(obj) {
return obj.length;
}
}
});
谁能告诉我哪里出了问题?
在您的代码中搜索 $(function() {
。它与 $(document).ready(function() {
相同,但您在 $(document).ready(function() {
中包含了块 $(function() {
。您应该删除 $(function() {
(请参阅创建 jqGrid 的位置附近)。