ExtJs与WCF交互:生成树
时间:2022-04-23
本文章向大家介绍ExtJs与WCF交互:生成树,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
上文做了下Ajax与WCF进行json交互的简单介绍,本文阐述一个具体的实际应用:ExtJs与WCF交互,生成树.也很简单.先看看最终的效果吧:
第一步: 创建一个.net framework 3.5的网站项目ExtJsTreeWcf
第二步: 在网站项目中创建一个启用了Ajax的WCF服务WcfTreeService.svc,创建好之后,对该服务做如下的更改:
1)在WcfTreeService.svc中增加Factory="System.ServiceModel.Activation.WebServiceHostFactory",打开WcfTreeService.Svchtml编辑器的方法如下:
添加Factory之后的html为
2)去除web.config中的<enableWebScript/>
第三步:在WcfTreeService.svc修改代码为:
[DataContract]
public class treenode
{
[DataMember]
public string id;
[DataMember]
public string text;
[DataMember]
public List<treenode> children = new List<treenode>();
[DataMember]
public string cls;
[DataMember]
public bool leaf;
}
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class WcfTreeService
{
// 添加 [WebGet] 属性以使用 HTTP GET
[OperationContract]
[WebInvoke(ResponseFormat=WebMessageFormat.Json)]
public treenode[] GetTree()
{
// 在此处添加操作实现
treenode t = new treenode();
t.id = "noe1";
t.text = "节点1";
t.cls = "folder";
treenode t0 = new treenode();
t0.id = "noe1_0";
t0.text = "节点1_0";
t0.cls = "folder";
t0.leaf = true;
t.children.Add(t0);
treenode t1 = new treenode();
t1.cls = "folder";
t1.id = "000";
t1.text = "节点1";
treenode t2 = new treenode();
t2.id = "noe1_1";
t2.text = "节点1_1";
t2.cls = "folder";
t2.leaf = true;
t1.children.Add(t2);
List<treenode> nodes = new List<treenode>();
nodes.Add(t);
nodes.Add(t1);
return nodes.ToArray();
}
// 在此处添加更多操作并使用 [OperationContract] 标记它们
}
}
其中treenode是数据契约,而WcfTreeService是服务契约,服务操作GetTree返回Json编码格式数据
第四步:拷贝extjs的脚本资源拷贝到项目中的js目录,然后在default.aspx中添加对extjs脚本的引用:
<link rel="stylesheet" type="text/css" href="js/ext2.1/resources/css/ext-all.css">
<script type="text/javascript" src="js/ext2.1/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="js/ext2.1/ext-all.js"></script>
第五步:在default.aspx增加如下的页面元素:
<h2>ExtJs与WCF交互-树</h2>
<div id="tree-div">
</div>
在<head></head>中添加如下脚本:
<script type="text/javascript">
Ext.onReady(function() {
var Tree = Ext.tree;
var tree = new Tree.TreePanel( {
rootVisible: false,
el : 'tree-div',//目标div容器
width: 175,
height:200,
autoScroll : true,
animate : true,
enableDD : true,
loader : new Tree.TreeLoader( {
dataUrl : 'WcfTreeService.svc/GetTree'
})
});
var root = new Tree.AsyncTreeNode( {
text : '根结点',
draggable : false,
id : '-100'
});
tree.setRootNode(root);
tree.render();
root.expand();
});
</script>
浏览页面default.aspx便出现文章开头的页面效果
利用httpwacth察看WcfTreeService.svc/GetTree的输出如下:
[{"children":[{"children":[],"cls":"folder","id":"noe1_0","leaf":true,"text":"节点1_0"}],"cls":"folder","id":"noe1","leaf":false,"text":"节点1"},{"children":[{"children":[],"cls":"folder","id":"noe1_1","leaf":true,"text":"节点1_1"}],"cls":"folder","id":"000","leaf":false,"text":"节点1"}]
程序示例项目: /Files/jillzhang/ExtJsTreeWcf.rar
- Spark Structured Streaming的高效处理-RunOnceTrigger
- Spark度量系统相关讲解
- Spark Structured Streaming高级特性
- Table API&SQL的基本概念及使用介绍
- 使用Linq to Sql 创建数据库和表
- Flink DataSet编程指南-demo演示及注意事项
- 解决 wcf HTTP 无法注册 另一应用程序正在使用 TCP 端口 80
- 构建Flink工程及demo演示
- F-Stack之kqueue封装为epoll介绍
- wcf http 返回图片
- F-Stack与Seastar对比
- Flink DataStream编程指南及使用注意事项。
- sqlserver 行转列
- FreeBSD下的工具(sysctl、netstat等)如何移植到F-Stack
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ceph 分布式存储-文件存储(CephFS)搭建
- 模拟 GROUP_CONCAT() 函数
- three.js 数学方法之Box3
- Redis Cluster服务平台化之路
- ceph分布式存储-对象存储(RGW)搭建
- 【PostgreSQL 架构】PostgreSQL 11和即时编译查询
- PG数量的预估
- ceph分布式存储-用户管理
- ceph分布式存储-检查集群健康状态
- ceph分布式存储-常见MON故障处理
- ceph分布式存储-常见OSD故障处理.md
- ceph分布式存储-常见 PG 故障处理
- ceph分布式存储-全局Ceph节点宕机处理
- ceph分布式存储-单个Ceph节点宕机处理
- CEPH MDS锁实现介绍