2013-01-05 25 views
0

最近,我使用jqGrid来表示我的业务数据集,并且发现使用jqGrid编辑/添加/删除/查看功能,所以我尝试使用它。但是我遇到了一个问题,并且在我尽力而为之后无法解决问题。

我这样做,以下从这个网站示例:

jQuery("#deptGrid").jqGrid('navGrid', '#deptNav', { 
    view : true 
}, 
{ 
    jqModal : true, 
    checkOnUpdate : true, 
    savekey : [ true, 13 ], 
    navkeys : [ true, 38, 40 ], 
    checkOnSubmit : true, 
    reloadAfterSubmit : false, 
    closeOnEscape : true, 
    bottominfo : "Fields marked with (*) are required" 
}, { 
    jqModal : true, 
    checkOnUpdate : true, 
    savekey : [ true, 13 ], 
    navkeys : [ true, 38, 40 ], 
    checkOnSubmit : true, 
    reloadAfterSubmit : false, 
    closeOnEscape : true, 
    bottominfo : "Fields marked with (*) are required" 
}, { 
    reloadAfterSubmit : false, 
    jqModal : false, 
    closeOnEscape : true 
}, { 
    closeOnEscape : true 
}, { 
    navkeys : [ true, 38, 40 ], 
    height : 250, 
    jqModal : false, 
    closeOnEscape : true 
}); 

UPDATE:以下是我所有的,包括:

<link rel="stylesheet" type="text/css" href="<%=BASE_PATH %>admin/styles/stylesheet.css" /> 
<link rel="stylesheet" type="text/css" href="<%=BASE_PATH %>admin/js/jquery/ui/themes/ui-lightness/ui.all.css" /> 

<link rel="stylesheet" type="text/css" media="screen" href="<%=BASE_PATH %>jqGrid4.4.1/themes/redmond/jquery-ui-1.8.2.custom.css" /> 
<link rel="stylesheet" type="text/css" media="screen" href="<%=BASE_PATH %>jqGrid4.4.1/themes/ui.jqgrid.css" /> 
<link rel="stylesheet" type="text/css" media="screen" href="<%=BASE_PATH %>jqGrid4.4.1/themes/ui.multiselect.css" /> 

<!-- Including JS --> 
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery.min.js"></script> 
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery-ui-1.8.custom.min.js"></script> 
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/superfish/js/superfish.js"></script> 
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/tab.js"></script> 
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/global.js"></script> 
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/thickbox/thickbox.js"></script> 
<link rel="stylesheet" type="text/css" href="<%=BASE_PATH %>admin/js/jquery/thickbox/thickbox.css" /> 
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery.form.js"></script> 
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery.validate.js"></script> 
<script type="text/javascript" src="<%=BASE_PATH %>admin/js/jquery/jquery-ui-timepicker-addon.js"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.bgiframe-2.1.2.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.core.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.widget.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.mouse.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.button.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.draggable.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.position.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.resizable.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.ui.dialog.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>admin/js/jquery/ui/jquery.effects.core.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>js/kevinshi.js" type="text/javascript"></script> 

<script src="<%=BASE_PATH %>jqGrid4.4.1/js/jquery.jqGrid.src.js" type="text/javascript"></script> 
<script src="<%=BASE_PATH %>jqGrid4.4.1/js/i18n/grid.locale-en.js" type="text/javascript"></script> 

更新:每当我点击按钮来编辑/添加/删除,它总是在萤火虫内导致错误:

$.type is not a function 
var obj = $.type(pref); 

我跟踪到jqGrid的源代码,这个错误在如下文件jquery.jqGrid.src.js线52发生的:

stripPref : function (pref, id) { 
var obj = $.type(pref); // Happened at this line. 
if(obj == "string" || obj =="number") { 
pref = String(pref); 
id = pref !== "" ? String(id).replace(String(pref), "") : id; 
} 
return id; 
}, 

所以,就在这一刻,我可以说,jQuery.type()方法被发现,但我已经包括图书馆jquery.min.js,我很困惑。

+0

你可以发布类型函数应该被定义的代码吗?这看起来像它使用自定义jQuery插件,但你没有明确创建它,因此使其不确定。 –

+0

只需使用这个:刚刚jquery包括 –

回答

0

将两个JavaScript文件与同一个模块的实现包含得更多一次,这是错误的。此外,以正确的顺序包含JavaScript文件也很重要。另外,你不应该包含任何你不使用的插件。

典型地,一个一些溶液的显影期间使用

i18n/grid.locale-en.js 
jquery.jqGrid.src.js 

和在最终溶液中使用

i18n/grid.locale-en.js 
jquery.jqGrid.min.js 

。见the documentation

一个应该包括jQuery 之前任何jqGrid JavaScript文件。包括ui.jqgrid.css和jQuery UI CSS也是必需的。

如果你仍然有错误,你应该发布错误发生的确切行号jquery.jqGrid.src.js。你应该发布更完整的JavaScript代码,你使用。

+0

非常感谢您的详细回复,我按照您的指示更新了问题,请注意var obj = $ .type(pref);,which –

+0

如果功能添加/编辑/删除不能在我的开发中工作,我会放弃这个解决方案并转向其他人,像我自己开发它们一样,再次感谢@ Oleg! –

+0

@BradyChu:我们现在是更接近问题的原因,但现在需要知道case中的'pref'的值和类型,并且知道'stripPref'被调用的位置是很好的,而且不包含jqGrid的定义你使用的是什么,特别重要的是你是否改变了jqGrid的'idPrefix'选项的值,该选项的默认值是''“',''.type(pref)''中应该没有错误''pref'等于'“”'或任何其他字符串。 – Oleg

0

我刚刚遇到完全相同的错误消息。我发布什么对我有用的情况下可能会帮助其他人。 我得到了TypeError:当试图从窗体保存时,b.type不是函数。 我使用的jqgrid版本是4.4.3,而且我正在调用jquery(1.4.2)的旧版本。 使用更新版本的jquery(在我的情况下是1.7.2)解决了这个问题。我猜'功能'类型不是在版本1.4.2。

0

解决了这个问题。仅仅因为jqGrid不支持jQuery 1.9

相关问题