📄 treeview.js
字号:
{
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 + -