1.Web Service
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->[WebService(Namespace="http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
publicclassTreeService:System.Web.Services.WebService
{
[WebMethod]
publicList<TreeNode>GetTree()
{
List<TreeNode>list=newList<TreeNode>();
for(inti=1;i<=4;++i)
{
TreeNodeparent=newTreeNode();
parent.id=i;
parent.text="节点"+i;
parent.leaf=false;
parent.children=newList<TreeNode>();
for(intj=1;j<=2;++j)
{
TreeNodechild=newTreeNode();
child.id=i*10+j;
child.text="节点"+child.id;
child.leaf=true;
parent.children.Add(child);
}
list.Add(parent);
}
returnlist;
}
}
请注意上面代码中的粗体部分。如果不指定此属性,ScriptManager 就不会为我们生成此 Web Service 的客户端代理,我们也就无法在客户端调用此 Web Service 中的方法。下列代码为树的节点类:
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
-->publicclassTreeNode
{
publicintid{get;set;}
publicstringtext{get;set;}
publicboolleaf{get;set;}
publicList<TreeNode>children{get;set;}
}
需要注意的是,节点类的各属性名称必须与上面代码中完全相同,且必须全部是小写字母(数据类型可以不一样,如:您可以将 id 属性改为 String 型),否则 ExtJS 的 TreePanel 将无法识别。
2.客户端
<!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><formid="form1"runat="server">
<asp:ScriptManagerID="ScriptManager1"runat="server">
<Services>
<asp:ServiceReferencePath="Services/TreeService.asmx"/>
</Services>
</asp:ScriptManager>
<divid="tree"></div>
<scripttype="text/javascript">
Ext.onReady(function(){
//调用WebService
TreeService.GetTree(onSuccessed);
functiononSuccessed(result){
//result为WebService方法GetTree的JSON形式返回值
vartree=newExt.tree.TreePanel({
el:"tree",
animate:true,
title:"ExtJS树",
collapsible:true,
enableDD:true,
enableDrag:true,
rootVisible:true,
autoScroll:true,
autoHeight:true,
width:150,
lines:true,
root:newExt.tree.AsyncTreeNode({
id:"root",
text:"根节点",
expanded:true,
leaf:false,
children:result//将从WebService取到的所有节点绑定到根节点下。
})
});
tree.render();
}
});
</script>
</form>
在客户端,我们首先调用 Web Service 的 GetTree 方法获取节点列表,然后创建 TreePanel
控件,并生成“根节点”。由于使用 Web Service 客户端代理与 Web Service 交互时发送和接收的数据均为 JSON
形式(可参考《ASP.NET AJAX 中在客户端用 WebRequest 调用 Web Service》一文),因此,我们从 GetTree 方法取得的数据必然也是 JSON 形式。于是我们就可以将返回的数据直接送给 TreePanel。在上面代码中,我们将返回的节点数据绑定到根节点的“children”属性上。
程序的运行截图如下:
分享到:
相关推荐
ExtJs的.Net安装包(类似asp.net ajax安装) 安装后,添加一个安装解压包里的那个.dll文件,到工具箱,类似asp.net ajax的控件添加一样,使用时候可以直接去拖放控件……
Ext.NET是基于.NET Framework 3.5的一套支持ASP.NET AJAX的Web控件,它基于跨浏览器的ExtJS 库开发而来并简化了开发步骤,包含有丰富的Ajax运用。 Ext.NET是开源的。由于Ext.NET基于ExtJS的缘故,所以不可避免会有...
ExtJS ASP.NET实现真实的进度条显示服务器端长时间操作
ASP.NET+Extjs
Extjs3.2.0+asp.net动态Tree(附数据库)
一个不错的Extjs + ASP.net 后台管理框架,适用编写后台的朋友们, 含源码,后台菜单导航结合xml,数据源为xml文件。这是本人网上找的,稍作修改过,下载了的朋友可自行修改内容。
ASP.NET使用extjs的案例 ASP.NET extjs
ExtAspNet - 基于 ExtJS 的专业 ASP.NET 2.0 控件库,拥有完善的 AJAX 支持和丰富的界面效果 ExtAspNet 是一组基于 ExtJS 的专业 ASP.NET 2.0 控件库,拥有完善的 AJAX 支持和丰富的界面效果。 ExtAspNet 是为了...
Demo演示了如何在ASP.NET MVC4上使用extjs添加控件
原Extjs4.2似乎不支持Send数据时转JSON,资源里的修改Ext-all.js文件,添加参数extraParams:{wt:"json"}send时会转Json数据提交。 解决“无效的 JSON 基元”的问题
Extjs3.1.1官方实例Asp.net版,采用VS2008+Sql2005. 用到了两个数据库,其中的hotel数据库是我的《ASP.NET+Ext+JS+简单三层应用实例讲解源码.rar》资源中的数据库。
在ASP.NET mvc模式下使用Extjs搭建的框架页面代码
一个通用的后台管理页面,后台语言是asp.net,前端是extjs,希望能帮助到大家。
-采用和Asp.Net Ajax类似的处理方式,需要在配置文件Web.config增加一个httpModules。 -现在支持Response.Redirect,你可以选择Response.Redirect或者ExtAspNet.PageContext.Redirect重定向页面,两者效果一样。 -...
ExtJs、ASP.net运用Linq to SQL与SQL储存过程交互
动态加载树Extjs + asp.net 对我的启发很大,共享一下
Extjs4新推出的MVC模式 研究了几天终于弄明白怎么回事了,写了个例子, 可以实现增删改查, 分步加载controller
解压文件 Asp.Net_VS2010_ExtJsDemo.zip夹后 会有以下3个文件夹: 00 ExtJs.Doc 01 ExtJs.SourceCode 02 ExtJs.Librariy 00 Extjs.Doc里包含如下个文件: ExtJs.CreateDB.sql 数据库创建脚本,为了兼容低版本的朋友...
在asp.net下实现了extjs的完整实例
这个实例是在ASP.NET环境下运行,如果要修改方案需要用到VS2008,本实例结合ExtJs与WCF交互生成WEBTree目录树结构,正在研究此方面的朋友不失为一个好资料。