- 浏览: 435670 次
- 性别:
- 来自: 唐山
文章分类
最新评论
-
hautbbs:
谢谢分享!
ASP.NET 导出Excel 和csv -
hautbbs:
感谢分享!
ASP.NET 导出Excel乱码的终极解决 -
wyf:
zcl920 写道只能说 看不懂。要发就发全 取一段出来 有什 ...
图片上绘制文字换行处理 -
zcl920:
只能说 看不懂。要发就发全 取一段出来 有什么用。
图片上绘制文字换行处理 -
380086154:
有用,谢谢。
js比较日期
首先三态节点树必须是带有CheckBox的树,这里简单说明一下所做的三态树。所谓三态是指:选中状态,半选中状态,未选中状态。选中状态:节点的CheckBox打勾;半选中状态:节点的CheckBox打勾,但为灰色;未选中状态:CheckBox不打勾。
其次,子节点全选中,父节点选中;子节点全不选中,父节点不选中;子节点选中但未全部选中,父节点半选中;子节点半选中,父节点半选中;父节点选中子节点全选中,父节点取消,子节点全取消。
代码如下:客户端(JAVASCRIPT)
<script type="text/jscript" language="javascript"> function ShowLegend(ControlID,LegendInfo) { alert(LegendInfo); var para = "LegendInfo="+LegendInfo + "&Visible=" + document.all(ControlID).checked; var myAjax = new Ajax.Request('../ajax/WebFormChangeLegendVisible.aspx',{method: 'get', parameters:para, onComplete: RefreshMap}); } function RefreshMap(request) { var content = request.responseText; parent.mapview.document.forms[0].submit(); } function OnTreeNodeChecked() { var element = window.event.srcElement; if (!IsCheckBox(element)) return; var isChecked = element.checked; var isIndeterminate = element.Indeterminate; var tree = TV2_GetTreeById("TreeView1"); var node = TV2_GetNode(tree,element); TV2_SetChildNodesCheckState(node,isChecked); //alert(element.id); var parent = TV2_GetParentNode(tree,node); TV2_NodeOnChildNodeCheckedChanged(tree,parent,isChecked); //document.all("txtSelectID").value = ""; var aCheckBox = document.getElementsByTagName("input"); for (var i=0;i<aCheckBox.length;i++) { if(aCheckBox[i].type == "checkbox") { if(aCheckBox[i].checked) { var sID = aCheckBox[i].id; sID = sID.substring(0,sID.indexOf("CheckBox")); var obja = document.getElementById(sID.replace('n','t')); var sSelectID = obja.href.replace("javascript:__doPostBack('TreeView1','s')","") sSelectID = sSelectID.replace("')","") var aSelectID = sSelectID.split("\") } } } } //设置子节点CheckBox的状态 function TV2_SetChildNodesCheckState(node,isChecked) { var childNodes = TV2i_GetChildNodesDiv(node); if(childNodes == null) return; var inputs = WebForm_GetElementsByTagName(childNodes,"INPUT"); if(inputs == null || inputs.length == 0) return; for(var i = 0; i < inputs.length; i++) { if(IsCheckBox(inputs[i])) inputs[i].checked = isChecked; inputs[i].indeterminate = false; //父结点改变状态,子节点灰色消失 } } //当子节点CheckBox状态改变引发的父结点状态改变 function TV2_NodeOnChildNodeCheckedChanged(tree,node,isChecked,isIndeterminate) { if(node == null) return; var childNodes = TV2_GetChildNodes(tree,node); if(childNodes == null || childNodes.length == 0) return; var isAllSame = true; var Nodegray = isIndeterminate; //节点的灰色 for(var i = 0; i < childNodes.length; i++) //循环子节点 { var item = childNodes[i]; //获取一个子节点 var value = TV2_NodeGetChecked(item); //获取子节点的checked状态 var value2 = TV2_NodeGetindeterminate(item); //获取子节点的isIndeterminate状态 if(isChecked != value) //如果checkbox的选中状态不相同 { isAllSame = false; Nodegray = true; break; } if(value2) { Nodegray = true; } } var parent = TV2_GetParentNode(tree,node); if(isAllSame) //为真:即checkbox的选中状态相同 { TV2_NodeSetChecked(tree,node,isChecked,Nodegray); //设置当前节点状态 TV2_NodeOnChildNodeCheckedChanged(tree,parent,isChecked,Nodegray); //向父结点递归 } else //为假,即checkbox的选中状态不相同,或出于灰色状态 { TV2_NodeSetChecked(tree,node,true,Nodegray); //设置当前节点状态 TV2_NodeOnChildNodeCheckedChanged(tree,parent,true,Nodegray); //向父结点递归 } } //get node relative element(etc. checkbox) function TV2_GetNode(tree,element) { var id = element.id.replace(tree.id,""); id = id.toLowerCase().replace(element.type,""); id = tree.id + id; var node = document.getElementById(id); if(node == null) //leaf node, no "A" node return element; return node; } //get parent node function TV2_GetParentNode(tree,node) { var div = WebForm_GetParentByTagName(node,"DIV"); var table = div.previousSibling; if(table == null) return null; return TV2i_GetNodeInElement(tree,table); } //get child nodes array function TV2_GetChildNodes(tree,node) { if(TV2_NodeIsLeaf(node)) return null; var children = new Array(); var div = TV2i_GetChildNodesDiv(node); var index = 0; for(var i = 0; i < div.childNodes.length; i++) { var element = div.childNodes[i]; if(element.tagName != "TABLE") continue; var child = TV2i_GetNodeInElement(tree,element); if(child != null) children[index++] = child; } return children; } function TV2_NodeIsLeaf(node) { return !(node.tagName == "A"); //Todo } //读取结点的Checked状态 function TV2_NodeGetChecked(node) { var checkbox = TV2i_NodeGetCheckBox(node); return checkbox.checked; } //读取节点的indeterminate状态 function TV2_NodeGetindeterminate(node) { var checkbox = TV2i_NodeGetCheckBox(node); return checkbox.Indeterminate; } //判断:只要该节点有一个子节点被选中,则该节点一定被选中,若有一个子节点为灰色,则该节点为灰色 function TV2_NodeSetChecked(tree,node,isChecked,isIndeterminate) { var checkbox = TV2i_NodeGetCheckBox(node); if(checkbox != null) { var childNodes = TV2_GetChildNodes(tree,node); //获取子节点的集合 for(var i = 0; i < childNodes.length; i++) { var item = childNodes[i]; //获取一个子节点 var value = TV2_NodeGetChecked(item); //子节点的选中状态 var value2 = TV2_NodeGetindeterminate(item); //子节点的灰色状态 if(value) { isChecked = true ; break; } if(value2)//子节点为灰色 { isInDeterminate=true; break; } } checkbox.checked = isChecked; //结点选中状态 checkbox.indeterminate = isIndeterminate; //结点是否灰色 } } function IsCheckBox(element) { if(element == null) return false; return (element.tagName == "INPUT" && element.type.toLowerCase() == "checkbox"); } //get tree function TV2_GetTreeById(id) { return document.getElementById(id); } //get div contains child nodes function TV2i_GetChildNodesDiv(node) { if(TV2_NodeIsLeaf(node)) return null; var childNodsDivId = node.id + "Nodes"; return document.getElementById( childNodsDivId ); } //find node in element function TV2i_GetNodeInElement(tree,element) { var node = TV2i_GetNodeInElementA(tree,element); if(node == null) { node = TV2i_GetNodeInElementInput(tree,element); } return node; } //find "A" node function TV2i_GetNodeInElementA(tree,element) { var as = WebForm_GetElementsByTagName(element,"A"); if(as== null || as.length == 0) return null; var regexp = new RegExp("^" + tree.id + "n\d+$"); for(var i = 0; i < as.length; i++) { if(as[i].id.match(regexp)) { return as[i]; } } return null; } //find "INPUT" node function TV2i_GetNodeInElementInput(tree,element) { var as = WebForm_GetElementsByTagName(element,"INPUT"); if(as== null || as.length == 0) return null; var regexp = new RegExp("^" + tree.id + "n\d+"); for(var i = 0; i < as.length; i++) { if(as[i].id.match(regexp)) { return as[i]; } } return null; } //get checkbox of node function TV2i_NodeGetCheckBox(node) { if(IsCheckBox(node)) return node; var id = node.id + "CheckBox"; return document.getElementById(id); } function showtab(m,n,count){ var strPic1='url(../image/1.bmp)'; var strPic2='url(../image/2.bmp)'; if (m==8) { strPic1='url(../image/switch03_1.gif)'; strPic2='url(../image/switch03_2.gif)'; } for(var i=1;i<=count;i++){ if (i==n){ getObject(m+'_'+i).style.background=strPic1; getObject('tab_'+m+'_'+i).style.display=''; } else { getObject(m+'_'+i).style.background=strPic2; getObject('tab_'+m+'_'+i).style.display='none'; } } } function getObject(objectId) { if(document.getElementById && document.getElementById(objectId)) { // W3C DOM return document.getElementById(objectId); } else if (document.all && document.all(objectId)) { // MSIE 4 DOM return document.all(objectId); } else if (document.layers && document.layers[objectId]) { // NN 4 DOM.. note: this won't find nested layers return document.layers[objectId]; } else { return false; } } // getObject function Init() { //var w = document.body.scrollWidth; var w = document.body.clientWidth; //var h = document.body.scrollHeight; var h = document.body.clientHeight; getObject("tabTree").style.height = h-90; getObject("divHRTree").style.height=h-100; } </script>
当然,仅有客户端的代码是不够的。我们还需要在服务器端构造一棵树。最简单的方法就是从工具箱——〉导航 中将一个TreeView控件拖到页面上。在TreeView的属性——〉行为中的“ShowCheckBox”一项改为“all”,这样,一个带有CheckBox的树就构造成功了。在服务器端的Page_Load下加入代码:
if (!Page.IsPostBack) { //转入前台的 OnTreeNodeChecked() TreeView1.Attributes.Add("onclick", "OnTreeNodeChecked()"); }
发表评论
-
登录时记住用户名密码的实现方式
2019-06-12 15:11 3032登录的时候记住用户 ... -
CAS 实现单点登录 .NET MVC
2016-05-24 17:14 1130http://www.cnblogs.com/woxpp/p ... -
.NET开发邮件发送功能的全面教程(含邮件组件源码)
2015-03-31 09:43 1169原文地址:http://www.cnblogs.com/he ... -
开发Web组合
2015-01-04 11:39 6131、数据库操作 ORM-Dapper 2、前台界面布局采 ... -
基于 Bootstrap 构建的网站
2014-12-14 14:12 636文档,下载地址:http://v3.bootcss.com ... -
iis8 默认不支持svc解决方法
2014-09-18 18:57 781以下内容对于使用WIN2012 部署V9的时候使用。 ... -
C# 连接Oracle(利用ODP.net,不安装oracle客户端)
2014-07-11 09:37 1696C# 连接Oracle(利用ODP.net,不安装oracl ... -
C# Attribute 特性,过期特性
2014-05-27 15:18 1844通过下列过程将属性应用到代码元素。 通过从 .NE ... -
.NET画实时直方图
2011-12-30 09:37 918using System; using System.Col ... -
设置combobx选中项
2011-12-21 15:20 1033cbRole.SelectedIndex = cbRole.I ... -
文档树状结构化目录管理方法
2011-12-20 09:50 2190本文适用于附件(各类文档、图片和压缩包等,下同)比较多的 ... -
.StringTemplate替换模板
2011-11-03 10:19 1247官方下载 www.StringTemplate. ... -
WCF-IErrorHandler
2011-10-11 16:30 1053使用 IErrorHandler 接口,我们可以更深入地 ... -
ADODB.Stream instead of Scripting.FileSystemObject.
2011-07-04 08:55 1241In a Silverlight 4 OOB App (eve ... -
Scripting.FileSystemObject对象的详细技巧指南
2011-07-03 23:39 1047Scripting.FileSystemObject对象的 ... -
Stream 和 byte[] 之间的转换
2011-07-02 16:52 1071/* - - - - - - - - - - - - - ... -
常用正则表达式
2011-06-15 20:17 794正则表达式用于字符 ... -
DynamicMethod 类
2011-05-11 22:51 1164public delegate String MyMetho ... -
一个通用的快速反射方法(A General Fast Method Invoker)
2011-04-13 22:01 1526普通反射方法 MethodInfo methodIn ... -
C#操作IIS(转)可以写一个工具自己配置网站
2011-03-24 21:08 2269using System; using System.Dir ...
相关推荐
在这个特定的例子中,我们讨论的是一个带有三态复选框(tristate checkbox)的树形DataWindow。在传统的二态复选框中,用户只能选择“已选”或“未选”两种状态,而三态复选框则增加了“未定义”或“灰色”状态,...
3. `setTristate()`: 这个函数用于启用或禁用`CheckBox`的三态模式。默认情况下,`CheckBox`只有两种状态(选中和未选中)。当你调用`setTristate(true)`时,`CheckBox`会增加第三个状态——部分选中。在三态模式下...
引导复选框Bootstrap的三态复选框要求 2.3.2+ 1.8.1以上例子基本复选框 < input id =" checkbox1 " type =" checkbox " value =" 1 " > $ ( '#checkbox1' ) . checkbox ( ) ;三态复选框 < input id =" ...
**jQuery三态树详解** jQuery三态树是一种利用jQuery库构建的数据展示组件,它以Json格式的数据作为输入,呈现为可交互的树形结构。这种树状结构具有三种状态:未选中、部分选中和全选,为用户提供了一种方便的方式...
其中,`indeterminate`属性和`v-model`之间的关系是实现复选框三态逻辑的关键,即全选、部分选和未选。在本文中,我们将详细探讨这两个属性的用法以及它们如何协同工作来呈现不同的视觉效果。 首先,`indeterminate...
在这个例子中,我们创建了一个名为`CheckBoxDemo`的窗口类,包含三个QCheckBox控件。其中,`checkBox1`和`checkBox2`是常规的二态复选框,而`checkBox3`是三态复选框。每个复选框的状态改变都会触发`btnstate`方法,...
emptyiconpath: "lib/jquery/plugins/treeview/images/s.gif", //checkbxo三态的图片 animate: true, //不用配置,动画没有效果 theme: "bbit-tree-lines", //bbit-tree-lines ,bbit-tree-no-lines,bbit-tree-...
(三) vb.net中的类、继承与多态性 1.vb.net中给一个类添加方法 2.命名属性、方法和事件 3.vb.net的事件和事件处理 4.类的继承(Inheritance) 5.vb.net继承的规则 6.用继承建立一个继承类 7.重载Windows控件 8....
(三) vb.net中的类、继承与多态性 1.vb.net中给一个类添加方法 2.命名属性、方法和事件 3.vb.net的事件和事件处理 4.类的继承(Inheritance) 5.vb.net继承的规则 6.用继承建立一个继承类 7.重载Windows控件 8....
这只是一个基本的用法示例,实际上Bootstrap Switch提供了许多可配置选项,如颜色、大小、是否允许三态等,以及事件处理,允许开发者根据需求进行深入定制。 总的来说,Bootstrap Switch是一个强大的工具,可以提升...
同时,通过设置`threeState`为`true`,我们可以启用三态复选框,即除了选中和未选中外,还有一种半选状态(部分子节点被选中)。然后,我们可以监听`checkchange`事件,这个事件会在复选框状态改变时触发。 以下是...
这个项目对于初学者和经验丰富的开发者来说都是宝贵的参考资料,因为它提供了实际操作的例子,帮助理解并掌握各个控件的功能和配置。 首先,我们来深入探讨一下Android中的一些主要控件类别: 1. **按钮(Button)**...
这个简单Dome提供了一个快速入门的例子,展示了如何在网页中集成JsTree,并实现多选、单选、添加和删除节点等功能。下面将详细介绍JsTree的核心特性以及如何与Bootstrap结合使用。 首先,JsTree是一个基于jQuery的...
- **面向对象支持**:VB.NET支持面向对象编程(OOP),提供更强大的类、继承、封装和多态性支持。相比之下,传统VB的面向对象支持较弱。 - **类型系统**:VB.NET具有更严格的类型系统,有助于减少运行时错误。 - **...
- **CheckBox**: 单选或多选。 - **RadioButton**: 单选按钮。 - **GroupBox**: 分组容器。 - **PictureBox**: 显示图像。 - **ListBox**: 显示列表项。 - **CheckedListBox**: 可选择多个项的列表框。 - **ComboBox...
#### (三)VB.Net 中的类、继承与多态性 **1. VB.Net 中给一个类添加方法** - **方法定义**:`Public Sub MyMethod()` **2. 命名属性、方法和事件** - **命名规则**:遵循 PascalCase 和 camelCase 规则。 **3...