⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeview.js

📁 转发时请保留此声明信息,这段声明不并会影响你的速度! ******************* 无组件上传类 ******************************** 修改者:梁无惧
💻 JS
📖 第 1 页 / 共 2 页
字号:
	{
		var rtNode = new TreeNode();
		rtNode.ID = cd[i][0];
		rtNode.TreeView = this;
		var parentIndex = cd[i][17];
		if (parentIndex >= 0)
			rtNode.Parent = this.AllNodes[parentIndex-1];
		rtNode.NodeCss = this.NodeCss;	
		rtNode.NodeCssOver = this.NodeCssOver;
		rtNode.NodeCssSelect = this.NodeCssSelect;		
		rtNode.Text = cd[i][1];
		rtNode.Value = cd[i][2];
		rtNode.Category = cd[i][3];
		rtNode.SignImage = imageList[cd[i][4]].src;
		rtNode.SignImageExpanded = imageList[cd[i][5]].src;		
		if (cd[i][6] > 0)
			rtNode.Image = imageList[cd[i][6]].src;
		if (cd[i][7] > 0)
			rtNode.ImageExpanded = imageList[cd[i][7]].src;
		rtNode.Selected = cd[i][8];
		if (rtNode.Selected)
			this.SelectedNode = rtNode;
		rtNode.Checked = cd[i][9];
		rtNode.Enabled = cd[i][10];
		rtNode.Expanded = cd[i][11];
		rtNode.Action = cd[i][12];
		if (this.IsSet(cd[i][13])) rtNode.NodeCss = cd[i][13];
		if (this.IsSet(cd[i][14])) rtNode.ContextMenuName = cd[i][14];		
		this.AllNodes[this.AllNodes.length] = rtNode;		
		
		if (rtNode.Parent != null)
			rtNode.Parent.Nodes[rtNode.Parent.Nodes.length] = rtNode;		
		else		
			this.Nodes[this.Nodes.length] = rtNode;		
		
		rtNode.Index = cd[i][16];
	}
}


TreeView.prototype.Toggle = function(node) {  this.FindNode(node).Toggle(); }
TreeView.prototype.Select = function(node, e) { this.FindNode(node).Select(e); }
TreeView.prototype.Hover = function(node) { this.FindNode(node).Hover(); }
TreeView.prototype.UnHover = function(node) { this.FindNode(node).UnHover(); }
TreeView.prototype.CheckBoxClick = function(node, e) { this.FindNode(node).CheckBoxClick(e); }
TreeView.prototype.Highlight = function(node, e) { this.FindNode(node).Highlight(e); }


TreeView.prototype.SelectNode = function(node)
{
	this.SelectedNode = node;
	node.Selected = true;
	this.UpdateSelectedState();
}

TreeView.prototype.GetSelectedNodes = function()
{
	var i;
	var selNodes = new Array();
	for (i=0; i<this.AllNodes.length; i++)
	{
		if (this.AllNodes[i].Selected)		
			selNodes[selNodes.length] = this.AllNodes[i];		
	}		
	return selNodes;
}

TreeView.prototype.UnSelectAllNodes = function(node)
{
	var i;
	for (i=0; i<this.AllNodes.length;i++)
	{
		if (this.AllNodes[i].Selected && this.AllNodes[i].Enabled)		
			this.AllNodes[i].UnSelect();		
	}
}

TreeView.prototype.KeyDown = function(e) 
{	
	try	{ var dummy = tlrkTreeViews.length;	} catch (exception) { return; };
	
	var LastActiveTreeView = TreeView_Active;
	
	if (LastActiveTreeView != null && LastActiveTreeView.SelectedNode != null)
	{		
		if(e.keyCode == 107 || e.keyCode == 109 || e.keyCode == 37 || e.keyCode == 39)
			LastActiveTreeView.SelectedNode.Toggle();

		if(e.keyCode == 40 && LastActiveTreeView.SelectedNode.NextVisible() != null) // down
			LastActiveTreeView.SelectedNode.NextVisible().Highlight(e);

		if(e.keyCode == 38 && LastActiveTreeView.SelectedNode.PrevVisible() != null) // up
			LastActiveTreeView.SelectedNode.PrevVisible().Highlight(e);

		if(e.keyCode == 13) // Enter
			LastActiveTreeView.SelectedNode.ExecuteAction();				
		
		if(e.keyCode == 32) // Space
			LastActiveTreeView.SelectedNode.CheckBoxClick();	
	}
}


