首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

最近做项目遇到的有关jqGrid和jstree的有关问题

2012-11-04 
最近做项目遇到的有关jqGrid和jstree的问题一、query.jqGrid-3.6.4css:首先一定要保证在你的页面中导入了一

最近做项目遇到的有关jqGrid和jstree的问题

一、query.jqGrid-3.6.4

css:
首先一定要保证在你的页面中导入了一个JQuery UI theme css 文件.
如:<link type="text/css" href="../scripts/jslib/jquery/custom-theme/jquery-ui-1.7.2.custom.css" rel="stylesheet" />
同时在JQuery UI theme css 文件的同级目录中一定要有JQuery UI theme中所包含的images文件夹及里面的image文件,如上的目录,则在目录custome-theme下面有一个images文件夹,里面包含jquery-ui-1.7.2.custom.css所引用的所有图片.如果不导入这个images文件夹的话,则jqGrid-3.6.4的很多css不能完全表示出来,它的分页导航中用到的上一页、下一页等等导航图片不能正常显示。除了导入JQuery UI theme css 文件外,你还得导入ui.jqgrid.css文件,此文件的目录不一定得和jquery-ui-1.7.2.custom.css的一致。你可以将其放在其它的目录下,如下所示:
<link type="text/css" href="../styles/csslib/jqgrid/ui.jqgrid.css"? rel="stylesheet" />
如果你用到了jqGrid的多选功能,最好再导入ui.multiselect.css文件。如下所示:
??? <link type="text/css" href="../styles/csslib/jqgrid/ui.multiselect.css" rel="stylesheet" />
js:
从下载的jqgrid文件夹中的js/i18n目录下复制一个你要求的相应的语言文件到你的web项目中。如我们的项目大部分是要求显示中文的,所以选择grid.locale-cn.js文件,同时在你的web项目中导入query.jqGid.min.js文件。
如下所示:<script type="text/javascript"
??? src="../scripts/jslib/jqgrid/grid.locale-cn.js"></script>
<script type="text/javascript"
??? src="../scripts/jslib/jqgrid/jquery.jqGrid.min.js"></script>
特别注意:导入这两个js文件时要特别注意:grid.locale-cn.js必须放在jquery.jqGrid.min.js的前面。
如果你颠倒了它们的顺序的话你就会遇到错误。我就遇到了这个问题。

二、jsTree.v.0.9.9a2的一个问题
在jstree的官网上的文档中(http://www.jstree.com/documentation)的第一句如下所示:
“First of all, as jsTree is a jQuery component, you need to include jQuery itself. Currently jsTree uses version 1.3.2 (the latest as of 14.Sept.2009)”。
网上现在最新的jstree稳定版本是jsTree.v.0.9.9a2, 它的1.0版本还只是测试版本。由于这句话的缘故,我在使用jstree时,就用了jquery1.3.2版本,因为现在jquery的主流还应该是1.3,而不是jquery1.4。但最后问题就出来了,在我的项目中产生了两棵jstree,都调用了callback中的onselect函数,这样两个onselect回调函数中的jstree实例,都会是首先在浏览器中产生的那棵树。也就是说两棵树都会调用第一棵树实例的onselect回调函数。解决办法是:
将jquery1.3.2换成jquery1.4.1就OK了。在下载的jsTree.v.0.9.9a2中的lib目录下的jquery.js的版本就是1.4.1。

但如果我在项目中使用jquery1.4.1的话,则我很多js以及一些jquery插件都不能再运行,但它们在jquery1.3.2下是可以很好的运行的。

最终解决方案是: 不要使用jsTree.v.0.9.9a2,因为它使用的是jquery1.4.1,而直接使用jsTree.v.0.9.9(基于jquery1.3.2)就可以了.也就是你以前基于jsTree.v.0.9.9a2写的js代码,在使用jsTree.v.0.9.9时一样也能运行,因为它们其实就是同一个jstree版本,不像jsTree.v.0.9.8与jsTree.v.0.9.9的区别,后者不但修改了前者中已有的许多函数的命名,同时新增了很多新函数,但jsTree.v.0.9.9a2相对jsTree.v.0.9.9只是修正了一些bug而已,"fixed bug with creating root nodes",这是在jstree官网上changelog中的原话!所以完全可以使用jsTree.v.0.9.9替代了jsTree.v.0.9.9a2,同样能实现功能,且不需要修改js代码,很爽!

你可以使用我下面提供的这个htm测试一下,你将它放到\jsTree.v.0.9.9a2\demo目录下即可进行测试:

 

热点排行
Bad Request.