实际创建过滤器 jqGrid工具栏应该像“3.5中的新功能,集成搜索工具栏”example或documentation一样直接。
然而,当我运行第myDataTable.jqGrid('filterToolbar', filterOpts);
行时,我总是收到错误“无法获取属性'colModel'的值:对象为null或未定义”在JQuery.jqGrid.src.js的第3613行中,这是:$.each($t.p.colModel,function(i,n) { ..
仅为了记录,jqGrid的版本是4.1.2。网格本身显示/工作正常。
以下是我如何启动网格的代码,我很可能会监督一些非常简单的事情。
var ft = document.getElementById("myData"); // this is the HTML table element as usual
var colModel = [
{ name: 'i', index: 'i', width: 60, hidden: true, search: false },
{ name: 'c', index: 'c', width: 100, search: true },
{ name: 'p', index: 'p', width: 100, search: true },
{ name: 'displayed', index: 'displayed', align: 'center', width: 100, formatter: booleanToCheckmark, search: false },
];
$(function() {
$(ft).jqGrid({
datatype: 'clientSide',
data: globals.myData, // Array of objects ("the data"), data is correctly displayed
height: 300,
// autowidth: true,
width: 300,
forceFit: true,
colNames: ['I', 'C', 'P', 'dis.'],
colModel: colModel,
rowNum: 10000,
sortname: 'displayed',
sortorder: 'desc',
viewrecords: true,
gridview: true,
caption: 'XYZ'
});
});
// filter bar
// http://www.trirand.com/jqgridwiki/doku.php?id=wiki:toolbar_searching
var filterOpts = { autosearch: true };
// LINE WHERE IT FAILS
$(ft).jqGrid('filterToolbar', filterOpts);
答案 0 :(得分:1)
您尝试在filterToolbar
阻止之外调用$(function() {/*it should be called here*/});
的错误。
通常会将{strong>全部代码置于$(function() {...});
内。另外,还会减少全局变量的数量,这些变量将作为属性添加到window
。全局变量的使用会增加与其他标准全局变量发生冲突的可能性。