TreeView.prototype.UpdateExpandedState = function() 
{
	var expandedState = "";	
	for (var i=0; i<this.AllNodes.length; i++)
	{
		var isExpanded = (this.AllNodes[i].Expanded) ? "1" : "0";
		expandedState += isExpanded;
	}
	document.getElementById(this.UniqueId + "_expanded").value = expandedState;
}

TreeView.prototype.UpdateCheckedState = function() 
{
	var checkedState = "";
	for (var i=0; i<this.AllNodes.length; i++)
	{
		var isChecked = (this.AllNodes[i].Checked) ? "1" : "0";
		checkedState += isChecked;
	}
	document.getElementById(this.UniqueId + "_checked").value = checkedState;
}

TreeView.prototype.UpdateSelectedState = function() 
{
	var selectedState = "";	
	for (var i=0; i<this.AllNodes.length; i++)
	{
		var isSelected = (this.AllNodes[i].Selected) ? "1" : "0";
		selectedState += isSelected;
	}
	document.getElementById(this.UniqueId + "_selected").value = selectedState;	
}


TreeView.prototype.Scroll = function(e)
{	
	document.getElementById(this.UniqueId + "_scroll").value = document.getElementById(this.Container).scrollTop;	
}

TreeView.prototype.ContextMenuClick = function(e,p1,p2,p3) 
{
	if (!this.FireEvent(this.BeforeClientContextClick, this.LastHighlighted, p1))
		return;	
	
	if (p2)
	{
		var postBack = "__doPostBack('" + this.UniqueId + "','" + "@CC:" + this.SelectedNode.ID + "#" + p1 + "#" + p3 + "')";		
		eval(postBack);
	}
		
	instance = this;
	window.setTimeout("instance.HideContextMenu()", 10);
	this.HideContextMenu();	
}

TreeView.prototype.ContextMenu = function(e) 
{	
	var src = (this.IE) ? e.srcElement : e.target;
	if (this.LastHighlighted != null && this.LastHighlighted.ContextMenuName != null)
	{
		if (!this.ContextMenuVisible)
		{			
			try
			{
			    if (!this.FindNode(src.parentNode.id).Selected)
				    this.Highlight(src.parentNode.id, e);
			
			    if (this.IE)
				    this.ShowContextMenu(this.LastHighlighted.ContextMenuName, e.x, e.y);
				else
					this.ShowContextMenu(this.LastHighlighted.ContextMenuName, e.clientX, e.clientY);
			}
			catch (e)
			{
			}
		}		
	}
	
	this.IE ? e.returnValue = false : e.preventDefault();	
}

TreeView.prototype.ShowContextMenu = function(name, x, y)
{
	var menu = document.getElementById("rtvcm" + this.ID + name);
	menu.style.left = x + document.body.scrollLeft + "px";
	menu.style.top = y + document.body.scrollTop + "px";	
	menu.style.display = "block";	
	this.ContextMenuVisible = true;
	this.ContextMenuName = name;
}

TreeView.prototype.HideContextMenu = function()
{	
	var menu = document.getElementById("rtvcm" + this.ID + this.ContextMenuName);
	if (menu)
		menu.style.display = "none";
	
	this.ContextMenuVisible = false;
}

