- 浏览: 152872 次
- 性别:
- 来自: 北京
最新评论
-
科小新:
99999999999999999
[Ext扩展]两个来自Ext官方论坛的时间控件扩展,可选择时分秒 -
ldl_xz:
http://www.9958.pw/post/css_pos ...
兼容ie6、ie7、ff的css顶端固定位置定位 -
snnosnno:
有浏览器差异吖
[Ext扩展]两个来自Ext官方论坛的时间控件扩展,可选择时分秒 -
lian819:
感谢无私分享了, 必须赞一个啊
[Ext扩展]两个来自Ext官方论坛的时间控件扩展,可选择时分秒 -
Sweetme:
放进项目就行了,成功了。谢谢哦怒赞
[Ext扩展]两个来自Ext官方论坛的时间控件扩展,可选择时分秒
仿照官网例子:XmlTreeLoader做的,下面有实例
注意:html文件的库引用请自行解决
这个要看情况吧,如果是死的层次结构我把层次信息存在数据库敢问有合不妥?
我在ie6下测试了你的代码,没有发现任何问题啊,用不着加什么监听事件,出现loadexception可能是你在哪儿重复加载数据了吧
当然,这里的树采用异步方式加载,直接用浏览器打开文件是无法向后端发起请求的,你需要配置一个web环境(譬如tomcat、IIS、jetty等)再通过url方式访问
注意:html文件的库引用请自行解决
/** * 通过读取JSON串生成树的层次结构,务必保证json数组中结点出现次序与树完全展开时一致! * (通过后台对编码进行排序来完成) * JSON串根节点默认为'list' * 父结点id字段为 * * 注意: * 1.因为是一次加载全部结点,节点数过多的话将严重影响性能,此时请使用异步加载! * 2.结点的id属性对应json中code属性,结点text属性对应json中name属性。 * 3.根节点的直接子节点的parentcode字段为null或者空字符串都可以 * * v1.1改动: * 1.不再需要leaf属性!一个结点是否为叶子结点将基于json中下一个结点是否为其子节点来判断! * 本特性将提高转变叶子节点为父节点的操作效率,此时你在界面上给一个叶子结点添加一个子节点 * 不用再修改叶子结点在后台的leaf属性,你要做的只是保证返回json中的编码规范以及出现次序。 * 2.如果你设置了leaf属性则此属性将被忽略 * * @author chemzqm@gmail.com * */ Ext.ns('Ext.ux.tree'); Ext.ux.tree.JsonTreeLoader = Ext.extend(Ext.tree.TreeLoader, { root: 'list', paramName: { parentcode: 'parentcode', id: 'code' }, // private override processResponse: function(response, node, callback){ var json = response.responseText; var array = Ext.decode(json)[this.root]; try { node.beginUpdate(); node.appendChild(this.parseArray(array)); node.endUpdate(); if (typeof callback == "function") { callback(this, node); } } catch (e) { this.handleFailure(response); } }, // private parseArray: function(array){ var pnodes = []; var nodes = []; for (var i = 0; i < array.length; i++) { var o = array[i];//判断是否叶子结点 if(array[i+1]&&array[i+1][this.paramName.parentcode]==o[this.paramName.id]){ o.leaf = false; }else{ o.leaf = true; } var treeNode = this.createNode(o); if (!o[this.paramName.parentcode]) { nodes.push(treeNode); } else { for (var j = pnodes.length - 1; j >= 0; j--) { if (pnodes[j].id == o[this.paramName.parentcode]) { pnodes[j].appendChild(treeNode); break; } } } if (!treeNode.leaf) { pnodes.push(treeNode); } } return nodes; }, // private override node的id是json里面的code字段 createNode: function(o){ var attr = { id: o.code, text: o.name }; Ext.applyIf(attr, o); attr.loaded = true; this.processAttributes(attr); return Ext.ux.tree.JsonTreeLoader.superclass.createNode.call(this, attr); }, /* * Template method intended to be overridden by subclasses that need to provide * custom attribute processing prior to the creation of each TreeNode. This method * will be passed a config object containing existing TreeNode attribute name/value * pairs which can be modified as needed directly (no need to return the object). */ processAttributes: Ext.emptyFn }); //backwards compat Ext.ux.JsonTreeLoader = Ext.ux.tree.JsonTreeLoader;
- JsonTreeLoader1.1.rar (17.5 KB)
- 下载次数: 296
评论
7 楼
chemzqm
2010-05-12
joehe 写道
这样设计是不好的,不要把数据组织放到服务端
这个要看情况吧,如果是死的层次结构我把层次信息存在数据库敢问有合不妥?
6 楼
joehe
2010-05-12
这样设计是不好的,不要把数据组织放到服务端
5 楼
chemzqm
2010-04-29
air831 写道
我知道问题的原因了,
"url": "Main.ASPX/Login/",
"name": "管理信息系统",
"code": "0",
"leaf": false,
"parentcode": "-1" --------------根节点的parentcode必须要等于" "
在firefox中显示正常,但是在IE中无法加载,查了下,说是因为“Ext.tree.TreePanel 在IE下不正常加载”
需要加上监听,有其他什么好办法吗?
listeners: {
"loadexception": function(loader, node, response) {
node.loaded = false;
node.reload.defer(10, node); //不停的加载,直到true
}
}
"url": "Main.ASPX/Login/",
"name": "管理信息系统",
"code": "0",
"leaf": false,
"parentcode": "-1" --------------根节点的parentcode必须要等于" "
在firefox中显示正常,但是在IE中无法加载,查了下,说是因为“Ext.tree.TreePanel 在IE下不正常加载”
需要加上监听,有其他什么好办法吗?
listeners: {
"loadexception": function(loader, node, response) {
node.loaded = false;
node.reload.defer(10, node); //不停的加载,直到true
}
}
我在ie6下测试了你的代码,没有发现任何问题啊,用不着加什么监听事件,出现loadexception可能是你在哪儿重复加载数据了吧
4 楼
air831
2010-04-29
我知道问题的原因了,
"url": "Main.ASPX/Login/",
"name": "管理信息系统",
"code": "0",
"leaf": false,
"parentcode": "-1" --------------根节点的parentcode必须要等于" "
在firefox中显示正常,但是在IE中无法加载,查了下,说是因为“Ext.tree.TreePanel 在IE下不正常加载”
需要加上监听,有其他什么好办法吗?
listeners: {
"loadexception": function(loader, node, response) {
node.loaded = false;
node.reload.defer(10, node); //不停的加载,直到true
}
}
"url": "Main.ASPX/Login/",
"name": "管理信息系统",
"code": "0",
"leaf": false,
"parentcode": "-1" --------------根节点的parentcode必须要等于" "
在firefox中显示正常,但是在IE中无法加载,查了下,说是因为“Ext.tree.TreePanel 在IE下不正常加载”
需要加上监听,有其他什么好办法吗?
listeners: {
"loadexception": function(loader, node, response) {
node.loaded = false;
node.reload.defer(10, node); //不停的加载,直到true
}
}
3 楼
air831
2010-04-29
这次我配置了WEB环境,数据库返回的Json为以下格式,但是还是无法显示树
返回的Json
{
"menu": [
{
"url": "Main.ASPX/Login/",
"name": "管理信息系统",
"code": "0",
"leaf": false,
"parentcode": "-1"
},
{
"url": "Task.ASPX/Index",
"name": "任务查询",
"code": "1",
"leaf": true,
"parentcode": "0"
},
{
"url": "BaseInfo.ASPX/Index",
"name": "基础资料",
"code": "2",
"leaf": true,
"parentcode": "0"
}
]
}
生成树JS
var menu = new Ext.tree.TreePanel({
title: '功能菜单',
region: "west",
autoScroll: true,
enableTabScroll: true,
collapsible: true,
collapsed: false,
split: true,
rootVisible: false,
loader: new Ext.ux.tree.JsonTreeLoader({//这里配下就行了
root: 'menu',
dataUrl: contextpath + 'Main.ASPX/GetMenuTree'
}),
root: new Ext.tree.AsyncTreeNode()
});
返回的Json
{
"menu": [
{
"url": "Main.ASPX/Login/",
"name": "管理信息系统",
"code": "0",
"leaf": false,
"parentcode": "-1"
},
{
"url": "Task.ASPX/Index",
"name": "任务查询",
"code": "1",
"leaf": true,
"parentcode": "0"
},
{
"url": "BaseInfo.ASPX/Index",
"name": "基础资料",
"code": "2",
"leaf": true,
"parentcode": "0"
}
]
}
生成树JS
var menu = new Ext.tree.TreePanel({
title: '功能菜单',
region: "west",
autoScroll: true,
enableTabScroll: true,
collapsible: true,
collapsed: false,
split: true,
rootVisible: false,
loader: new Ext.ux.tree.JsonTreeLoader({//这里配下就行了
root: 'menu',
dataUrl: contextpath + 'Main.ASPX/GetMenuTree'
}),
root: new Ext.tree.AsyncTreeNode()
});
2 楼
chemzqm
2010-04-26
air831 写道
请问,测试过吗?
为什么我下载例子后树无法显示出来?
为什么我下载例子后树无法显示出来?
当然,这里的树采用异步方式加载,直接用浏览器打开文件是无法向后端发起请求的,你需要配置一个web环境(譬如tomcat、IIS、jetty等)再通过url方式访问
1 楼
air831
2010-04-23
请问,测试过吗?
为什么我下载例子后树无法显示出来?
为什么我下载例子后树无法显示出来?
发表评论
-
[翻译]Ex4t教程:Ext4起步
2012-02-23 21:58 01.1 浏览器 Ext JS 4 supports a ... -
[Ext入门]如何学习Ext
2010-05-29 19:26 2714国内使用Ext的可谓不少,但是多数也只限与使用其中示例,真能把 ... -
[Ext重写]必填项的label后面加星号
2010-05-20 15:49 3204Ext.form.TextField.override({ ... -
[Ext重写]限制树的深度
2010-05-19 00:51 1881以前做政府项目的时候经常涉及行政区划的树,这个树有的时候要显示 ... -
[Ext源码]Ext的核心方法
2010-05-07 01:17 1541Ext.extend方法: extend : functi ... -
[Ext插件]QM.plugin.MutilTreeFilter:为树添加过滤、展开、收缩功能
2010-05-01 19:48 3587先来看看Ext的官方API的左上角 本插件基于Ext3.0 ... -
[Ext入门]图文详解Ext常见开发工具的安装使用
2010-04-27 21:28 4717俗话说,工欲善其事,必先利其器。缺乏好的工具想要用好Ext这么 ... -
[Ext扩展]动态分页大小、动态grid高度、本地数据分页三合一
2010-04-27 02:53 6332Ext.ux.plugins.PageComboResizer ... -
[Ext扩展]两个来自Ext官方论坛的时间控件扩展,可选择时分秒
2010-04-26 22:55 21703为方便大家使用,我把控件所需的js、css、gif文件都提取出 ... -
[Ext扩展]QM.ui.TreeCombo:多功能下拉树列表,内含文档与示例
2010-04-26 20:12 5948有句老话叫不重复造轮 ... -
[Ext扩展]QM.ux.TreeFilter:树节点智能过滤,添加中文模糊匹配功能
2010-04-26 18:24 5720Ext自带一个Ext.tree.TreeFilter类,可以实 ... -
[组件用法]Ext.state.Manager对组件状态进行管理
2010-04-20 01:44 4885Ext.state.Manager存在的意义:简单说就是在客户 ... -
[Ext插件]PinyinFilter:使用拼音首字母对数据进行过滤
2010-04-19 00:37 3955这个插件的目的在于提高用户对于数据的选择效率。经常录入数据的人 ... -
[Ext扩展]根据后台json生成左侧导航菜单,5月9日更新1.1版本
2010-04-16 03:39 4919文章内不再提供示例,需要查看者请从SVN下载,地址: http ... -
[Ext扩展]MenuToolbar:根据json串生成多级菜单
2010-04-14 20:16 3739注意:html文件的Ext库引用请自行解决,效果图: ... -
[组件用法]Ext.History用法要点
2010-04-14 01:11 2558在我的单页面试了下这个类的用法,发现这个类还是比较特殊的。 说 ... -
拒绝iframe嵌套,ajax方式轻松实现单页面
2010-04-13 00:00 6208以前单位做的项目都是上面一排菜单按钮,每点击一次按钮下面工作区 ... -
[Ext源码解读]事件的注册、添加与触发是如何实现的
2010-04-11 01:49 2142Ext提供了一套强大的事件处理机制,每个组件都有许多事件,用户 ... -
为Ext.Msg添加一个ghost提示的方法
2010-04-05 19:43 2041总觉得的老用alert的方式打断用户操作是非常不好的做法,调用 ... -
Ext.TreeNodeCascade让所有Ext的树支持级联选中
2010-04-05 04:15 6027运用了单例模式,使用的话直接让页面文件引用即可。该程序不直接关 ...
相关推荐
当树的数据并不多时,把数据一次加载进来,给用户的体验会比较好,这里后台生成数据用递归算法生成json串,前台直接用这个json串作为ext树的数据来源
Ext的gridpanel控件二次加载时丢失解决方案
即:Ext.window 4.mainPage.html为tab布局,右面为tree中间为tab页面。 5.tz-normal-test.html为普通拖拽的练习。 6.tree-asynch-test.html为异步加载的树 7.tree-edit-test.html为节点可以编辑的树 8.tree-tz-...
Ext是目前最流行的JS UI库,但是其最新版2.x的中文资料少,或者过于简单,这里给出1.1版本的全中文资料,缺点是该资料是翻译的源代码的注释,所以看起来有点麻烦,但是目前这是中文话最全的资料了
ext1.1文档,html格式的,全部文挡,官方的
深入浅出Ext_JS:数据存储与传输,学习ext 我在百度搜到的。
Ext GWT 2.0: Beginner's Guide pdf 和源码,重点推荐学习GWT-EXT的入门资料,英文版的
Ext.net1.1 支持IE9,新版的Coolite
NULL 博文链接:https://sungoshine.iteye.com/blog/1154539
Ext2.0不仅仅实现了复选框的树形菜单,而且使得在选中某个节点时,如果有子节点,那么就能够将所有的字节点全部选中,当然你也可以直接选择你希望的节点。但是,当你第一次选中某个有子节点但是子节点并没有展开的...
Ext 异步加载添加 删除节点 修改combobox选择项,相当好的东西,值得参考!希望对你有用!
parsii-ext 扩展parsii,支持求解一元一次方程
可实现选中父节点,自动选中子节点,选中子节点,自动遍历选中父节点
Ext的扩展控件,树形表格。!!!! Ext的扩展控件,树形表格。!!!!
Ext.ux.tree.treegrid异步加载,点击节点加载数据
EXT+S2SH整合动态加载树的列子,jar全有,sql有,请放心使用,对出学着帮助比较大!(该有的都有,没人没有的我也有)有节点拖拽功能!
ext-3.4.1.1
ext树 无限级 json 数据格式 动态加载
ext-http 对PHP的扩展HTTP支持。分支和版本: 注意: 使用v3.x分支,并分别。 适用于PHP-7的v3版本。 master和v4版本仅适用于PHP-8。文献资料请参阅。 已知问题在中列出,将来的想法可以在找到。安装聚氯乙烯pecl ...
根据输入的关键字过滤ext树节点(类似myeclipse中preferences中上的搜索框),可输入节点首字母或中文进行过滤