西部数码阿里云虚拟主机node支持node吗

用C#与XML创建动态分层菜单-.NET教程,C#语言-虚拟主机资讯|虚拟主机动态
产品服务快速通道
----------------
==域名注册==
英文域名注册
中文域名注册
==网站推广==
==虚拟主机==
----------------
双线路虚拟主机
基本型虚拟主机
商用型虚拟主机
论坛型虚拟主机
功能型虚拟主机
Vip合租虚拟主机
虚拟主机性能对比
虚拟主机免费试用
机房速度测试
----------------
==租用托管==
服务器租用
----------------
==企业邮局==
购买企业邮局
----------------
==付款方式==
----------------
==联系我们==
您当前位置:->-> ->
用C#与XML创建动态分层菜单-.NET教程,C#语言
作者:网友供稿
  西部数码-全国虚拟主机10强!20余项管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:&
从在复杂的b2b交易中的交换数据到为应用程序提供配置文件结构,xml在许多方面大显身手!由于xml不断地获得软件的支持,我们完全能够预见:xml的应用将不断增加。本文就介绍这样一种应用程序,它使用xml创建类似于windows开始菜单的分层菜单系统,从而向终端用户提供更满意的web体验。
  这个应用程序将使用 c#、xml和服务器端microsoft .net框架,创建一个 dhtml 结构,ie4 或更高版本的浏览器可以操作它并在客户端动态显示。由于我们可以快速地访问服务器上的xml,并且xml能够描述层次之间的关系,因此它成为标记“父/子菜单”数据的一个最佳选择。
  (一个三层菜单系统,可点击放大)
  除了学习如何使用xml创建一个菜单应用程序外,我们还要介绍 .net框架的主要 xml 类,它们位于 system.xml 集合中。
什么是.net集合(assembly)
  要在 c# 文件中使用xml,就必须引用一个特定的名称空间。 .net平台中的一个名称空间是作为一个程序组件的组织系统使用的,它对于解决命名冲突很重要,这一点很象 xml中的 名称空间。这个基于 xml的菜单系统是用位于system.xml集合中的system.xml名称空间创建的。.net sdk 是这样定义集合的:一个集合就是一个类型和资源的汇集信息,这些类和资源一起使用,形成一个功能的逻辑单元,即一个“逻辑”dll。
  一个集合需要许多物理文件,如界面、类、资源文件等等,并且创建了关于文件如何一起工作的元数据。集合中还可能包含版本及安全信息。集合有许多好处,其中之一就是可以在asp.net应用程序中使用,而无须用regsvr32.exe向注册文件中增加一个类识别号(clsid)。这样以来,集合的升级操作与将适当的集合复制到一个asp.net 应用程序的bin 目录中一样简单。现在我们就来仔细看一看那些建立在system.xml名称空间和集合中的类。
  如果你以前使用过microsoft的 msxml3分解器,就会发现使用system.xml 集合中的类相当简单。这里的菜单应用程序只使用了这些主要集合类中的一部分:xmlnode、 xmldocument、 xmlnodelist、 xmlnamednodemap、 documentnavigator、 xmltextreader和 xmltextwriter。
  xmldocument、 xmlnodelist和xmlnode类用来创建传递给客户端浏览器的菜单应用程序的结构。用xmldocument类以一种安全线程(thread-safe)的方式从服务器上装载和分解本地或远程xml 文档。建立在一个字符串中的 xml标记也可以被装载或分解,从而在一个文档中创建、移动节点或取消节点的移动。xmlnodelist 类可以使我们列举一个节点的集合来访问一个特定属性,如名称、值或名称空间。最后,xmlnode类可以用来在xml文档中向一个用于检验的xmlnode 对象分配一个特定节点。
  xmlnamednodemap类用来列举建立在一个元素类型选择中的属性集合。 documentnavigator、 xmltextreader和xmltextwriter类提供与xml一起使用所需要的额外功能。要特别说明的是,documentnavigator可以用来执行xpath查询,它被包含在xslt转换中。xmltextreader类提供对xml节点的只向前(forward-only)、无缓存的访问,从而使xml节点对大型xml文档也同样生效。xmltextwriter类提供一个快速、只向前的指针模型,实现将 xml 内容写到一个流或一个文件中的目的。
  在菜单应用程序中使用的xml 文档相对来说是较小的,因此我们可以在服务器端使用文档对象模式(dom)来存取xml文档中的不同节点。当分解大型 xml文档时,就需要使用xmltextreader 类所含有的只向前模型。
  菜单应用程序使用了3个 xml 文档:menuitems.xml、menuitems2.xml 和menuitems3.xml,它们用于标记单独的菜单项目。xml的处理和操作由一个叫做xmlmenus.dll的集合完成,这个集合被服务器端的一个asp.net 文件createmenus.aspx所使用。在客户端的动态html (dhtml)内容使用了一个层叠格式表文件和一个javascript文件,这些文件联合在一起生成了本文开始部分的图示结果。
我们在list 1的代码显示了用来标记单独菜单项目的xml文档的一部分。文档中的主元素命名为menuitem,它可以包含一个名字和超级链接元素以及额外的menuitem 子元素。这种关系可以用来创建包含子菜单的菜单系统,就象windows的开始菜单一样。
  由于 xml已经标出了分层关系,因此就可以利用循环在不同元素之间行走:当使用xmldocument、xmlnode和xmlnodelist类创建子节点时,我们可以反复调用walktree() 函数以颠倒父/子关系。其它的类如 arraylist和 streamwriter用于将相关菜单归类到数组中,然后在适当时间将所生成的菜单结构写入一个文件中。
  xmlmenus集合的代码开始时要声明一个xmlhiermenu 名称空间,接下来要引用 system、 system.xml、 system.collections和system.io 名称空间:
  using system.
  using system.
  using system.
  在这部分代码之后要创建3个构造器。一个构造器不接收变量,只对变量进行初始化。下一个构造器接收一个图象文件的定制路径。最后一个构造器在不经常对xml菜单进行刷新的情况下,允许将由集合生成的输出存储到一个文件中。最后一个构造器所生成的文件可以被静态地包含在一个 asp.net文件中,而不是在各个web页面请求时随时地生成。
在构造器之后,开始定义 createmenu()方法,具体请看list 2中的代码。
这个方法负责进行xml文档的装载和解析,找到根节点,然后在根的子节点之间循环。如果发现一个子节点本身还有子节点,就调用walktree() 方法,并且把这些子节点都传递到其中。如果这些子节点还有子节点,就再次调用 walktree()。这个过程循环进行直到不再发现增加的子节点。walktree()方法的代码可以参看list 3。
  在调用 walktree()方法并且对不同的节点进行分析的同时,要解析 menuitem节点,将来自其超级链接和名字节点的数据放在数组列表中。对整个 xml文档都进行解析之后,数组列表的内容就被传递回调用的asp.net的页面,然后使用response对象写出信息。从这时起,客户端的 javascript代码就开始控制dhtml 菜单了。
  在服务器端,我们使用一个 asp.net页面来开始菜单的创建过程。这个页面输入了与集合相关联的名称空间xmlhiermenu:
  &%@ page language=&c#& %&
  &%@ import namespace=&xmlhiermenu& %&
然后,将样式表文件和 javascript文件包含在文件的 代码区中。最后,在 asp.net 页面底部的代码用来引用上面提到的createmenu() 方法与walktree()方法,请看list 4。
  在asp.net 页面中所找到的c# 代码只是建立了到不同的xml文档的路径,并且对 xmlmenu 类进行了例示。一旦对这个类进行了例示,就对 createmenu()方法进行调用。这个方法接收菜单名以及到这个菜单的xml文档的文件路径。在本例中,要创建3个名为menu1、 menu2和 menu3 的菜单,然后在一个asp.net页面中使用。这个应用程序在一个给定页面中可以支持无穷多的菜单,但是我们建议菜单数目不要过多,因为每增加一个菜单,发送到客户端的文件规模都会增加。