TreeView.prototype.ClickDispatcher = function(e) 
{
	var src = (this.IE) ? e.srcElement : e.target;	
	if (src.tagName == "SPAN" || (src.tagName == "IMG" && ( src.getAttribute("rtimg") != null) && (src.getAttribute("rtimg") != "") ))
	{
		this.Select(src.parentNode.id, e);
	}
	if (src.tagName == "IMG" && src.getAttribute("rtsign") != null)
	{
		var myNode = this.FindNode(src.parentNode.id);
		this.Toggle(src.parentNode.id);
	}
	if (src.tagName == "INPUT")
	{
		if (src.type == "checkbox")
		{			
			this.CheckBoxClick(src.parentNode.id, e);
		}
	}
	if (src.nodeName == "#text")
	{
		this.Select(src.parentNode.parentNode.id, e);
	}
}

TreeView.prototype.DoubleClickDispatcher = function(e) 
{
	var src = (this.IE) ? e.srcElement : e.target;
	if (src.tagName == "SPAN")
	{
		this.Toggle(src.parentNode.id);
	}
}

TreeView.prototype.MouseOverDispatcher = function(e) 
{	
	var src = (this.IE) ? e.srcElement : e.target;
	
	if (src.tagName == "SPAN")
	{	
		this.Hover(src.parentNode.id);
	}
	else
	{
		var nodeName = src.nodeName;
		if (nodeName == "#text")
			this.Hover(src.parentNode.parentNode.id);
	}
}

TreeView.prototype.MouseOutDispatcher = function(e) 
{	
	var src = (this.IE) ? e.srcElement : e.target;	
	if (src.tagName == "SPAN")
	{
		this.UnHover(src.parentNode.id);
	}
	else
	{
		var nodeName = src.nodeName;
		if (nodeName == "#text")
			this.UnHover(src.parentNode.parentNode.id);	
	}	
}

TreeView.prototype.MouseDown = function(e) 
{	
	if (this.LastHighlighted != null && this.DragAndDrop)
	{		
		if (e.button == 2) return;
		this.DragSource = this.LastHighlighted;
		this.DragClone = this.LastHighlighted.TextElement().cloneNode(true);
		this.DragClone.className = null;

		TreeView_DragActive = this;		
		
		var res = "";		
		if (this.MultipleSelect)
		{
			for (var i=0; i<this.AllNodes.length; i++)
			{
				if (this.AllNodes[i].Selected)
				{
					if (this.IE)
					{
						var img = this.AllNodes[i].TextElement().previousSibling;
						if (img.getAttribute("rtimg"))
							res += this.AllNodes[i].TextElement().previousSibling.outerHTML;
					}
					res += this.AllNodes[i].TextElement().innerHTML + "<BR>";
				}
			}
		}
		
		if (res == "")
		{
			var img = this.LastHighlighted.TextElement().previousSibling;
			if (img.getAttribute("rtimg") == "T")
			{
				res += "<img valign='absmiddle' src=" + img.src + ">";
			}
			res += this.LastHighlighted.TextElement().innerHTML;
		}
		
		this.DragClone.innerHTML = res;
		this.DragClone.style.color = "gray";
		this.DragClone.style.position = "absolute";
		this.DragClone.style.visibility = "hidden";
		document.body.appendChild(this.DragClone);
	}
}

TreeView.prototype.FireEvent = function(handler, a, b, c) 
{
	if (!handler)
		return true;
	
	TreeViewGlobalFirstParam = a;
	TreeViewGlobalSecondParam = b;
	TreeViewGlobalThirdParam = c;
	
	var s = handler;
	s = s + "(TreeViewGlobalFirstParam";
	s = s + ",TreeViewGlobalSecondParam";
	s = s + ",TreeViewGlobalThirdParam";
	s = s + ");";
			
	return eval(s);	
}


TreeView.prototype.IsSet = function(a) 
{
   return (a != null && a != "");
}

