Extjs动态加载树,首先在数据库里面设计存放树信息的表
复制代码 代码如下:
USE [KimiExtjs]
GO
/****** 对象: Table [dbo].[Trees] 脚本日期: 04/08/2010 22:12:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Trees](
[Tid] [varchar](40) COLLATE Chinese_PRC_CI_AS NOT NULL,---节点ID 主键 Guid
[ParentId] [varchar](40) COLLATE Chinese_PRC_CI_AS NULL,---父亲节点ID 0表示为根目录
[ContentText] [varchar](800) COLLATE Chinese_PRC_CI_AS NULL,---节点现实内容
[StrHref] [varchar](800) COLLATE Chinese_PRC_CI_AS NULL,---节点链接地址
[hrefTarget] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,---Target
CONSTRAINT [PK_Trees] PRIMARY KEY CLUSTERED
(
[Tid] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
构建完数据表后,我们将开始应运程序的开发,首先页面的设计,html代码如下:
复制代码 代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Main.aspx.cs" Inherits="Com.KimiYang.Web.Main" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>无标题页</title>
<link href="css/css/StyleSheet.css" rel="stylesheet" type="text/css" />
<link href="Extjs3.2.0/resources/css/ext-all.css" rel="stylesheet" type="text/css" />
<link href="Extjs3.2.0/resources/css/xtheme-gray.css" rel="stylesheet" type="text/css" />
<script src="Extjs3.2.0/adapter/ext/ext-base.js" type="text/javascript"></script>
<script src="Extjs3.2.0/ext-all.js" type="text/javascript"></script>
<script src="Extjs3.2.0/src/locale/ext-lang-zh_CN.js" type="text/javascript"></script>
<script src="JS/Main.js" type="text/javascript"></script>
<script src="JS/NowTime.js" type="text/javascript"></script>
<base target="_self" />
</head>
<body onload="getCurrentTime()">
<form id="form1" runat="server">
<div id="loading-mask" style=""></div>
<div id="loading">
<div class="loading-indicator"><img src="Extjs3.2.0/resources/images/vista/s.gif" width="32" height="32" style="margin-right:8px;" align="absmiddle"/>Loading...</div>
</div>
<div id="header"><h1>KimiYang</h1></div>
<div class="menu">
<span style="float: left">欢迎 <b>admin <span id="myTime"/></span></b>
</span>
<span id="aLoginOut" runat="server" style="float: right"><a onclick="if (!window.confirm('您确认要注消当前登录用户吗?')){return false;}"
href="#">注销</a></span>
</div>
<div id="north"></div>
<div id="west">
</div>
<div id="center">
</div>
<div id="west_content" style="height:300px; ">
</div>
</form>
</body>
</html>
js代码如下所示:
复制代码 代码如下:
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL="Extjs3.2.0/resources/images/default/s.gif";
var Tree = Ext.tree;
var tree = new Tree.TreePanel({
el:'west_content',//渲染到
useArrows:true,
autoHeight:true,
split:true,
lines:true,
autoScroll:true,
animate:true,
enableDD:true,
border:false,
containerScroll: true,
loader: new Tree.TreeLoader({
dataUrl:'ServletHandlers/GetTrees.ashx'
})
});
var root = new Tree.AsyncTreeNode({
text: 'KimiYang',
draggable:true,
id:'0'
});
tree.setRootNode(root);
tree.render();
root.expand();
var viewport = new Ext.Viewport({
layout:'border',
items:[{
region:'west',
id:'west',
title:'菜单导航',
split:true,
width: 200,
minSize: 200,
maxSize: 400,
collapsible: true,
margins:'60 0 2 2',
cmargins:'60 5 2 2',
layout:'fit',
layoutConfig:{ activeontop:true},
defaults: { bodyStyle: 'margin:0;padding:0;'},
items:
new Ext.TabPanel({
border:false,
activeTab:0,
tabPosition:'bottom',
items:[{
contentEl:'west_content',
title:'系统管理',
autoScroll:true,
bodyStyle:'padding:5px;'
},
{
title:'网上办公',
autoScroll:true,
bodyStyle:'padding:5px;'
}]
})
},{
region:'center',
el:'center',
deferredRender:false,
margins:'60 0 2 0',
html:'<iframe id="center-iframe" width="100%" height=100% name="main" frameborder="0" scrolling="auto" style="border:0px none; background-color:#BBBBBB; " ></iframe>',
autoScroll:true
},
{
region:'south',
margins:'0 0 0 2',
border:false,
html:'<div class="menu south">Copyright © 2009 浙江新昌 Kimi Yang All Rights Reserved</div>'
}
]
});
setTimeout(function(){
Ext.get('loading').remove();
Ext.get('loading-mask').fadeOut({remove:true});
}, 250)
});
C#代码如下图所示:
复制代码 代码如下:
using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
namespace Com.KimiYang.Web.ServletHandlers
{
/// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class GetTrees : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string strSql = "select Tid,ParentId,ContentText,StrHref,hrefTarget from Trees";
dbOperator db = new dbOperator();
DataTable dt = db.Execute(strSql);
string strResult = "[";
if (dt.Rows.Count > 0)
{
DataRow[] dr = dt.Select("ParentId='0'");
strResult = DtTreeToJson(dt, strResult, dr);
}
strResult += "]";
context.Response.ContentType = "text/plain";
context.Response.Write(strResult.ToString());
context.Response.End();
}
private static string DtTreeToJson(DataTable dt, string strResult, DataRow[] dr)
{
if (dr.Length > 0)
{
for (int i = 0; i < dr.Length; i++)
{
strResult += "{";
strResult += "text:'" + dr[i]["ContentText"] + "',";
strResult += "id:'" + dr[i]["Tid"] + "',";
DataRow[] drChild = dt.Select("ParentId='" + dr[i]["Tid"] + "'");
if (drChild.Length > 0)
{
strResult += "leaf:false,";
strResult += "children:[";
strResult = DtTreeToJson(dt, strResult, drChild);
strResult += "]";
}
else
{
strResult += "href:'" + dr[i]["StrHref"] + "',";
strResult += "hrefTarget:'" + dr[i]["hrefTarget"] + "',";
strResult += "leaf:true";
}
strResult += "}";
if (i != dr.Length - 1)
strResult += ",";
}
}
return strResult;
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
页面效果图:
源代码下载ExtjsTree.rar
相关推荐:
seo站长什么意思,站长工具 - seo综合查询 ,ai少女身材
ChatGPT3.5最新版:智能对话新纪元,带你进入AI的未来世界,ai苔藓生长
SEO赚钱:如何通过SEO技能在网络上实现财富自由,网站怎么建设推广平台
怎么用AI生成文章?全新写作方式的揭秘与应用指南
SEO模块:提升网站排名,驾驭数字营销未来,营口网站建设制作平台
ChatGPT4账号共享-让AI助力你的学习与工作,轻松提升效率,ai巨无霸
ChatGPT出现报错503?这些解决办法你必须知道!,粉墨ai说唱
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
SEO公司核心业务是什么?揭秘提升网站排名的奥秘,写作助手ai一键生成作文在线
SEO优化做什么的?揭秘SEO优化的核心价值与实战应用,ai做金色
SEO外链建设:提升网站排名的关键策略,ai偏执
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
seo追词是什么,seo词条 ,52580609AI
优方法-高效生活与工作的秘密武器,钻石营销推广方案
seo需要什么人员,seo需要什么技能 ,画大学ai
AI.生成重新定义创造力的新纪元
seo都有什么问题,seo都有什么问题和答案 ,ai凯旋公主下载
AI代谢文章:从灵感到成果的创作革命
seo软文用什么论坛,seo软文是什么意思 ,爱字幕的AI变脸不见了
ChatGPT出现错误503?你需要知道的解决方案和应对策略,ai拉伸字效
seo重点是什么,seo最重要的指标 ,ai网格怎么用
ChatGPTO1免费:突破智能聊天的极限,体验AI无限可能,糯米ai唱歌
SEO到底怎么做?揭秘从零到精通的完整SEO优化攻略,鸟瞰ai
什么是seo模型,seo模块总结 ,ai技术授课
GPT-3模型下载:开启智能时代的无限可能,ai走入
怎么看文章是不是AI生成的?揭秘背后的玄机与技巧
SEO自从上线后的演变与未来发展趋势,拼多多增加关键词排名
SEO文案:如何通过巧妙布局提升网站排名,吸引更多流量,娄底网站建设工作文案
ChatGPT的破解版:AI世界的新突破,ai无禁忌
ChatGPT目前,我无法查看或打开附件,但我依然能为你提供全面的帮助,苹果ai谷歌ai
ChatGPT付款银行卡被拒绝?解决方案全解析!,小发猫ai智能写作查重能过吗
ChatGPT界面看不到用户:隐秘的互动方式与智慧的背后,AI和UR
ChatGPTO1Pro模型:开启AI新纪元,免费应用带来无尽可能,苹果上的ai写作在哪里
“收录量为1”,打造数字化时代的独特竞争力,网站建设页面制作流程
AI软件不用登录,让你的工作更高效轻松,智能ai写作改稿怎么改
ChatGPT打不开了吗?如何快速解决常见问题,恢复顺畅体验!,ai13212511845
SEO注意事项:助力网站流量提升的关键策略,济宁快速seo优化价格
ChatGPT手机下载后打不开?可能是这些问题导致的,解决方法在这里!,孤城ai动画
二级泛站群,zblog二级泛站群 ,李宗盛ai
产品seo什么意思,产品seo标题是什么 ,ai模仿张宇
ChatGPT页面怎么拖不动?解决问题的终极指南,日韩AI换脸在线观看
SEO部:开启数字化营销新纪元的幕后英雄,株洲营销推广是什么公司
BingAdapter设置数据后没有显示数据?解决方案在这里!,ai中如何把图变形
SEO范例:如何通过优化提升网站流量,获取更多商机,广州抖音seo搜索广告
二次创作的魅力与潜力:创意无限的数字时代,天长外贸网站建设
SEO导航:助力网站提升流量与排名的必备工具,荣昌建筑网站建设
互联网资源的无限潜力:如何利用数字世界为个人和企业创造价值,信阳网站建设正规公司
用AI写的文章算原创吗?真相揭示,带你深度思考!
SEO可以帮助网站在搜索引擎中获得较高的排名-助力企业数字化转型的关键,赵立新AI换脸图片对比
SEO总结:如何通过优化提升网站排名与流量,关键词排名消失