编译 c# 文件
  现在我们已经看到了菜单应用程序的结构,接下来讨论一下使用哪些开关可以将c# 文件编译到一个集合中。在 .net sdk 文档中,我们可以查询到一个所有编译开关的完整列表。
  要想正确地编译 c# 文件以使它能用于一个asp.net 页面中,编译器就必须要知道包含了system.xml 集合。这可以通过使用 /r 开关并在后面加上到集合的完整路径来完成。由于将要创建的 dll是一个库,因此就必须指定 /t开关,这样编译器就不再寻找一个静态的 main() 方法。最后一个需要的开关是 /out ,它将告诉编译器输出的文件名是什么,以及将其放在哪里。
  所有对 c# 编译器的调用都以 csc (c# 编译器)开始,然后指定适当的开关。编译器语法的最后一部分包括到已创建的 .cs 文件的路径。请看下面的编译文件的完整语法格式:
  c:\&csc /r:system.xml.dll /
  t:library /out:d:\inetpub\wwwroot\
  xml\bin\xmlmenus.dll d:\inetpub\
  wwwroot\xml\menus\xmlmenus.cs
  这行命令告诉编译器包含 system.xml 集合、将文件作为一个库进行编译、将文件输出到 bin目录中、输入文件命名为xmlmenus.cs,输出文件名叫xmlmenus.dll。当输入回车键后,.cs文件就进行编译,生成的 dll将被放置在适当的文件夹中。
  本文通过讲解一个应用程序的思路及实现代码,使我们对于使用microsoft .net平台中的一些集合和类有了一个很好的了解。随着进一步的学习,我们将看到,还会有其它一些集合和类可以以多种方式与本地和远程xml文档一起工作。
文章整理:西部数码--专业提供、服务
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
文章页数:&
??????????
??????????
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
版权所有 西部数码()
CopyRight (c) 2002~ all right reserved.
公司地址:四川省成都市金牛区一环路北一段99号环球广场24楼 邮编:610031
电话总机:028-08 38
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028- 财务QQ:
售前咨询QQ:2182518
售后服务QQ:利用treeview实现树形列表_asp.net技巧-虚拟主机资讯|虚拟主机动态
产品服务快速通道
----------------
==域名注册==
英文域名注册
中文域名注册
==网站推广==
==虚拟主机==
----------------
双线路虚拟主机
基本型虚拟主机
商用型虚拟主机
论坛型虚拟主机
功能型虚拟主机
Vip合租虚拟主机
虚拟主机性能对比
虚拟主机免费试用
机房速度测试
----------------
==租用托管==
服务器租用
----------------
==企业邮局==
购买企业邮局
----------------
==付款方式==
----------------
==联系我们==
您当前位置:->-> ->
利用treeview实现树形列表_asp.net技巧
作者:网友供稿
  西部数码-全国虚拟主机10强!20余项管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:&
  以前,在WEB页面中如果想使用树形控件的话,往往会有些麻烦,有时甚至要自己写代码来达到用树形列表显示数据的目的。在asp.net中,我们可以很方便地使用由微软提供的Internet Exploer Web Controls控件来实现树形列表。在微软提供的这套Internet Exploere Web Controls控件集合中,包括有MultiPage,TabStrip,TOOLbar,Treeview控件。在这篇文章中,我们来看在ASP.net中如何使用Treeview控件和XML来实现树形列表。
  微软的这套控件可以在中下载,下载后运行setup安装就可以了。现在我们来试下用Treeview控件做个简单的例子。
  在vs.net中新建一个WEB工程,之后在工具箱中,鼠标右键弹出的菜单中,选择“添加新项”,在自定义工具箱中,选择TREEVIEW控件(注意选择的是命名空间为Microsoft Internet Exploere web control的命名空间),按确定后,就可以在工具箱中出现Treeview控件了。
  接着,将treeview控件拖拉到窗体中,切换到HTML视图,这时会发现有如下代码:
&%@ Register TagPrefix="ie" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %&
  当然,你可以改变TagPrefix的标记值,比如,改为FooBar,那么以后在引用Treeview控件时,就用如下方式引用:
&FooBar:TreeView runat="server" ... /&&
  现在,我们可以通过点选Treeview控件的属性框中的nodes属性,来为该树添加各类结点了,由于比较简单,这里不详细讲述。下面是添加完各类结点后的代码:
&form runat="server"& &ie:TreeView runat="server"&  &ie:TreeNode Text="Isaac Gibson" Expanded="True"&  &ie:TreeNode Text="Birth - 1766" /&  &ie:TreeNode Text="Death - 1827" /&  &ie:TreeNode Text="Spouse"&  &ie:TreeNode Text="Ritty Gibson" /&  &ie:TreeNode Text="Married 1789" /&  &ie:TreeNode Text="Children"&  &ie:TreeNode Text="Phoebe Gibson"&  &ie:TreeNode Text="Birth - 1790" /&  &ie:TreeNode Text="Death - 1884" /&  &ie:TreeNode Text="Spouse"&   &ie:TreeNode Text="James K. Mason" /&   &ie:TreeNode Text="Married 1819" /&  &/ie:TreeNode& &/ie:TreeNode& &ie:TreeNode Text="John Gibson"&  &ie:TreeNode Text="Birth - 1793" /&  &ie:TreeNode Text="Death - 1802" /&  。。。。。。 &/ie:TreeNode&&/ie:TreeView&&/form&
  其中我们特别注意一下Expanded="True"中的Expanded属性,该属性当被设置为true时,则当页面被装载时,树形控件被全部展开。
  以上是在设计时,静态添加数据到树形控件的方法。而由于XML实质上也是以树形结构来表示数据的结构,因此,就可以通过使用XML文件绑定到树形控件的方法,来动态加载数据到控件中去,其中有两种方法可以实现:
  1)另外写一个符合TREEVIEW格式的XML文件
  2)通过XSL将XML进行转换。
  先来看下第一种方法,建一个XML文件作为例子,命名为aspnetbooks.xml:
&?xml version="1.0" encoding="UTF-8"?& &books&  &book price="34.95"&  &title&Teach Yourself Active Server Pages 3.0 in 21 Days&/title&  &authors&   &author&Mitchell&/author&   &author&Atkinson&/author&  &/authors&  &year&1999&/year&  &/book&
 &book price="29.95"&  &title&Designing Active Server Pages&/title&  &authors&   &author&Mitchell&/author&  &/authors&  &year&2000&/year& &/book&
 &book price="34.95"&  &title&ASP.NET: Tips, Tutorials, and Code&/title&  &authors&   &author&Mitchell&/author&   &author&Mack&/author&   &author&Walther&/author&   &author&Seven&/author&   &author&Anders&/author&   &author&Nathan&/author&   &author&Wahlin&/author&  &/authors&  &year&2001&/year& &/book&
 &book price="24.95"&  &title&ASP Unleashed&/title&  &authors&   &author&Walther&/author&   &/authors&  &year&1998&/year& &/book&&/books&
  如果我们使用第一种方法,必须对XML进行重写,用以下的形式表示,才能绑定到树形控件中去。
&TREENODES& &treenode text="..."&  &treenode text="..."&  &/treenode&
 &treenode text="..." /&
 ...&/TREENODES&
  就是说,根结点必须是treenodes(大小写都无所谓),每个子结点必须以&treenode&的形式排列。于是,我们对原来的XML文件改写为如下的形式:
&?xml version="1.0" encoding="UTF-8"?& &TREENODES&  &treenode text="Teach Yourself Active Server_u80 ?ages 3.0 in 21 Days"&   &treenode text="Price - $34.95" /&   &treenode text="Authors"&    &treenode text="Mitchell" /&   &treenode text="Atkinson" /&  &/treenode&  &treenode text="Year Published - 2000" /&  &/treenode&
  &treenode text="Designing Active Server Pages"&   &treenode text="Price - $29.95" /&   &treenode text="Authors"&    &treenode text="Mitchell" /&  &/treenode&  &treenode text="Year Published - 2000" /&  &/treenode&〈/TREENODES&
  增加以下代码:
&form runat="server"&&ie:TreeView runat="server"&&ie:TreeNode runat="server" Text="ASP.NET Books" Expanded="True" TreeNodeSrc="aspnetbooks.xml" /& &/ie:TreeView&&/form&
  这样就将该xml文件绑定到树形控件中去了,运行后可以看到结果:
ASP.NET Books Teach Yourself Active Server Pages 3.0 in 21 DaysDesigning Active Server PagesASP.NET: Tips, Tutorials, and CodeProgramming ASP.NET
  可以看到,使用第一种方法的确比较麻烦,不能对XML的结点进行筛选或者其他操作。而如果使用第二种方法的XSL,则可以根据需要随时对原来的XML进行格式的控制,十分方便。
  在使用XSL时,可以用如下的方法对树形控件进行绑定:
&form runat="server"& &ie:TreeView runat="server"&  &ie:TreeNode runat="server" Text="ASP.NET Books" Expanded="True"     TreeNodeSrc="aspnetbooks.xml"     TreeNodeXsltSrc="aspbooks.xsl" /&  &/ie:TreeView&&/form&
  其中,treenodexsltsrc的属性中指定要转换的XSL文件,我们设计的XSL文件如下:
&xsl:stylesheet xmlns:xsl="" version=1.0& &xsl:template match="/books"& &TREENODES&  &xsl:for-each select="book"&  &treenode&   &xsl:attribute name="text"&    &xsl:value-of select="title" /&   &/xsl:attribute&
  &treenode&   &xsl:attribute name="text"&    Price - $&xsl:value-of select="@price" /&   &/xsl:attribute&  &/treenode&
  &treenode text="Authors"&   &xsl:for-each select="authors/author"&   &treenode&    &xsl:attribute name="text"&     &xsl:value-of select="text()" /&    &/xsl:attribute&   &/treenode&  &/xsl:for-each& &/treenode&
 &treenode&  &xsl:attribute name="text"&     Year Published - &xsl:value-of select="year" /&  &/xsl:attribute& &/treenode&&/treenode&&/xsl:for-each&&/TREENODES&&/xsl:template&&/xsl:stylesheet&
  在上面的XSL中,我们通过形如
&xsl:attribute name="text"&&xsl:value-of select="title" /&&/xsl:attribute&
  的属性设置,提取XML文件中每个结点的值,将其赋值给予treenode的text属性中。当然,也可以在XSL中使用XPATH等设置要显示的结点。
  运行后,结果同样与用第一种方法的一样,能正确显示树形控件,而且灵活性比较高。