function rtvMouseMove(e)
{	
	var i;
	try
	{
		for (i=0; i<tlrkTreeViews.length; i++)	
			if (tlrkTreeViews[i].ContextMenuVisible)
				return;
	}
	catch (e) {}
	
	if (TreeView_DragActive != null && TreeView_DragActive.DragClone != null)
	{
		var newx, newy;
		if (TreeView_DragActive.IE)
		{
			newx = e.x + document.body.scrollLeft + 8;
			newy = e.y + document.body.scrollTop + 4;
		}
		else
		{
			newx = e.clientX + document.body.scrollLeft + 8;
			newy = e.clientY + document.body.scrollTop + 4;
		}
		
		TreeView_DragActive.DragClone.style.zIndex = 999;		
		TreeView_DragActive.DragClone.style.top = newy;
		TreeView_DragActive.DragClone.style.left = newx;
		TreeView_DragActive.DragClone.style.visibility = "visible";
		
		TreeView_DragActive.FireEvent(TreeView_DragActive.AfterClientMove, e);
	}
}

function rtvMouseUp(e) 
{	
	if (TreeView_Active == null)
		return;

	var i;	
	for (i=0; i<tlrkTreeViews.length; i++)
	{
		if (tlrkTreeViews[i].ContextMenuVisible)
		{
			TreeView_ContextMenuToBeHidden = tlrkTreeViews[i];
			window.setTimeout("TreeView_ContextMenuToBeHidden.HideContextMenu();", 10);		
			return;			
		}
	}
	
	if (TreeView_DragActive == null || TreeView_DragActive.DragClone == null)
		return;	
	
	document.body.removeChild(TreeView_DragActive.DragClone);
	TreeView_DragActive.DragClone = null;
	
	var sourceNode = TreeView_DragActive.DragSource;
	var destNode = TreeView_Active.LastHighlighted;
	var destTree = TreeView_Active;
	
	if (sourceNode == destNode)	return;
	
	if (!TreeView_DragActive.FireEvent(TreeView_DragActive.BeforeClientDrop, sourceNode, destNode, e))
		return;
	
	var sourceString = TreeView_DragActive.ID + ":" + sourceNode.ID + ":";
	var destString = "";
	if (destNode == null)	
		destString = "null" + ":" + TreeView_DragActive.HtmlElementID;
	else	
		destString = destTree.ID + ":" + destNode.ID;
	
	var postBack = "__doPostBack('" + TreeView_DragActive.UniqueId + "','" + "@ND:" + sourceString + destString + "')";	
	eval(postBack);
			
	TreeView_DragActive = null;
}

function rtvNodeExpand(id)
{
	var scrollDiv = document.getElementById(id);
	var heightLimit = scrollDiv.scrollHeight;	
	scrollDiv.style.height = "";		
	scrollDiv.firstChild.style.position = "";   
}

function rtvNodeCollapse(id)
{
	var scrollDiv = document.getElementById(id);	
	scrollDiv.style.height = "";		
	scrollDiv.style.display = "none";
	scrollDiv.firstChild.style.position = "";
}

function rtvDispatcher(t,w,e,p1,p2,p3)
{	
	try	{ var dummy = tlrkTreeViews.length;	} catch (exception) { return; };		
	if (tlrkTreeViews)
	{
		var i;
		var targetTree = null;
		for (i=0; i<tlrkTreeViews.length; i++)
		{
			if (tlrkTreeViews[i].ID == t)
			{
				targetTree = tlrkTreeViews[i];
				break;
			}
		}
		
		
		if (targetTree.ContextMenuVisible && w != "mclick" && w != "cclick") return;
		TreeView_Active = targetTree;
						
		switch (w)
		{
			case "mover"	 : targetTree.MouseOverDispatcher(e); break;
			case "mout"		 : targetTree.MouseOutDispatcher(e); break;
			case "mclick"	 : targetTree.ClickDispatcher(e); break;
			case "mdclick"	 : targetTree.DoubleClickDispatcher(e); break;
			case "mdown"	 : targetTree.MouseDown(e); break;
			case "mup"		 : targetTree.MouseUp(e); break;
			case "context"   : targetTree.ContextMenu(e); break;
			case "cclick"	 : targetTree.ContextMenuClick(e,p1,p2,p3); break;
			case "scroll"	 : targetTree.Scroll(e); break;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -