net extjs tree异步加载数据

小弟最近刚学习extjs,总结一下使用extjs 进行treepanel加载的经验

extjs版本4.0.7,后台是使用net 的mvc框架进行数据传递

首先显示一下效果以及后台数据截图

      //我们提供动态数据

  //这是数据源请求的数据来源(后台自定义JsonTree类提供的主要字段 ID Text FatherID)

extjs代码

<script type="text/javascript">
  Ext.onReady(function () {//以下的脚本js代码都写在这里面

  }

<script >

(1)、首先是我为树定义了数据源(我使用数据源为树提供数据 这样使用mapping匹配信息后台任意的数据都可以转换成树 )

var viewStore = Ext.create(‘Ext.data.TreeStore‘, {//这是树的store
    proxy: {
    type: ‘ajax‘,
    url: "/MenuInfor/GetTree",//这是后台请求的url
        actionMethods: ‘POST‘,//进行post请求
    extraParams: {//这里面我设置我后头需要的参数
      fatherID: -1 //这是后台需要的参数(首次加载时提供了一个默认值)
     }
  },
  autoLoad:true,//设置自动加载(不过我设置了false也会自动加载)
  fields: [
    { name: ‘id‘, mapping: ‘ID‘ },//这是为树的节点进行信息匹配(mapping里面的信息是后台提供的结果)
    { name: ‘text‘, mapping: ‘Text‘ },//这些紫色的文本是后台提供的数据列
    { name: ‘url‘, mapping: ‘Url‘ },
    { name: ‘fatherID‘, mapping: ‘FatherID‘ }
  ],
  root: {//这是根节点
    expanded: true,
    id: -1,
    text:"视图"
  },
  listeners:{//这是进行监听事件
    beforeload: function (store, op, options) {

    //加载前进行处理(这里面的参数我没有弄明白,因此我使用了节点展开事件beforeexpand进行提供后台的参数帮助操作)
    console.log("参数1:" + store);
    console.log("参数2:" + op);
    console.log("参数3:" + options);
    //alert(store.proxy.extraParams.fatherID);//fatherID 这是我后台的参数名
    Ext.apply(store.proxy.extraparams, this.proxy.extraParams);//使用自定义的参数进行替换
    },
  beforeexpand: function (node, eopts) {//点击展开节点加载子节点
    console.log(node.raw);
    this.proxy.extraParams.fatherID = node.raw.ID;//我之前给节点进行字段匹配是树节点id对应后台提供的成员 为ID
    // Ext.apply(this.proxy.extraParams, node.raw.ID);
    }//这是节点的展开之前的事件
  }//这是监听事件
});//这是数据源

//数据源准备好了接下来就是树(树就没有什么代码了)

var tree = Ext.create("Ext.tree.Panel", {
  title: "系统视图",
  store: viewStore,//为树绑定数据源
  height: "100%",
  width: "100%",
});

//将树显示到页面里面(我的布局是 window【 左边 一个panel里面是树】,【右边是一个】,其实下面的代码已经和树没有多大的关系了)

var pnWest = new Ext.Panel({//左边的panel(这里面就是我需要显示的tree)
  id: ‘pnWest‘,
  // title: ‘菜单项‘,
  width: "20%",
  heigth: ‘auto‘,
  split: true,//显示分隔条
  region: ‘west‘,
  collapsible: true,
  items: tree

});

var pnCenter = new Ext.TabPanel({//这是中间区域
  width:"80%",
  region: ‘center‘,
  activeTab: 0,
  closable: false,
  items: [
    {
      title: ‘收件箱‘,
      authHeight: true,
      closable: false,//是否可关闭
      html: ‘这里显示所收邮件。。。‘
    }
  ]
});

Ext.create("Ext.Window", {//显示的窗体
  width: "100%",
  height: "100%",
  layout: "border",
  closable: false,
  draggable: false,
  resizable: false,
  items:[pnWest,pnCenter]
}).show();//直接显示

后台传递过来的数据(我想任意的数据都转换成树,因此我定义了一个类JsonTree)

public class JsonTree
{
  public int ID { get; set; }//树的节点ID
  public string Text { get; set; }
  public string Url { get; set; } 
  public int FatherID { get; set; }//如果节点是根节点则设置为-1 
}

时间: 2024-10-26 01:18:33

net extjs tree异步加载数据的相关文章

iScroll.js 向上滑动异步加载数据回弹问题

iScroll是一款用于移动设备web开发的一款插件.像缩放.下拉刷新.滑动切换等移动应用上常见的一些效果都可以轻松实现. 现在最新版本是5.X,官网这里:http://iscrolljs.com/ 下面是按照官网给的Demo,写的一个异步加载数据实例: 1 <title>iScroll demo: click</title> 2 <script src="~/Scripts/iscroll5/jquery-1.10.2.js"></scrip

SpringMVC+Jquery -页面异步加载数据

背景: 做项目时涉及到页面,当我打算在controller中传一个list到页面,然后通过<c:foreach>循环遍历出来时,同事说:你这样每次都要刷新,这都是几百年前使用的技术了.你用post实现异步加载数据.然后就...... ResultUtil.java 工具类: package com.sgcc.uds.fs.config.web.util; import java.util.HashMap; import java.util.Map; import net.sf.json.JSO

jQuery异步加载数据添加事件

几个月前在一个项目中涉及到树形栏,然后看了很多插件,觉得有点麻烦,于是自己写了一个,写着写着就出问题了.当时项目是通过树形栏进行权限控制的,管理员可以对从数据库去的数据动态生成树形栏进行增删改查操作,可是用$(".XX").click();方法是不行的.1.之前用的是jq1.4.3 ,jq1.7一下都可以使用live()方法,来实现该功能 $('#div').live('click',function(){ //do stuff }); 但是live方法也有不支持的事件,例如:togg

Android利用Volley异步加载数据完整详细示例(二)

MainActivity如下: package cc.y; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.os.Bundle; import android.util.LruCache; import android.widget.ImageView;

Android利用Volley异步加载数据完整详细示例(一)

MainActivity如下: package cc.cn; import java.util.HashMap; import org.json.JSONObject; import android.app.Activity; import android.content.Context; import android.os.Bundle; import com.android.volley.AuthFailureError; import com.android.volley.RequestQ

淘宝购物车页面 智能搜索框Ajax异步加载数据

如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区非常的活跃,许多朋友都在不同地方分享了很多优秀的插件.我在相关的网站上找过想实现类似功能的插件,但是没有找到.于是乎,自己动手丰衣足食.自己来搭建智能搜索框下拉列表.当然,如果有类似功能并且常维护Bug的插件,望留言交流. 源码地址: 淘宝购物车页面--PC端和移动端项目实战 首先需要先给大家打一根

Android-搭建简单服务端+ListView异步加载数据

Android-搭建简单服务端+ListView异步加载数据 2014年5月6日 本篇博文带给大家的是教大家如何在MyEclipse中搭建一个服务端,并通过手机端与其通信,异步加载数据. 笔者使用的是MyEclipse,各位也可以直接用Eclipse创建Java Web项目,谷歌提供的ADT Bundle是不能创建Web项目,读者可以下载Eclipse For JaveEE Developer这个IDE. 下面来介绍如何在MyEclipse创建一个Web项目,并部署到Tomcat当中,关于Tom

Loader异步加载数据

在android3.0开始,新增了Loader.  Loader加载数据的方式是异步的.Loader的特点: 1.适合于activity和fragment 2.提供了异步加载数据机制 3.监控数据源,当数据源发生改变时,会传递新结果 4.自动重连到最后一个数据加载器游标,不需要重新查询数据 使用情况:对数据源监控,比如contentProvider.     CursorLoader是AsyncTaskLoader的子类,AsyncTaskLoader会提供AsynTask去操作.故不会阻塞UI

iOS中异步加载数据效率更高

在开发中有得时候虽然也能从服务器返回来数据,但是我们要根据实际情况,加快数据的显示,所以我们使用异步加载数据. 下面我们看一下如何异步加载数据 dispatch_async(dispatch_get_global_queue(0, 0), ^{ //下载数据(这里写的是使用AFNetWorking请求的数据) dispatch_async(dispatch_get_main_queue(), ^{ //更新视图(这里写的是,要把数据显示出来) }); });