【发布时间】:2016-10-04 19:08:15
【问题描述】:
由于某种原因,我的网格是空白的,没有行(甚至没有空行),没有导航图标,也没有编辑图标。我正在使用一些附加功能,例如自动完成字段(在网格内)和字体大小调整脚本,因此我的脚本有点长。该页面正在从我的函数页面接收格式正确的响应,它似乎与我的 jsonReader 设置匹配,但它没有用它填充网格。这是我在页面上的 JSON 格式响应:
{"page":"1",
"total":1,
"records":"4",
"rows":[{"DetailID":"1","Quantity":"2","TaskName":"Differencial With Housing","UnitPrice":"335.00","ExtendedPrice":"670.00"}, {"DetailID":"2","Quantity":"1","TaskName":"Left axel seal","UnitPrice":"15.00","ExtendedPrice":"15.00"},{"DetailID":"3","Quantity":"1","TaskName":"Upper and Lower Bearings","UnitPrice":"55.00","ExtendedPrice":"55.00"}, {"DetailID":"5","Quantity":"1","TaskName":"Fluids","UnitPrice":"45.00","ExtendedPrice":"45.00"}]}
这是我的网格脚本:
<script>
function autocomplete_element(value, options) {
var $ac = $('<input type="text"/>');
$ac.val(value);
$ac.autocomplete({source: "autocomplete.php?method=fnAutocomplete"});
return $ac;
}
function autocomplete_value(elem, op, value) {
if (op == "set") {
$(elem).val(value);
}
return $(elem).val();
}
$(document).ready(function()
{
$('#filter').jqm();
var selectedRow = 0;
$("#list").jqGrid(
{
url:'managegrid.php',
datatype: 'json',
colNames:['DetailID', 'ProjectID','Qty.','Description','Unit Price','Total Cost'],
colModel :[
{name:'DetailID', index:'DetailID', hidden:true, editable:false},
{name:'ProjectID', index:'ProjectID', width:25, hidden:true, editable:true},
{name:'Quantity', index:'Quantity', editable:true, width:50, align:'right', edittype:'text', editoptions: {defaultValue:'1'}},
{name:'TaskName', index:'TaskName', editable:true, width:450, align:'left', edittype: 'custom', editoptions: {'custom_element' : autocomplete_element, 'custom_value' : autocomplete_value}},
{name:'UnitPrice', index:'UnitPrice', editable:true, width:100, align:'right'},
{name:'ExtendedPrice', index:'ExtendedPrice', editable:false, width:100, align:'right'}
],
onSelectRow: function(id){
if(DetailID && DetailID!==mkinline){
jQuery('#list').saveRow(mkinline);
jQuery('#list').editRow(DetailID,true);
mkinline=DetailID;
}
},
pager: $('#pager'),
rowNum:20,
rowList:[],
pgbuttons: false,
pgtext: null,
sortorder: "asc",
sortname: "DetailID",
viewrecords: true,
imgpath: '/js/jquery/css/start/images',
caption: 'Project Details',
height:'auto',
width:823,
mtype:'GET',
recordtext:'',
pgtext:'',
editurl:"editgrid.php",
toolbar:[true,"bottom"],
loadComplete:function(){
var recorddata = $("#list").getUserData();
$("#t_list").html(recorddata.MSG);
},
jsonReader: {
page: "PAGE",
total: "TOTAL",
records:"RECORDS",
root: "ROWS",
userdata:"USERDATA"
}
}
);
$("#t_list").css("color","blue");
jQuery("#list").jqGrid("inlineNav",'#pager',{edit:true,editicon: "ui-icon-pencil",add:true,addicon: "ui-icon-plus",search:false}, {}, {},
{url:"delgridrow.php",closeAfterDelete:true,reloadAftersubmit:false,afterSubmit:commonSubmit,caption:"Delete",msg:"Delete selected",width:"400"})
.navButtonAdd('#pager',{caption:"",title:"Reload Form",buttonimg:'/js/jquery/css/start/images/refresh.gif',onClickButton:function(id)
{
resetForm();
$("#list").setGridParam(
{
url:"managegrid.php",
page:1
}
).trigger("reloadGrid");
}
});
}
);
function gridSearch()
{
var pid = $("#DetailID").val();
var qty = $("#Quantity").val();
var tn = $("#TaskName").val();
var up = $("#UnitPrice").val();
$("#list").setGridParam(
{
url:"managegrid.php?ProjectID="+pid+"&Quantity="+qty+"&TaskName="+tn+"&UnitPrice="+up,
page:1
}
).trigger("reloadGrid");
$("#filter").jqmHide();
return false
}
function commonSubmit(data,params)
{
var a = eval( "(" + data.responseText + ")" );
$("#t_list").html(a.USERDATA.MSG);
resetForm();
return true;
} function resetForm()
{
window.location.reload(false);
}
</script>
我整个周末都在努力解决这个问题,这让我发疯了,所以任何帮助都将不胜感激。
【问题讨论】:
-
您使用哪个版本的 jqGrid 以及来自哪个 jqGrid 分支(free jqGrid、商业Guriddo jqGrid JS 或版本 not free jqGrid,那么你必须调用
navGridbeforeinlineNav。 -
不确定版本号,但构建直接来自大约 2 年前的 jquery 下载页面。我实际上正在将基于 ColdFusion 的发票应用程序转换为 PHP。这个网格在 CF 版本中工作,所以所有指向 jquery 和 jqgrid 文件夹的链接都被保留了。网格正在渲染,只是没有填充数据。 (导航/编辑图标也没有显示)
-
您是否像我之前写的那样在调用
inlineNav之前直接添加了代码行jQuery("#list").jqGrid("navGrid", '#pager', {add: false, edit: false, del: false, search: false, refresh: false});? -
我的代码中已经有了这一行:
-
是的,这是现在的代码:jQuery("#list").jqGrid("navGrid", '#pager', {add: false, edit: false, del: false, search:假,刷新:假}); jQuery("#list").jqGrid("inlineNav",'#pager',{edit:true,editicon:"ui-icon-pencil",add:true,addicon:"ui-icon-plus",搜索:假}、{}、{}、...
标签: javascript jqgrid jqgrid-php