• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET MVC异步获取和刷新ExtJS6 TreeStore

ASP.NET MVC异步获取和刷新ExtJS6 TreeStore

作者:赵轶东 字体:[增加 减小] 来源:互联网 时间:2017-05-11

赵轶东通过本文主要向大家介绍了asp net mvc,asp net mvc 4,asp net mvc 5,精通asp.net mvc 5,精通asp.net mvc 4等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

从数据库获取构造树结构是ExtJS TreePanel的核心技术,常用方法是TreeStroe里配置proxy,这种方式的root成了一个不受控制的节点。

TreeStroe的root实际是一个层叠json数据,大部分情况是直接写一些简单数据,但在实际应用中必定是要从数据库读取的。我的方法是先用Ext.Ajax.request获取root数据形成TreeStroe。定义一个全局的TreeStroe名字是mTreeStore,用Ext.Ajax.request获得root数据。TreeStoreRefresh函数与此类似,将mTreeStore的root换为新值。TreePanel的rootVisible属性必须为true,增加一个节点单击事件显示节点的信息。

var mTreeStore = null;
Ext.Ajax.request({
  async: false,
  url: '/api/BasicData_API/GetBasicTablesTreeSource',
  method: 'get',
  success: function (response, options)
  {
   var TreeRoot = Ext.decode(response.responseText);
   mTreeStore = Ext.create('Ext.data.TreeStore',
   {
    root: TreeRoot
   });
  },
  failure: function (response, options)
  {
   //var responseArray = Ext.decode(response.responseText);
   Ext.Msg.alert('服务器错误', '数据处理错误原因:\n\r' + response.responseText);
  }
});

function TreeStoreRefresh()
{
 Ext.Ajax.request({
  async: false,
  url: '/api/BasicData_API/GetBasicTablesTreeSource',
  method: 'get',
  success: function (response, options)
  {
   var TreeRoot = Ext.decode(response.responseText);
   if (mTreeStore != null)
   {
    mTreeStore.setRoot(TreeRoot);
   }
  },
  failure: function (response, options)
  {
   //var responseArray = Ext.decode(response.responseText);
   Ext.Msg.alert('服务器错误', '数据处理错误原因:\n\r' + response.responseText);
  }
 });
}

Ext.define('TreeToolbarCls', {
 extend: 'Ext.toolbar.Toolbar',
 padding:'0 0 0 0',
 items: [{
  text: '刷新',
  iconCls: 'refresh',
  handler: TreeStoreRefresh,
  height: 30,
  width: 65
 }]
});

Ext.define('U1TreeCls',
{
 extend: 'Ext.tree.Panel',
 xtype: 'U1Tree_xtype',
 //title: '基础数据字典',
 rootVisible: true,
 width: 300,
 store: mTreeStore,
 scrollable: true,
 tbar:Ext.create('TreeToolbarCls'),
 listeners:
 {
  itemclick: NodeClick
 }
});

function NodeClick(node, record, item, index, e, eOpts)
{
 if (typeof (record.data) == "undefined")
 {
  return;
 }
 var message = Ext.String.format('Level={0}<br/>state={1}', record.data.Level, record.data.state);
 Ext.Msg.alert("节点信息", message);
}
</div>

下面是后台C#代码

定义一个TreeNode类,包含TreePanel节点固有的一些属性,也可以任意扩充,利用这个可以自定义许多附加数据,如我在里面定义Level表示节点的级别。

 [Authorize]
 [RoutePrefix("api/BasicData_API")]
 public class BasicData_APIController : ApiController
 {
  [Route("GetBasicTablesTreeSource")]
  public HttpResponseMessage GetBasicTablesTreeSource(string condition = null)
  {
   List<TreeNode> lstF = new List<TreeNode>();
   ZydAdonet z = ZydAdonet.Instance();
   string s1 = "select TableName,title from BaseDataTables order by TableName";
   string sqltext = s1;
   DataTable dt1;
   string ErrMes;
   z.Sql2DTReadOnly(s1, out dt1, null, out ErrMes);
   TreeNode tnd;
   foreach (DataRow drx in dt1.Rows)
   {
    tnd = new TreeNode
    {
     id = drx["TableName"].ToString(),
     text = drx["title"].ToString(),
     Level = 1,
     iconCls = "table_6",
     state = drx["TableName"].ToString() + " OK",
     leaf = true
    };
    lstF.Add(tnd);
   }
   TreeNode root = new TreeNode
   {
    text = "基础数据字典",
    expanded = false,
    iconCls = "folder_close",
    Level = 0,
    state = "RootOfTree",
    leaf = true
   };
   if (lstF.Count > 0)
   {
    root.expanded = true;
    root.leaf = false;
    root.iconCls = "folder_open";
    root.children = lstF;
   }

   string JsonStr;
   JsonStr = JsonConvert.SerializeObject(root);
   HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK, "value");
   response.Content = new StringContent(JsonStr, Encoding.GetEncoding("UTF-8"), "application/json");
   response.Headers.CacheControl = new CacheControlHeaderValue()
   {
    MaxAge = TimeSpan.FromMinutes(10)
   };
   return response;
  }
 }

 internal class TreeNode
 {
  public string id { get; set; }
  public string text { get; set; }
  public string iconCls { get; set; }
  public string state { get; set; }
  public bool leaf { get; set; }
  public int Level { get; set; }
  public bool expanded { get; set; }
  public List<TreeNode> children { get; set; }
 }

</div>

在NodeClick函数中断可以监视到更多的信息:

最后的运行效果:

然后更改数据表里的数据,点“刷新”就实现了TreePanel节点的刷新。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解ASP.NET MVC 常用扩展点:过滤器、模型绑定
  • ASP.NET MVC从视图传参到控制器的几种形式
  • ASP.NET MVC 4 中的JSON数据交互的方法
  • ASP.NET MVC制作404跳转实例(非302和200)
  • 详解ASP.NET MVC 利用Razor引擎生成静态页
  • 详解ASP.NET MVC 解析模板生成静态页(RazorEngine)
  • ASP.NET MVC4 利用uploadify.js多文件上传
  • ASP.NET mvc4中的过滤器的使用
  • Asp.net MVC下使用Bundle合并、压缩js与css文件详解
  • 详解Asp.Net MVC——控制器与动作(Controller And Action)

相关文章

  • 2017-05-11C# 邮件地址是否合法的验证
  • 2017-05-11动态向页面添加控件和使用正则表达式的代码
  • 2017-05-11ASP.NET三层架构详解 如何实现三层架构
  • 2017-05-11WebForm获取checkbox选中的值(几个简单的示例)
  • 2017-05-11浅谈c#设计模式之单一原则
  • 2017-05-11asp.net中生成饼状与柱状图实例
  • 2017-05-11新手入门:C++下的引用类型
  • 2017-05-11ASP.NET C#生成下拉列表树实现代码
  • 2017-05-11.net 单点登录的设计与实践
  • 2017-05-11ASP.NET 广告控件AdRotator的使用方法与实例

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 解决asp.net ajax sys未定义的解决方法
    • ASP.NET MVC5网站开发咨询管理的架构(十一)
    • asp.net中执行存储数据操作时数据被自动截取的一种情况
    • Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)
    • ADO.NET中的五个主要对象的详细介绍与应用
    • ASP.NET MVC4入门教程(八):给数据模型添加校验器
    • C#页码导航显示及算法实现代码
    • 解析微信支付的实现方法(.NET版)
    • .NET Visual Studio 代码性能分析工具
    • asp.net中Timer无刷新定时器的实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有