📄 treeview.htc
字号:
}
}
oItem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity=50,style=0)";
}
function oncontentready()
{
if (element.document.parentWindow.name.indexOf("__hifSmartNav") == 0)
return;
g_styles = new Object();
var strFont = "font: " + L_fontSize_Text + " " + L_fontName_Text + "; ";
g_styles["parent"] = strFont + "text-decoration: none; color: black; overflow:hidden;";
g_styles["child"] = strFont + "overflow:hidden;";
g_styles["defaultstyle"] = strFont + "display:inline-block; color: black; text-decoration:none; cursor: hand; overflow:hidden;";
g_styles["hoverstyle"] = "color: highlighttext; background-color:highlight; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50,style=0);";
g_styles["selectedstyle"] = "color: highlighttext; background-color:highlight;";
g_styles["icon"] = "cursor:hand;";
if (element.style.overflowX == "");
element.style.overflowX = "auto";
verifyBooleanAttribute(element, "showPlus");
if (element.getAttribute("showPlus") == false && element.getAttribute("selectExpands") == null)
element.setAttribute("selectExpands", true, 0);
verifyBooleanAttribute(element, "selectExpands");
verifyBooleanAttribute(element, "autoSelect");
verifyBooleanAttribute(element, "showLines");
verifyBooleanAttribute(element, "showToolTip");
var systemImagesPath = element.getAttribute("SystemImagesPath");
if (systemImagesPath == null)
element.setAttribute("SystemImagesPath", "treeimages/", 0);
else if (systemImagesPath.charAt(systemImagesPath.length - 1) != '/')
element.setAttribute("SystemImagesPath", systemImagesPath + '/', 0);
if (isRtl())
{
element.setAttribute("SystemImagesPath", element.getAttribute("SystemImagesPath") + "rtl/", 0);
}
contentNode = element.document.createElement("treeview");
contentNode.innerHTML = element.innerHTML;
element.tabIndex=0;
element.attachEvent("onkeydown", onkeydown);
element.attachEvent("onfocus", onfocus);
element.attachEvent("onblur", onblur);
f_AddStopEvent();
element.hideFocus = true;
if (element.getAttribute("selectedNodeIndex") == null)
prop_selectedNodeIndex = "";
if (element.getAttribute("HoverNodeIndex") == null)
element.setAttribute("HoverNodeIndex", "", 0);
if (element.getAttribute("TreeNodeTypeSrc") == null)
{
element.nodeTypes = contentNode.children.tags("TREENODETYPE");
verifyTypeValues();
g_bTypesReady = true;
}
else
databindTypes();
if (treeNodeSrc != null)
{
if (element.nodeTypes != null)
{
contentNode.innerHTML = getNodeTypeHtml();
element.nodeTypes = contentNode.children.tags("TREENODETYPE");
}
else
contentNode.innerHTML = "";
databindNode(element);
}
else
{
g_bNodesReady = true;
tryToBuildTreeFromRoot();
}
}
function ondocumentready()
{
if (element.document.parentWindow.name.indexOf("__hifSmartNav") == 0)
return;
f_CleanupEvents();
g_strQueuedEvents = "";
if (HoverNodeIndex.length > 0)
HoverNode(getNodeFromIndex(HoverNodeIndex));
g_bInteractive = true;
if (element.getAttribute("Focused") != null)
dofocus();
else
onblur();
var newScrollTop = element.getAttribute("__scrollTop");
var newScrollLeft = element.getAttribute("__scrollLeft");
if (newScrollTop != null)
element.scrollTop = newScrollTop;
if (newScrollLeft != null)
element.scrollLeft = newScrollLeft;
var parent = element.offsetParent;
if (parent != null)
{
var newParentTop = element.getAttribute("__parentTop");
var newParentLeft = element.getAttribute("__parentLeft");
if (newParentTop != null)
parent.scrollTop = newParentTop;
if (newParentLeft != null)
parent.scrollLeft = newParentLeft;
}
if (getNodeFromIndex(selectedNodeIndex) == null)
{
if (getNodeFromIndex("0") != null)
selectedNodeIndex = "0";
else
selectedNodeIndex = "";
}
}
function changeIcon(node, imageUrl)
{
var icon1;
var imageUrlLC = imageUrl.toLowerCase();
var textnode = node.subtree.all("_tntext", 0);
var accessnode = node.subtree.all("_tnaccess", 0);
var spacer = accessnode.previousSibling;
if (spacer != null)
{
icon1 = spacer.previousSibling;
if (icon1 != null && icon1.id != "_nodeicon")
icon1 = null;
}
else
icon1 = null;
var newSrc = getNodeAttribute(node, imageUrlLC);
if (newSrc != null && icon1 == null)
{
icon1 = node.document.createElement("<IMG align='absmiddle' border='0' class='icon' id='_nodeicon' >");
icon1.src = newSrc;
accessnode.parentElement.insertBefore(icon1, accessnode);
spacer = node.document.createElement("<SPAN>");
spacer.style.width = 5;
accessnode.parentElement.insertBefore(spacer, accessnode);
}
else if (newSrc != null)
{
icon1.src = newSrc;
icon1.style.display = "inline";
}
else if (imageUrlLC == "imageurl")
{
if (icon1 != null)
{
icon1.style.display = "none";
}
}
else if (imageUrlLC == "selectedimageurl" && node.getAttribute("expanded") == true)
changeIcon(node, "expandedimageurl");
else
changeIcon(node, "imageurl");
if (icon1 != null)
{
icon1.style.cursor = textnode.style.cursor;
spacer.style.cursor = textnode.style.cursor;
}
}
function selectNode(node, delay)
{
var nodeIndex;
var selectedNode = null;
var strImage;
var oItem;
var oOldItem = null;
if (node && node.subtree == null)
node = getNodeFromIndex("0");
nodeIndex = getNodeIndex(node);
if (selectedNodeIndex != nodeIndex)
{
if (selectedNodeIndex != "" && selectedNodeIndex != null)
{
selectedNode = getNodeFromIndex(selectedNodeIndex);
if (selectedNode != null && selectedNode.subtree != null)
{
oOldItem = selectedNode.subtree.all.item("_tntext", 0);
SetAnchorClass(oOldItem, "defaultstyle");
oOldItem.parentElement.tabIndex = -1;
if (selectedNode.getAttribute("expanded") == true)
strImage = "ExpandedImageUrl";
else
strImage = "ImageUrl";
changeIcon(selectedNode, strImage);
}
}
if (node)
{
oItem = node.subtree.all.item("_tntext", 0);
applySelection(node, oItem);
}
if (selectedNodeIndex.length > 0)
{
g_event = createEventObject();
g_event.newTreeNodeIndex = nodeIndex;
g_event.oldTreeNodeIndex = selectedNodeIndex;
prop_selectedNodeIndex = nodeIndex;
if (delay != true)
_tvevtSelect.fire(g_event);
else
{
if (g_timer != -1)
window.clearTimeout(g_timer);
g_timer = window.setTimeout(autoSelect, 500, "JScript");
if (g_selectedNodeBeforeDelay == "")
g_selectedNodeBeforeDelay = g_event.oldTreeNodeIndex;
}
}
else
prop_selectedNodeIndex = nodeIndex;
if (!g_bFocus && g_bInteractive)
{
if (oOldItem != null)
focusFilter(oOldItem);
}
}
setHiddenHelperValue();
}
function autoSelect()
{
g_timer = -1;
if (selectedNodeIndex != g_selectedNodeBeforeDelay)
{
navigateNode(getNodeFromIndex(g_event.newTreeNodeIndex));
_tvevtSelect.fire(g_event);
fireQueuedEvents();
}
g_selectedNodeBeforeDelay = "";
}
function applySelection(node, oItem)
{
SetAnchorClass(oItem, "SelectedStyle");
changeIcon(node, "SelectedImageUrl");
scrollTree(node);
if (selectedNodeIndex.length > 0)
{
if (g_bFocus)
changeFocus(node, getNodeFromIndex(selectedNodeIndex));
}
if (!g_bFocus && g_bInteractive)
{
blurFilter(oItem);
}
}
function reselectNode(el)
{
if (selectedNodeIndex == getNodeIndex(el))
applySelection(el, el.subtree.all.item("_tntext", 0));
}
function tryToBuildTreeFromRoot()
{
if (g_bNodesReady == true && g_bTypesReady == true)
{
var bRebuilding = g_bCreated;
buildTreeFromRoot();
if (selectedNodeIndex.length == 0)
{
prop_selectedNodeIndex = "0";
}
var node = getNodeFromIndex(selectedNodeIndex);
prop_selectedNodeIndex = "";
selectNode(node);
}
}
function buildTreeFromRoot()
{
treeviewNode = element.document.createElement("HTML");
var bodyNode = element.document.createElement("BODY");
bodyNode.dir = element.getAttribute("dir");
bodyNode.style.direction = element.currentStyle.direction;
var head = element.document.createElement("HEAD");
var base = element.document.createElement("BASE");
var path = null;
if (window.location.pathname != null)
{
var lastslash = window.location.pathname.lastIndexOf("/");
if (lastslash != -1)
path = window.location.pathname.substr(0, lastslash + 1);
else
path = window.location.pathname;
}
var protocol = window.location.protocol.toLowerCase();
base.href = window.location.protocol + (protocol != "mailto:" && protocol != "news:" ? "//" : "") + window.location.host + path;
head.appendChild(base);
treeviewNode.appendChild(head);
var kids = contentNode.children.tags("treenode");
if (kids[0] != undefined)
{
for (var i = 0; i < kids.length; i++)
{
kids[i].sibIndex = i;
var subtree = buildTree(kids[i], 0);
bodyNode.appendChild(subtree);
}
}
treeviewNode.appendChild(bodyNode);
treeviewNode.style.display = "block";
treeviewNode.subtree = bodyNode;
defaults.viewLink = treeviewNode.document;
setHiddenHelperValue();
g_bCreated = true;
}
function buildTree(root, level)
{
var display = true;
if (root.subtree != null && root.subtree.style.display == "none")
display = false;
root.detachEvent("onclick", DefaultNodeOnClick);
root.attachEvent("onclick", DefaultNodeOnClick);
root.inheritedType = undefined;
root.nodetypeIndex = undefined;
var exp = makeBoolean(root.getAttribute("expanded"));
if (exp == null)
{
if (level < element.getAttribute("ExpandLevel"))
{
root.setAttribute("expanded", true, 0);
exp = true;
}
else
exp = false;
}
if (!verifyBooleanAttribute(root, "expanded"))
root.setAttribute("expanded", false, 0);
if (!verifyBooleanAttribute(root, "checked"))
root.setAttribute("checked", false);
verifyBooleanAttribute(root, "checkBox");
verifyBooleanAttribute(root, "checkedExpandable");
if (root.getAttribute("type") != null)
root.setAttribute("type", root.getAttribute("type").toLowerCase(), 0);
if (root.getAttribute("childType") != null)
root.setAttribute("childType", root.getAttribute("childType").toLowerCase(), 0);
var collChildren = root.children.tags("treenode");
var iChildren = collChildren.length;
var expandable = getNodeAttribute(root, "expandable");
if (expandable == null && root.getAttribute("TreeNodeSrc") != null)
expandable = "checkOnce";
if (root.getAttribute("_bound") != "binding")
{
var subtree = generateItem(root, iChildren > 0 || (expandable == "always" || (expandable == "checkOnce" && root.getAttribute("checkedExpandable") != true)) ? "parent" : "child");
if (display == false)
subtree.style.display = "none";
if (exp == true && root.getAttribute("TreeNodeSrc") != null && root.getAttribute("_bound") != "complete")
{
root.setAttribute("expanded", true, 0);
saveSubtree(root, subtree);
databindNode(root);
}
else
{
if (root.getAttribute("expanded") == true)
{
for (var i = 0; i < iChildren; i++)
{
collChildren[i].sibIndex = i;
var sub2 = buildTree(collChildren[i], level + 1);
if (sub2 != undefined)
subtree.appendChild(sub2);
}
}
else
{
for (var i = 0; i < iChildren; i++)
{
if (collChildren[i].getAttribute("subtree") != null)
collChildren[i].subtree = null;
}
}
saveSubtree(root, subtree);
}
}
return root.subtree;
}
function saveSubtree(el, subtree)
{
if (el.getAttribute("subtree") == null)
el.subtree = subtree;
else {
el.subtree.replaceNode(subtree);
el.subtree = subtree;
}
}
function calcJunction(el)
{
var elParent = el.parentElement;
var collChildren = elParent.children.tags("treenode");
if (elParent.tagName == "treeview" && collChildren[0] == el)
{
if (collChildren.length > 1)
return ('F');
else
return ('R');
}
else
{
if (collChildren[collChildren.length - 1] == el)
{
return ('L');
}
else
{
return ('T');
}
}
}
function generateItem(el, nodeClass)
{
var image;
var plusminusNode;
var elAnchor;
var expImgUrl = getNodeAttribute(el, "ExpandedImageUrl");
var imgUrl = getNodeAttribute(el, "ImageUrl");
var node = el.document.createElement("DIV");
var cJunction;
var junctionNode;
var str;
node.className = nodeClass;
node.treenode = el;
node.noWrap = true;
node.style.display = "block";
if (nodeClass == "child" && el.getAttribute("expanded") == true)
el.setAttribute("expanded", false, 0);
cJunction = calcJunction(el);
junctionNode = generateJunctionNode(el, cJunction, nodeClass);
node.appendChild(junctionNode);
addLinesAndWhitespace(node, el, junctionNode);
if (getNodeAttribute(el, "checkBox") == true)
{
var cb = createCheckBox(el);
node.appendChild(cb);
}
elAnchor = el.document.createElement("<A>");
elAnchor.onclick = nodePlusMinusClick;
junctionNode.applyElement(elAnchor, "outside");
elAnchor = el.document.createElement("<A tabindex=-1>");
str = getNodeAttribute(el, "NavigateUrl");
if (str != null && str != "")
{
elAnchor.href = str;
}
str = getNodeAttribute(el, "Target");
if (str != null)
elAnchor.target = str;
var accessAnchor = elAnchor.cloneNode();
accessAnchor.id = "_tnaccess";
elAnchor.onclick = nodeClick;
elAnchor.oncontextmenu = contextmenu;
elAnchor.onmousedown = mousedown;
elAnchor.onmouseup = mouseup;
node.insertBefore(elAnchor);
imageSrc = (nodeClass == "parent" && el.getAttribute("expanded") == true && expImgUrl != null ? expImgUrl : imgUrl);
var spacer = null;
if (imageSrc != null && imageSrc != undefined)
{
image = el.document.createElement("<IMG align='absmiddle' border='0' class='icon' id='_nodeicon'>");
image.src = imageSrc;
image.style.cssText = g_styles["icon"];
elAnchor.appendChild(image);
spacer = el.document.createElement("<SPAN>");
spacer.style.width = 5;
elAnchor.appendChild(spacer);
}
var textNode = generateTextNode(el);
if (spacer != null)
{
spacer.style.cursor = textNode.style.cursor;
image.style.cursor = textNode.style.cursor;
}
if (nodeClass == "parent" && element.getAttribute("showToolTip") != false)
accessAnchor.title = textNode.innerText + " : " + L_strToolTip_Text;
accessAnchor.appendChild(textNode);
elAnchor.appendChild(accessAnchor);
elAnchor.onmouseenter = mOver;
elAnchor.onmouseleave = mOut;
return node;
}
function createCheckBox(el)
{
var form = el.document.createElement("<FORM style='display:inline' name='_fcb'>");
var bChecked = el.getAttribute("checked");
var cb = el.document.createElement("<INPUT style='display:inline' tabindex=-1 type=checkbox name='_cb'" + (bChecked ? " checked " : " ") + "/>");
cb.onclick = checkboxClick;
form.appendChild(cb);
return form;
}
function generateJunctionNode(el, cJunction, nodeClass)
{
var imageSrc;
var junctionNode;
var systemImagesPath = element.getAttribute("systemImagesPath");
if (element.getAttribute("showLines") != false)
{
imageSrc = systemImagesPath;
switch (cJunction)
{
case 'L':
imageSrc += "L";
break;
case 'T':
imageSrc += "T";
break;
case 'R':
imageSrc += "R";
break;
case 'F':
imageSrc += "F";
break;
default:
return null;
break;
}
if (nodeClass == "parent" && element.getAttribute("showPlus") != false )
{
if (el.getAttribute("expanded") == true)
imageSrc += "minus.gif";
else
imageSrc +="plus.gif";
}
else
imageSrc += ".gif";
}
else
{
if (nodeClass == "parent" && element.getAttribute("showPlus") != false)
{
if (el.getAttribute("expanded") == true)
imageSrc = systemImagesPath + "minus.gif";
else
imageSrc = systemImagesPath + "plus.gif";
}
else
{
imageSrc = systemImagesPath + "white.gif";
}
}
if (element.getAttribute("showLines") == false && element.getAttribute("showPlus") == false)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -