欢迎您访问我爱IT技术网,今天小编为你分享的javascript教程:【用js脚本控制asp.net下treeview的NodeCheck的实现代码】,下面是详细的讲解!
用js脚本控制asp.net下treeview的NodeCheck的实现代码
function OnTreeNodeChecked(id, type) {
//获取触发事件的对象
var element=window.event.srcElement;
//如果对象不是checkbox则不处理
if (!IsCheckBox(element))
return;
//获取checked状态
var isChecked=element.checked;
//获取tree对象
var tree=TV2_GetTreeById(id);
//获取element的相对结点(如果是叶结点,则就为element,否则为其<A>结点)
var node=TV2_GetNode(tree, element);
switch (type) {
case "1":
SetNodesUnChecked(tree);
element.checked=true;
break;
case "2":
TV2_SetChildNodesCheckStatus(node, isChecked);
break;
case "3":
TV2_SetChildNodesCheckStatus(node, isChecked);
var parent=TV2_GetParentNode(tree, node);
TV2_NodeOnChildNodeCheckedChanged(tree, parent, isChecked);
}
}
//set all nodes checkbox nochecked
function SetNodesUnChecked(TreeNode) {
var inputs=WebForm_GetElementsByTagName(TreeNode, "INPUT");
if (inputs==null || inputs.length==0)
return;
for (var i=0; i < inputs.length; i++) {
if (IsCheckBox(inputs[i]))
inputs[i].checked=false;
}
}
//set child nodes checkbox status
function TV2_SetChildNodesCheckStatus(node, isChecked) {
//返回当前node所在的div层
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;
}
}
//change parent node checkbox status after child node changed
function TV2_NodeOnChildNodeCheckedChanged(tree, node, isChecked) {
if (node==null)
return;
var childNodes=TV2_GetChildNodes(tree, node);
if (childNodes==null || childNodes.length==0)
return;
var isAllSame=true;
for (var i=0; i < childNodes.length; i++) {
var item=childNodes[i];
var value=TV2_NodeGetChecked(item);
if (isChecked !=value) {
isAllSame=false;
break;
}
}
var parent=TV2_GetParentNode(tree, node);
if (isAllSame) {
TV2_NodeSetChecked(node, isChecked);
TV2_NodeOnChildNodeCheckedChanged(tree, parent, isChecked);
}
else {
TV2_NodeSetChecked(node, true);
TV2_NodeOnChildNodeCheckedChanged(tree, parent, true);
}
}
//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");
//The structure of node: <table>information of node</table><div>child nodes</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
}
function TV2_NodeGetChecked(node) {
var checkbox=TV2i_NodeGetCheckBox(node);
return checkbox.checked;
}
function TV2_NodeSetChecked(node, isChecked) {
var checkbox=TV2i_NodeGetCheckBox(node);
if (checkbox !=null)
checkbox.checked=isChecked;
}
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);
}
//////////////////////////////////////////////////////////////////////////////////////////////
//private mothods, with TV2i_ prefix
//////////////////////////////////////////////////////////////////////////////////////////////
//get div contains child nodes
function TV2i_GetChildNodesDiv(node) {
//如果node.tagName=="A"则不处理
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);
}
关于用js脚本控制asp.net下treeview的NodeCheck的实现代码的用户互动如下:
相关问题:ASP.net怎么给动态生成的TreeView控件加js事件. 本...
答:你不要用这种树,这样会对整个页面进行提交,你用那种传统的后台管理不行吗? >>详细
相关问题:asp.net做一个后台利用treeview实现点击不同子节点...
答: 不知道这样写你明白意思不,也就是说NavigateUrl是可以执行javascript的,至于到了javascript层面,想怎么处理随你了 >>详细
相关问题:asp.net treeview控制页面问题
答:在右侧插入 这个复制楼上,但可以不用在后台,直接在前台加入 即可 >>详细
- 【firefox】firefox浏览器不支持innerText的解决
- 【Extjs】Extjs学习过程中新手容易碰到的低级错误
- 【clearInterval】js clearInterval()方法的定义
- 【ComboBox】ComboBox 和 DateField 在IE下消失的
- 【dom】javascript dom追加内容实现示例-追加内容
- 【checkbox】让checkbox不选中即将选中的checkbox
- 【Array】js中更短的 Array 类型转换-类型转换
- 【append】append和appendTo的区别以及appendChil
- 【ExtJs】ExtJs 表单提交登陆实现代码-表单提交-
- 【ajax清除浏览器缓存】Ajax清除浏览器js、css、
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