文章整理:西部数码--专业提供、服务
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
文章页数:&
??????????
??????????
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
版权所有 西部数码()
CopyRight (c) 2002~ all right reserved.
公司地址:四川省成都市金牛区一环路北一段99号环球广场24楼 邮编:610031
电话总机:028-08 38
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028- 财务QQ:
售前咨询QQ:2182518
售后服务QQ:在此计算机上记住密码
合作网站账号登录
我的购物车
件商品,共计
欢迎您来到禾城数码,开始互联网之旅!
云建站类型
个域名在禾城数码注册
本站( )在线支付实时开通、7×24小时售后服务(电话、有问必答提交)( 3-10分钟快速应答 )
禾城数码为您引航互联网
多年行业经验,禾城数码始终坚持以用户需求为导向,提供安全、稳定、快速的产品和服务!
多线路五星级数据中心,多年行业经验,国内虚拟主机领导品牌,更稳定、更快速,已成为30万家企业级用户首选!
外贸企业建站服务虚拟主机,无须备案,方便快捷,即买即用,适合个人、电商、论坛、博客外贸企业等建站客户。
CLOUD HOST
技术成熟的云服务器服务商,基于集群和分布式存储,弹性扩展、安全稳定、简单易用,提供电商云、企业云、网站云等多种云服务器产品。
LATEST OFFERS
域名注册、域名交易、虚拟主机、云服务器等,我们均能以较优惠的价格为您提供较优质的产品服务。
网页空间:1G+赠送200M
每月流量:18G
数据库:SQL Server 2008(50M)
机房线路:国内BGP/双线机房
网页空间:2G+赠送400M
每月流量:40G
数据库:SQL ServerM)
机房线路:国内BGP/多线机房
LinuxA 300MB
网页空间:300M+赠送60M
每月流量:30G
数据库:MySQL5.1/5.6(与WEB共享)
机房线路:国内电信
香港体验型 150M
网页空间:150M+赠送30M
每月流量:5G
数据库:MySQL5(50M)
机房线路:港台机房
香港入门型 300M
网页空间:300M+赠送60M
每月流量:10G
数据库:SQL Server 2008(50M)
机房线路:港台机房
美国入门型 200M
网页空间:200M+赠送40M
每月流量:10G
数据库:MySQL5(50M)
机房线路:美国机房
入门型云服务器
TnterXeom1核
50G(分布式集群云存储)
标准型云服务器
IntelXeon2核
80G(分布式集群云存储)
商务型云服务器
TnterXeom4核
100G(分布式集群云存储)
禾城数码最新活动
Latest Activity
禾城数码是中国技术成熟的互联网基础服务提供商西部数码分销商,ICANN&CNNIC双认证域名注册机构,累计超过5万个网站在禾城数码平台稳定运行,10万个域名通过禾城数码平台注册和管理,数万个用户通过禾城数码获得良好的后续收益,禾城数码一直在努力为您创建一个安全、快捷、稳定的一站式互联网基础服务平台!
2009年开始把脉互联网,专注精品服务
全球技术成熟的新顶级域名注册服务机构
国内IDC主机服务领导品牌
多机房高速骨干网的云计算平台
全方位的域名注册金融生态系统
专业团队7*24小时服务
禾城数码多年,与广大客户/合作伙伴一起成长!
您的业务还没开展?马上&
五星级域名注册服务机构
主机服务全国三强
7x24小时客服支持全国统一热线:400-028-
VPS SERVER
CLOUD HOST
欢迎光临西部数码,我们将竭诚为您提供最优质的服务!
asp.net 2.0 权限树的控制
做权限的时候,主要实现如下功能
1、该节点可以访问,则他的父节点也必能访问;  2、该节点可以访问,则他的子节点也都能访问;  3、该节点不可访问,则他的子节点也不能访问。
使用带CheckBox的数型结构能得到很好的用户体验,可是编程的难度也是有点增加,如果全部有服务端来完成,那点下刷下,肯定不行,只能使用javascript,javascript调试的时候郁闷的很,一个字类,还有郁闷的递归,麻烦我以前是使用以下该方法&script language="javascript"&&!--
//初始化节点
initchecknode(document.all("tvItemClientID").value,document.all("checked").value)
//初始化选中节点
function initchecknode(tree,tvvalue)
//获得需要初始化选择状态的节点的字符串.
var selectedNodes =
var arrayNodes = new Array();
arrayNodes = selectedNodes.split(",");
var AllRootNode=new Array();
AllRootNode=document.getElementById(tree).getChildren();
//初始化选择的节点
findAndCheckedNodes(AllRootNode,arrayNodes);
//根据已选择的节点的字符串初始化选择的节点
function findAndCheckedNodes(NodeArray,nodeDatas)
//alert(NodeArray.length);
if(parseInt(NodeArray.length)==0)
for(var i=0;i&parseInt(NodeArray.length);i
var cNode,nodeD
cNode=NodeArray[i];
////如果该节点在nodeDatas里则初始化checked =
nodeData = cNode.getAttribute("NodeData");
for(var j=0;j&nodeDatas.j
if(nodeDatas[j] == nodeData)
cNode.setAttribute("checked","true");
//如果有子节点,则继续递归
if(parseInt(cNode.getChildren().length)!=0)
findAndCheckedNodes(cNode.getChildren(),nodeDatas);
}//--&//oncheck事件function tree_oncheck(tree){ var node=tree.getTreeNode(tree.clickedNodeIndex); var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
setcheck(node,Pchecked); setParent(node,Pchecked);//window.alert(Pchecked); document.all.checked.value = ""; if (tree.getChildren().length & 0) {
for (i=0;i&=tree.getChildren().length-1;i
if (tree.getChildren()[i].getAttribute("Checked"))
AddChecked(tree.getChildren()[i]);
FindCheckedFromNode(tree.getChildren()[i]);
} }}//设置子节点选中
function setcheck(node,Pchecked){ var ChildNode=new Array(); ChildNode=node.getChildren();
if(parseInt(ChildNode.length)==0) { } else {
for(i=0;i&ChildNode.i
cNode=ChildNode[i];
cNode.setAttribute("Checked",Pchecked);
//cNode.Checked = P
if(parseInt(cNode.getChildren().length)!=0)
setcheck(cNode,Pchecked);
//设置子节点选中/取消;//同时需要设置父节点的状态(如果是取消选中的话,仅仅设置本节点及其所有字接点,不涉及父接点)function setParent(node,Pc){
var parentNode = node.getParent();
if(parentNode)
var parentNodeFather = parentNode.getParent();
if(parentNodeFather)
setParent(parentNode,Pc);
{parentNode.setAttribute("checked",Pc);}
checkBrother(parentNode,Pc,node.getAttribute("NodeData"))
//检查子接点是否有选择的,如果有一个选择了,那返回true//只查第一级节点.function checkBrother(parentNode,Pc,NodeData){
var childNodes = new Array();
childNodes = parentNode.getChildren();
if(childNodes.length &0)
var bChecked =
for(var i=0;i&childNodes.i
if(childNodes[i].getAttribute("checked") == true &&
childNodes[i].getAttribute("NodeData") != NodeData)
//alert(i childNodes[i].getAttribute("Text"));
bChecked =
if(bChecked)
parentNode.setAttribute("checked",Pc);
//所有父结点选择
版权申明:本站文章均来自网络,如有侵权,请联系028-0
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
服务器技术
西部数码.cn
CopyRight & &西部数码&版权所有
电话总机:028- (20线)
400电话: 400-

我要回帖

更多关于 云虚拟主机安装nodejs 的文章

 

随机推荐