ext.data.jsonreaderTreeStore怎么实现异步加载

所有回答(2)
自己已经解决了!~
我是Ext5也遇到了你的问题请问是如何解决的谢谢!!!
&&&您需要以后才能回答,未注册用户请先。博客分类:
unitTreeStore = Ext.create('Ext.data.TreeStore', {
storeId:'unitTreeStore',
nodeParam: 'pid',
//向服务端发送结点的名称,默认为node
defaultRootId: '', //向服务端发送root结点的值
type : 'ajax',
url : 'unit/getUnits.do',
reader : {
type : 'json',
var unitTreePanel = Ext.create(&Ext.tree.Panel&,{
title: '单位列表',
width: 250,
region: 'west',
store: unitTreeStore,
rootVisible: false
//让ext全屏显示
Ext.create('Ext.container.Viewport',{
layout:'border',//Border布局
items: [unitTreePanel]
服务器返回的字符串是:[{ id : '2',text : '分公司1',leaf:false},{ id : '3',text : '分公司2',leaf:true},{ id : '4',text : '分公司3',leaf:true},{ id : '5',text : '分公司4',leaf:true},{ id : '6',text : '分公司5',leaf:true},{ id : '7',text : '分公司6',leaf:true}]不管你用的是struts还是spring mvc只要返回是类似于这样的json字符串就行啦在这儿主要说明一点默认第一次发送url为http://localhost:8989/oa_project/unit/getUnits.do?node=root而我上面的代码发送的是http://localhost:8989/oa_project/unit/getUnits.do?pid=如果你不想发送参数名是node而是pid可以这样设置:nodeParam: 'pid'root结点的默认值为root,这样在后台还的单独处理,你可以设置为0或者是其他的值,只需要加上一条这样的语句:defaultRootId: 0
效果图如下:
浏览: 38685 次
来自: 北京
上传代码是上传错了,这个是调试时的代码。应该将obj改为obj ...
不可以选中文字呀,,,鼠标一拉,,DIV也跟着动
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'09:25 提问
Extjs4.2 treePanel异步加载子节点时,数据错乱问题~~~~(&_&)~~~~
刚开始加载时还正常,是这样子的:
但当我展开展开节点时,显示数据就出现问题了:
后台返回的明明是两条数据,为什么显示时总会多显示最后一条数据???而且因为这里数据出现错乱,后面的节点也展不开了~~~~(&_&)~~~~
下面是我的代码:
var store = Ext.create('Ext.data.TreeStore', {
nodeParam: 'equipmentTypeId',
//向服务端发送结点的名称,默认为node
defaultRootId: '', //向服务端发送root结点的值
type : 'ajax',
url : '${pageContext.request.contextPath}/equipment',
reader : {
type : 'json'
Ext.create('Ext.tree.Panel', {
title: 'Simple Tree',
width: 200,
margin: 5,
collapsible: true,
singleExpand: true,
rootVisible: false,
store: store,
renderTo: Ext.getBody()
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐Extjs&treeLoader&异步加载树
对于ExtJS中的树来说,树加载器TreeLoader是一个比较关键的部件,树加载器由Ext.tree.TreeLoader类定义,只有AsyncTreeNode才会使用TreeLoader。看下面的代码:
Ext.onReady(function(){
var loader=new Ext.tree.TreeLoader({
//url:"treedata.js"
url:'AAA.do?content.method=getTreeNodes&parentId=0'
var root=new Ext.tree.AsyncTreeNode({
id:"root",
text:"根节点",
loader:loader});
var tree=new Ext.tree.TreePanel({
renderTo:"hello",
root:root,
首先我们使用Ext.tree.TreeLoader来初始化了一个TreeLoader对象,构造函数中的配置参数url表示获得树节点信息的url。然后在初始化根节点的时候我们使用的是AsyncTreeNode,在该节点中指定该节点的
laoder为前面定义的loader。执行这段程序,在点击“根节点”时,会从服务器端指定root节点的子节点信息。
&  TreeLoader严格来说是针对树的节点来定义的,可以给树中的每一个节点定义不同的TreeLoader,默认情况下,如果一个
AsyncTreeNode节点在准备加载子节点的时候,如果该节点上没有定义loader,则会使用TreePanel中定义的loader作为加载器。因此,我们可以直接在TreePanel上面指定loader属性,这样就不需要给每一个节点指定具体的TreeLoader了。
监听TreePanel的beforeload(node)事件,当点击不同的树节点时,将树节点ID传到后台获得该node节点的下级节点。
如:tree.on('beforeload',function(node){
tree.loader.dataUrl='AAA.do?content.method=getTreeNodes&parentId='+node.
获得TreeNode自定义属性值的方法:node.attributes.XXX。XXX为自定义属性。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 ext.data.store异步 的文章

 

随机推荐