我在这个网站上看到了很多类似的问题,所以我很抱歉这是一个问题的副本,我不明白答案。但这里是:我的麻烦是“ jQuery(”#tmpgrid“)。当触发此代码块时,getCell不是一个函数”(通过firebug)
onSelectRow: function (id) {
var listid = jQuery('#tmpgrid').getCell(id, "Item id");
$(window.location).attr('href', '/template/details/' + listid);
}
在这个asp.net mvc部分页面
中<table id="tmpgrid">
</table>
<div id="tmppager">
</div>
<script type="text/javascript">
var grid = $('#tmpgrid');
grid.jqGrid({
url: '/template/jsontemplate',
datatype: "json",
height: "auto",
autowidth: true,
colNames: ['Item id', 'Title', 'Create Date', 'Edit Date', 'Public'],
colModel: [
{ name: "id", index: "id", width: 25, search: false },
{ name: "Title", index: "Title", search: true, searchoptions: { sopt: ['cn']} },
{ name: "CreateDate", index: "CreateDate", width: 50, search: false },
{ name: "EditDate", index: "EditDate", width: 50, search: false },
{ name: "IsPublic", index: "IsPublic", width: 25, search: false }
],
rowNum: 10,
rowList: [10, 20, 30],
pager: '#pager',
sortname: 'CreateDate',
emptyrecords: 'No records to display',
ignoreCase: true,
viewrecords: true,
caption: "My Checklists",
onSelectRow: function (id) {
var listid = jQuery('#tmpgrid').getCell(id, "Item id");
$(window.location).attr('href', '/template/details/' + listid);
}
});
grid.jqGrid('navGrid', '#tmppager', { edit: false, add: false, del: false, searchtext: 'Search' });
</script>
我见过关于脚本加载/排序问题的Oleg's posts,但我不相信这是我的问题(或者我可能不能正确理解解决方案) - 因为我没有使用开发人员发布,因此只有2个js文件:“grid.locale-en.js”和“jquery.jqgrid.min.js”。另外,我不确定这是否仍适用于3.7.2之后的jqgrid版本。我正在使用最新的4.0.0版本
我在这里撞墙挡住我的头。有什么想法吗?
答案 0 :(得分:2)
您是否认为这是与其他脚本的互动?我在网站上有一些telerik组件,当我将他们的@ Html.Telerik()。ScriptRegistrar()组件拉出来时,jqGrid开始正常工作。
嗯......现在让我自己摆脱那些telerik组件。无论如何,我一直在计划这个。
感谢您的帮助!
答案 1 :(得分:1)
我认为jqGrid使用jQuery-UI样式方法调用。根据{{3}},您需要像这样致电getCell
:
$('#tmpgrid').jqGrid('getCell', id, 'Item id');
答案 2 :(得分:0)
我想,你必须使用“新API”风格。我的意思是你将jqGrid JavaScripts包含在以下表格中(参见documentation):
<script src="js/i18n/grid.locale-en.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery.jgrid.no_legacy_api = true;
</script>
<script src="js/jquery.jqGrid.min.js" type="text/javascript"></script>
对于您使用的大多数jqGrid方法,您应该使用“新API”样式。例如
var listid = jQuery('#tmpgrid').jqGrid('getCell', id, "Item id");
而不是
var listid = jQuery('#tmpgrid').getCell(id, "Item id");
答案 3 :(得分:0)
心灵的同事刚刚解决了这个 - $('#xyz'),与$ get('#xyz')相同 - 它返回一个dom对象,你只能调用dom方法。
然而$ find()会使用预期的方法获得实际对象