📄 treeview.htc
字号:
junctionNode = element.document.createElement("<SPAN name='junction'>");
else
{
junctionNode = element.document.createElement("<IMG align='absmiddle' border='0' class='icon' name='junction'>");
junctionNode.src = imageSrc;
}
return junctionNode;
}
function addLinesAndWhitespace(node, el, junctionNode)
{
var elWalk = el.parentElement;
var elInsertBefore = junctionNode;
var systemImagesPath = element.getAttribute("systemImagesPath");
if (element.getAttribute("showLines") != false)
{
while (elWalk && elWalk.tagName.toLowerCase() == "treenode")
{
var nextSib = elWalk.nextSibling;
while (nextSib != null && nextSib.nodeType == 3)
nextSib = nextSib.nextSibling;
var imageSrc;
var image;
if (nextSib != null && nextSib.tagName.toLowerCase() == "treenode")
imageSrc = systemImagesPath + "I.gif";
else
imageSrc = systemImagesPath + "white.gif";
image = el.document.createElement("<IMG align='absmiddle' border='0'>");
image.src = imageSrc;
elInsertBefore = node.insertBefore(image, elInsertBefore);
elWalk = elWalk.parentElement;
}
}
else
{
var strIndex = getNodeIndex(el);
if (strIndex.indexOf(".") != -1)
{
if (element.getAttribute("Indent") != null)
{
if (isRtl())
node.style.marginRight = element.getAttribute("Indent");
else
node.style.marginLeft = element.getAttribute("Indent");
}
}
}
}
function generateTextNode(el)
{
var textNode = el.document.createElement("<SPAN id=_tntext tabIndex=-1 style='display:inline; height=100%'>");
if (el.getAttribute("Text") != null)
{
textNode.innerHTML = el.getAttribute("Text");
}
else
{
var iChild = 0;
while (iChild < el.childNodes.length)
{
if (el.childNodes[iChild].nodeType == 3 || el.childNodes[iChild].tagName.toLowerCase() != "treenode")
{
var oClone = el.childNodes[iChild].cloneNode(true);
textNode.appendChild(oClone);
}
iChild++;
}
}
textNode.className = "defaultstyle";
var defStyle = cascadeStyle(el, "defaultstyle");
textNode.style.cssText = defStyle;
return textNode;
}
function updateTree(el)
{
if (el.getAttribute("expanded") == true)
{
var i = 0;
var coll = el.children.tags("treenode");
var bRebuild = true;
if (el.getAttribute("_buildChildren") != true && (coll.length > 0 && coll(0).getAttribute("subtree") != null))
{
bRebuild = false;
for (var i = 0; i < coll.length; i++)
{
if (coll(i).subtree == null)
{
bRebuild = true;
break;
}
coll(i).subtree.style.display = "block";
}
}
if (bRebuild)
{
el.removeAttribute("_buildChildren");
buildTree(el, getNodeLevel(el));
reselectNode(el);
if (HoverNodeIndex == getNodeIndex(el))
HoverNode(el);
}
}
else
{
var collChildren = el.children.tags("treenode");
for (var i = 0; i < collChildren.length; i++)
{
collChildren(i).subtree.style.display = "none";
}
var index = getNodeIndex(el);
if (selectedNodeIndex.length > index.length && selectedNodeIndex.substr(0,index.length) == index)
{
selectNode(el);
}
else if (selectedNodeIndex == index)
changeIcon(el, "SelectedImageUrl");
if (HoverNodeIndex.length >= index.length && HoverNodeIndex.substr(0, index.length) == index)
{
if (selectedNodeIndex != index)
{
if (HoverNodeIndex != index)
{
UnhoverNode(getNodeFromIndex(HoverNodeIndex));
HoverNode(el);
}
}
else
UnhoverNode(getNodeFromIndex(HoverNodeIndex));
}
}
setHiddenHelperValue();
}
function cascadeStyle(el, att)
{
var str = g_styles[att];
var strStyle = element.getAttribute(att);
if (strStyle != null)
str = str + ";" + strStyle;
strStyle = getNodeTypeAttribute(el, att);
if (strStyle != null)
str = str + ";" + strStyle;
strStyle = el.getAttribute(att);
if (strStyle != null)
str = str + ";" + strStyle;
return str;
}
function getNodeTypeAttribute(el, att)
{
var _nodetype = getNodeTypeObject(el);
if (_nodetype != null)
return _nodetype.getAttribute(att);
return null;
}
function getNodeAttribute(el, att)
{
var strReturn;
strReturn = el.getAttribute(att);
if (strReturn != null)
return strReturn;
strReturn = getNodeTypeAttribute(el, att);
if (strReturn != null)
return strReturn;
return element.getAttribute(att);
}
function navigateNode(el)
{
var url = getNodeAttribute(el, "NavigateUrl");
if (url != null && url != "")
{
var target = getNodeAttribute(el, "Target");
if (target == null || target == "_self")
{
window.open(url, "_self");
return true;
}
else
window.open(url, target);
}
return false;
}
function checkboxClick()
{
if (g_bInteractive == false)
return;
var el = this.parentElement.parentElement.treenode;
event.cancelBubble = true;
doCheckboxClick(el);
fireQueuedEvents();
}
function doCheckboxClick(el)
{
el.checked = !el.checked;
var evt = createEventObject();
evt.treeNodeIndex = getNodeIndex(el);
g_nodeClicked = el;
_tvevtCheck.fire(evt);
}
function nodeClick()
{
if (g_bInteractive == false)
return;
var el = this.parentElement.treenode;
if (doNodeClick(el) == true)
{
if (element.getAttribute("selectExpands") == true)
doNodePlusMinusClick(el);
fireQueuedEvents();
}
}
function contextmenu()
{
event.cancelBubble = true;
e = element.document.createEventObject(event);
e.treeNodeIndex = getNodeIndex(this.parentElement.treenode);
event.returnValue = element.fireEvent("oncontextmenu", e);
}
function mousedown()
{
if (event.button & 1)
{
g_bMouseDown = true;
}
}
function mouseup()
{
g_bMouseDown = false;
}
function nodePlusMinusClick()
{
if (g_bInteractive == false)
return;
var el = this.parentElement.treenode;
if (doNodePlusMinusClick(el) == true)
fireQueuedEvents();
}
function doNodeClick(el)
{
if (g_bInteractive == false)
return;
g_nodeClicked = el;
event.cancelBubble = true;
el.fireEvent("onclick");
element.fireEvent("onclick", event);
if (getNodeAttribute(el, "NavigateUrl") != null)
{
var target = getNodeAttribute(el, "Target");
if (target == null || target.toLowerCase() == "_self")
return false;
}
selectNode(el);
return true;
}
function doNodePlusMinusClick(el)
{
if (g_bInteractive == false)
return false;
event.cancelBubble = true;
g_nodeClicked = el;
if (el.getAttribute("expanded") == false && el.getAttribute("_bound") == null && el.getAttribute("TreeNodeSrc") != null)
{
el._isExpanding = true;
private_databind(el);
return true;
}
else
return finishNodePlusMinusClick(el);
}
function finishNodePlusMinusClick(el)
{
var exp = getNodeAttribute(el, "expandable");
if (exp == null && el.getAttribute("TreeNodeSrc") != null)
exp = "checkOnce";
if (el.children.tags("treenode").length > 0 || exp == "always" || (exp == "checkOnce" && el.getAttribute("checkedExpandable") != true))
{
var expanded = !el.getAttribute("expanded");
el.setAttribute("expanded", expanded, 0);
if (exp == "checkOnce")
el.checkedExpandable = true;
var evt = createEventObject();
evt.treeNodeIndex = getNodeIndex(el);
var eventToFire = changeJunctionImage(el);
updateTree(el);
doVisualRefresh();
if (expanded == true && el.children.tags("treenode").length == 0 && element.getAttribute("onfirequeuedevents") != null)
addStatusNode(el, L_strRetrievingNodes_Text);
eventToFire.fire(evt);
return true;
}
return false;
}
function changeJunctionImage(el)
{
var icon1 = el.subtree.all("junction",0);
if (el.getAttribute("expanded") == true)
{
if (icon1 != null)
icon1.src = icon1.src.replace(/plus/, "minus");
if (selectedNodeIndex != getNodeIndex(el) || getNodeAttribute(el, "selectedimageurl") == null)
changeIcon(el, "ExpandedImageUrl");
return _tvevtExpand;
}
else
{
if (icon1 != null)
icon1.src = icon1.src.replace(/minus/, "plus");
if (selectedNodeIndex != getNodeIndex(el))
changeIcon(el, "ImageUrl");
return _tvevtCollapse;
}
}
function DefaultNodeOnClick()
{
event.cancelBubble = true;
}
function getClickedNodeIndex()
{
if (g_nodeClicked != null)
return getNodeIndex(g_nodeClicked);
else
return null;
}
function getNodeLevel(node)
{
var level = 0;
while (node.parentElement.tagName.toLowerCase() == "treenode")
{
node = node.parentElement;
level++;
}
return level;
}
function getNodeIndex(node)
{
var strIndex = "";
if (node != null)
{
if (node.getAttribute("sibIndex") == null)
{
if (node.parentElement == null)
{
return null;
}
var col = node.parentElement.children.tags("treenode");
var i = 0;
while (col[i] != node)
i++;
node.sibIndex = i;
}
strIndex = node.sibIndex.toString();
while (node.parentElement && node.parentElement.tagName.toLowerCase() == "treenode")
{
node = node.parentElement;
if (node.getAttribute("sibIndex") == null)
return null;
strIndex = node.sibIndex + "." + strIndex;
}
}
return strIndex;
}
function getNodeFromIndex(strIndex)
{
if (strIndex != null && strIndex != undefined && strIndex.length != 0)
{
var a = strIndex.split(".");
var i = 0;
var node = contentNode;
while (i < a.length)
{
var coll = node.children.tags("treenode");
if (coll == null || coll.length < (a[i] - 0) + 1)
{
return null;
}
node = coll.item(a[i++] - 0);
}
return node;
}
else
{
return null;
}
}
function getNextVisibleNode(node)
{
var next = node;
if (node.getAttribute("expanded") == true)
{
next = node.children[0];
while (next != null && next != undefined && next.nodeName.toLowerCase() != "treenode")
next = next.nextSibling;
if (next)
return next;
}
next = node.nextSibling;
while (next != null && next != undefined && next.nodeName.toLowerCase() != "treenode")
next = next.nextSibling;
if (next != null)
return next;
next = node.parentElement;
while ((next.nextSibling == null || next.nextSibling == undefined) && next.nodeName.toLowerCase() == "treenode")
{
next = next.parentElement;
}
if (next.nextSibling != null && next.nextSibling != undefined && next.nextSibling.nodeName.toLowerCase() == "treenode")
return next.nextSibling;
else
return null;
}
function getPreviousVisibleNode(node)
{
var prev = node;
prev = node.previousSibling;
while (prev != null && prev != undefined && prev.nodeName.toLowerCase() != "treenode")
prev = prev.previousSibling;
if (prev)
{
if (prev.getAttribute("expanded") == true)
{
var lastChild = prev;
while (lastChild != node && lastChild != null)
{
prev = lastChild;
lastChild = getNextVisibleNode(prev);
}
}
return prev;
}
if (node.parentElement.nodeName.toLowerCase() == "treenode")
return node.parentElement;
else
return null;
}
function setHiddenHelperValue()
{
var id = element.HelperID;
if (id == null)
return;
var helper = window.document.all(id);
if (helper == null)
return;
var parentTop = -1;
var parentLeft = -1;
var parent = element.offsetParent;
if (parent != null)
{
parentTop = parent.scrollTop;
parentLeft = parent.scrollLeft;
}
helper.value = (g_bFocus ? "1" : "0") + "|" + HoverNodeIndex + "|" + element.scrollTop + "|" + element.scrollLeft + "|" + parentTop + "|" + parentLeft + "|" + g_strQueuedEvents;
}
function scrollTree(tnode)
{
var node = tnode.subtree.all.item("_tntext", 0);
var top = node.offsetTop - element.scrollTop;
if (top < 0)
{
element.scrollTop += top;
}
else
{
var bottom = top + node.offsetHeight;
var elemHeight = element.clientHeight;
if (bottom > elemHeight)
{
element.scrollTop += bottom - elemHeight;
}
}
var rc = node.getBoundingClientRect();
var elRc = element.getBoundingClientRect();
if (g_bFocus)
{
if (elRc.top + rc.top < element.document.body.clientTop)
node.scrollIntoView(true);
else if (elRc.top + rc.bottom > element.document.body.clientHeight)
node.scrollIntoView(false);
}
}
function getInheritedType(el)
{
if (el.inheritedType === undefined || g_bInTypesBoundEvent)
{
var parentNode = el.parentElement;
el.inheritedType = parentNode.getAttribute("childType");
var tagname = parentNode.tagName.toLowerCase();
if (el.inheritedType == null && tagname != "treeview")
{
var _parenttype = getNodeTypeObject(parentNode);
if (_parenttype != null)
{
el.inheritedType = _parenttype.getAttribute("childType");
}
if (el.inheritedType == null && tagname == "treenode")
{
el.inheritedType = getInheritedType(parentNode);
}
}
if (el.inheritedType == null)
el.inheritedType = element.getAttribute("childType");
}
return el.inheritedType;
}
function getNodeTypeObject(el)
{
if (el.nodetypeIndex == undefined || g_bInTypesBoundEvent)
{
var theType = el.getAttribute("type");
if (theType == null)
theType = getInheritedType(el);
if (theType == null)
return null;
theType = theType.toLowerCase();
var i = 0;
var len = element.nodeTypes.length;
while (i < len)
{
if (element.nodeTypes[i].getAttribute("type") == theType)
{
el.nodetypeIndex = i;
break;
}
i++;
}
}
return element.nodeTypes[el.nodetypeIndex];
}
function replaceJunctionNode(node)
{
if (node.subtree == null)
return;
var oldNode = node.subtree.all("junction", 0);
if (oldNode == null)
return;
var cJunction = calcJunction(node);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -