jsスクリプトを使用して、asp.net_javascriptスキルの下でツリービューのNodeCheckの実装コードを制御します

WBOY
リリース: 2016-05-16 18:33:37
オリジナル
1393 人が閲覧しました

CheckBox リンクを追加するための選択オプション:
1. TreeView 内の任意のノードを単一選択します
2. ノードの CheckBox 属性値が変更された場合: 子ノードの CheckBox 属性値はその変更に従い、親ノードもノードは変更されません。
親ノードのすべての子ノードの CheckBox 属性値が false の場合は false、1 つの子ノードの CheckBox 属性値が存在する場合は true。ノードの値が変更される: 子ノード、親ノードの CheckBox 属性値がその変更に続きます。
親ノードのすべての子ノードの CheckBox 属性値が false の場合は false、CheckBox 属性が false の場合は true です。 1 つの子ノードの値は true です。
javascript コード

コードをコピーします コードは次のとおりです。

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,否则为其结点)
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: information of node
child nodes

var table = div.previousSibling;
if (table == null)
return null;
return TV2i_GetNodeInElement(tree, table);
}
//子ノード配列を取得
function TV2_GetChildNodes(tree, node) {
if (TV2_NodeIsLeaf(node))
return null;
var Children = new Array();
var div = TV2i_GetChildNodesDiv(ノード);
変数インデックス = 0;
for (var i = 0; i var element = div.childNodes[i];
if (element.tagName != "TABLE")
続行;
var child = TV2i_GetNodeInElement(tree, element);
if (child != null)
children[index ] = child;
}
子を返します。
}
function TV2_NodeIsLeaf(node) {
return !(node.tagName == "A"); //Todo
}
function TV2_NodeGetChecked(node) {
var checkbox = TV2i_NodeGetCheckBox(node);
チェックボックスを返します。チェック済み;
}
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() == "チェックボックス");
}
//ツリーを取得
function TV2_GetTreeById(id) {
return document.getElementById(id);
}
///////////////////////////////////////// //////////////////////////////////////////////// /
//TV2i_ プレフィックス付きのプライベート メソッド
/////////////////////////////////// //////////////////////////////////////////////// /////////
//子ノードを含む div を取得
function TV2i_GetChildNodesDiv(node) {
//如果node.tagName == "A"则不处理
if ( TV2_NodeIsLeaf(node))
null を返します。
var childNodsDivId = node.id "ノード";
return document.getElementById(childNodsDivId);
}
//要素内のノードを検索
function TV2i_GetNodeInElement(tree, element) {
var node = TV2i_GetNodeInElementA(tree, element);
if (node == null) {
node = TV2i_GetNodeInElementInput(tree, element);
}
ノードを返します。
}
//「A」ノードを検索
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 if (as[i].id.match(regexp)) {
return as[i];
}
}
null を返します。
}
//「INPUT」ノードを検索
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 if (as[i].id.match(regexp)) {
return as[i];
}
}
null を返します。
}
//ノードのチェックボックスを取得
function TV2i_NodeGetCheckBox(node) {
if (IsCheckBox(node))
return ノード;
var id = node.id "チェックボックス";
return document.getElementById(id);
}

html代码
复制代 代码如下:

ShowLines="True" BorderWidth="0px" Height="430px" width="250px" " Font-Size="Small"
OnClick="OnTreeNodeChecked()">

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!