- 浏览: 33411 次
- 性别:
- 来自: 广州
最新评论
Ext.data.TreeStore远程加载树节点有两种常用方式,分别是:分级加载和整体加载。
对于结构复杂数据量大的树结构使用分级加载可以极大提高程序响应速度并提升用户体验。
客户端:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'treecolumn.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css">
<script type="text/javascript" src="ext-all.js" ></script>
<script type="text/javascript" src="locale/ext-lang-zh_CN.js"></script>
<script type="text/javascript">
Ext.onReady(function(){
//定义数据模型
Ext.regModel("OrgInfo",{
fields:['orgId','name','count']
});
var myStore=new Ext.data.TreeStore({
model:'OrgInfo',
nodeParam:'orgId', //节点参数名
proxy:{
type:'ajax',
url:'treestore/treeServer.jsp',
reader:'json'
},
autoLoad:true,
root:{
name:'根节点',
expanded : true,//根节点是否展开
id:'-1'
}
});
Ext.create('Ext.tree.Panel',{
title:'分级异步加载树节点示例',
renderTo:Ext.getBody(),
width:250,
height:200,
columns:[{
xtype:'treecolumn', //树状表格列
text:'公司名称',
dataIndex:'name',
width:150,
sortable:true
},
{
text:'员工人数',
dataIndex:'count',
flex:1,
sortable:true
}],
store:myStore,
rootVisible:false //,隐藏根节点
//useArrows:true
});
});
</script>
</head>
<body>
</body>
</html>
服务器端:treeServer.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String orgId=request.getParameter("orgId");
String result="";
if("-1".equals(orgId)){
result="[{name:'总公司',count:100,id:100}]";
}else if("100".equals(orgId)){
result="[{name:'分公司一',count:20,id:110},{name:'分公司二',count:80,id:120}]";
}else if("120".equals(orgId)){
result="[{name:'部门一',count:30,id:121,leaf:true},{name:'部门二',count:50,id:122,leaf:true}]";
}
response.getWriter().write(result);
%>
注:所有示例来自《ExtJS Web 应用程序开发指南》第2版
这是第13章,开始没有得到想要的效果。后来问了其他朋友才知道少了
expanded : true,这行代码,没有默认展开根节点。
如果加上 useArrows:true 在树节点中使用箭头 ,效果如图usearrow.jpg
对于结构复杂数据量大的树结构使用分级加载可以极大提高程序响应速度并提升用户体验。
客户端:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'treecolumn.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link rel="stylesheet" type="text/css" href="resources/css/ext-all.css">
<script type="text/javascript" src="ext-all.js" ></script>
<script type="text/javascript" src="locale/ext-lang-zh_CN.js"></script>
<script type="text/javascript">
Ext.onReady(function(){
//定义数据模型
Ext.regModel("OrgInfo",{
fields:['orgId','name','count']
});
var myStore=new Ext.data.TreeStore({
model:'OrgInfo',
nodeParam:'orgId', //节点参数名
proxy:{
type:'ajax',
url:'treestore/treeServer.jsp',
reader:'json'
},
autoLoad:true,
root:{
name:'根节点',
expanded : true,//根节点是否展开
id:'-1'
}
});
Ext.create('Ext.tree.Panel',{
title:'分级异步加载树节点示例',
renderTo:Ext.getBody(),
width:250,
height:200,
columns:[{
xtype:'treecolumn', //树状表格列
text:'公司名称',
dataIndex:'name',
width:150,
sortable:true
},
{
text:'员工人数',
dataIndex:'count',
flex:1,
sortable:true
}],
store:myStore,
rootVisible:false //,隐藏根节点
//useArrows:true
});
});
</script>
</head>
<body>
</body>
</html>
服务器端:treeServer.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String orgId=request.getParameter("orgId");
String result="";
if("-1".equals(orgId)){
result="[{name:'总公司',count:100,id:100}]";
}else if("100".equals(orgId)){
result="[{name:'分公司一',count:20,id:110},{name:'分公司二',count:80,id:120}]";
}else if("120".equals(orgId)){
result="[{name:'部门一',count:30,id:121,leaf:true},{name:'部门二',count:50,id:122,leaf:true}]";
}
response.getWriter().write(result);
%>
注:所有示例来自《ExtJS Web 应用程序开发指南》第2版
这是第13章,开始没有得到想要的效果。后来问了其他朋友才知道少了
expanded : true,这行代码,没有默认展开根节点。
如果加上 useArrows:true 在树节点中使用箭头 ,效果如图usearrow.jpg
发表评论
-
Ext.Ajax.request提交JSON数据
2013-07-10 09:29 1367JSON作为轻量级的数据传输格式,在很多时候可以作为XML文件 ... -
Ext.Ajax.request提交XML数据示例
2013-07-09 16:51 947服务器端:loginServerXml.jsp 在lib下要有 ... -
Ext.Ajax.request异步提交表单示例
2013-07-09 16:10 1047服务器端代码:loginServer.jsp <%@ ... -
树形面板Ext.tree.Panel
2013-07-05 15:19 647<!DOCTYPE html PUBLIC " ... -
relayEvents传播分发事件
2013-07-04 14:17 695<!DOCTYPE html PUBLIC " ... -
Extjs自定义事件
2013-07-04 10:54 436<!DOCTYPE html PUBLIC " ... -
改变文档样式风格示例
2013-07-04 10:55 773<!DOCTYPE html PUBLIC " ... -
ExtJS事件绑定方式示例
2013-07-04 10:55 673<!DOCTYPE html PUBLIC " ... -
Ext.util.JSON编码和解码JSON对象
2013-07-03 15:27 944<script type="text/java ... -
Ext.util.Format提供的常用格式化方法
2013-07-03 14:57 1333<!DOCTYPE html PUBLIC " ... -
Ext.util.ClickRepeater 事件的配置和触发
2013-07-03 11:55 748Ext.util.ClickRepeater 继承Ext.ut ... -
样式表的创建和规则获取示例
2013-07-03 10:44 516<!DOCTYPE html PUBLIC " ... -
Ext.KeyNav为元素提供简单的按键处理方法示例
2013-07-03 09:46 848<!DOCTYPE html PUBLIC " ... -
Ext常用函数
2013-07-01 16:42 629函数一:Ext.onReady() Ext的Dom都是动态生成 ... -
水平盒布局HBox
2013-07-01 15:43 486<!DOCTYPE html PUBLIC " ... -
表格布局
2013-07-01 15:18 522<!DOCTYPE html PUBLIC " ... -
Ext.layout.container.Column布局
2013-07-01 15:18 755<script type="text/java ... -
Absolute绝对位置布局示例
2013-07-01 14:35 396Ext.layout.container.Absolute对应 ... -
Card 卡片式布局
2013-06-28 16:40 951<!DOCTYPE html PUBLIC " ... -
Ext.layout.container 标准布局类
2013-06-28 15:48 767<!DOCTYPE html PUBLIC " ...
相关推荐
store: Ext.create('Ext.data.TreeStore', { model: 'TreeNode', proxy: { type: 'ajax', url: 'tree_data.json', reader: { type: 'json', root: 'nodes' } }, autoLoad: true }), rootVisible: false...
为了实现动态加载,EXT树使用了`Ext.data.TreeStore`,它是一个专门用来处理树形数据的存储类。TreeStore可以通过配置`proxy`来指定数据源,通常使用Ajax或ScriptTagProxy来实现异步加载。以下是一个基本配置示例: ...
这里定义了一个`TreePanel`,它使用`AsyncTreeNode`作为根节点,并配置了异步加载器(`TreeLoader`),该加载器指向了一个XML文件,该文件包含了树形菜单的具体数据。 #### 4. 添加链接及事件处理 为了让树形菜单中...
在Ext 4.0版本中,下拉树的实现主要依赖于几个关键组件:`Ext.tree.Panel`(树面板)、`Ext.form.field.Tree`(树形字段)以及可能用到的`Ext.data.TreeStore`(树存储)。下面我们将详细探讨这些知识点: 1. **Ext...
1. `store`:定义数据存储对象,可以是Ext.data.TreeStore,用于保存树形结构的数据。 2. `displayField`:指定显示在下拉框中的字段,通常是从树节点数据中提取的属性。 3. `valueField`:选择后记录的值,通常是树...
- 使用`Ext.data.TreeStore`可以更灵活地管理树的数据源,支持远程数据加载和实时更新。 8. **示例代码**: 示例代码中,`treePanel.html`定义了HTML结构,`treePanel.js`包含了`TreePanel`的创建和配置。`...
异步加载,也称为懒加载或需求加载,意味着当用户滚动、展开节点或者进行其他交互时,只加载当前需要的数据,而不是一次性加载整个树。这在处理大量数据或深层级结构时特别有用,因为它减少了初次加载时的网络传输量...
代码如下: var Store = Ext.create(‘Ext.data.Store’, { pageSize: pageSize, model: ‘Ext.data.Model名称’, autoLoad: false, proxy: { type: ‘ajax’, url: ‘请求路径’, getMethod: function(){ return ...
2. **定义数据源**(store):树节点的数据通常存储在Ext.data.TreeStore中,每个节点代表一个记录,包含id、text、children等字段。可以使用Ext.data.Model定义模型,然后通过Ext.data.TreeStore加载数据。 ```...
2. **Ext.data.TreeStore**:用于存储树结构数据的Store类型,它扩展了`Ext.data.Store`。TreeStore管理着树的节点,并负责加载和解析JSON数据。在动态树中,通常会配置`loadOnDemand`属性,以便按需加载子节点。 3...
7.5.11 树节点:ext.data.nodeinterface与ext.data.tree / 364 7.5.12 store的方法 / 366 7.5.13 store的事件 / 368 7.5.14 store管理器:ext.data.storemanager / 369 7.6 综合实例 / 369 7.6.1 远程读取json...
在IT领域,尤其是在Web开发中,用户界面的交互性与...通过结合`Ext.menu.Menu`和`Ext.data.TreeStore`,我们可以创建交互性强且符合业务需求的Tree组件。这个功能对于提高用户界面的易用性和提供定制化服务非常有帮助。
- 创建树存储(EXT.data.TreeStore),并加载数据 - 创建EXT.form.field.TreeCombo实例,配置store、displayField、valueField等属性 - 添加事件监听器,如'expand'、'select'等 - 将COMBO TREE组件添加到一个布局...
2. ` store`: 存储节点数据的Ext.data.TreeStore对象,需要包含节点数据的模型(Model)和数据源(DataSource)。 3. ` root`: 作为树的根节点,通常包含在store中。 4. ` checkboxes`: 如果需要,可以启用复选框...
需要定义一个`TreeStore`,配置`proxy`为`Ext.data.TreeProxy`,并设置`url`属性指定服务器接口地址,用于获取节点数据。 3. **JsonReader**:数据解析器,负责将服务器返回的JSON数据转化为TreeStore可以理解的...
节点的数据通常是通过`Ext.data.TreeStore`来管理的,这是一个特殊的`Ext.data.Store`,专门用于处理树形数据。 **树形结构的配置与功能:** - **展开和折叠:** 可以通过`expanded`属性来控制节点的展开和折叠状态...
- `Ext.data.TreeStore`用于管理树节点数据,它可以连接到服务器进行异步加载。 3. **节点操作**: - `expand()`: 展开节点。 - `collapse()`: 折叠节点。 - `select()`: 选择节点。 - `unselect()`: 取消选择...
store: Ext.create('Ext.data.TreeStore', { model: 'Department', root: { text: '所有部门', expanded: true, children: [ /* ... */ ] } }), displayField: 'text', valueField: 'id', mode: '...
var treeStore = Ext.create('Ext.data.TreeStore', { model: 'TreeNode', // TreeNode是自定义的数据模型 proxy: { type: 'ajax', // 使用AJAX代理 url: 'tree-data.php', // JSON数据的获取地址 reader: { ...
2. 定义树数据模型:使用Ext.data.TreeStore来定义树的数据源,包括节点ID、父节点ID、文本等信息。 3. 创建树节点:使用Ext.tree.Panel或Ext.tree.View创建树结构,并配置数据源。 4. 将树转换为下拉菜单:使用Ext....