日期:2014-05-16 浏览次数:20415 次
随便做了一个例子如下图
完整源码以及用法下载地址:http://download.csdn.net/detail/software0116/4624749
1,用之前需要组织一个这种结构的XML 2,业务类别和功能在数据库中配置一下就好了 比如:"学生管理"配置的在数据库中的状态时001 那么 他的孩子节点 "添加学生信息" 对应数据库配置应该是001的孩子节点, 这个随你怎么配 ,只要能表示是001的孩子节点就可以了、 可以配置为001001,001002,001003后面的三位数代表孩子节点的顺序,前面三位代表。 3,"/student/student.jsp" 功能所对应的JSP也需要在数据库中配置 4,不同的角色有不同的权限,这个自己想配吧。
js代码
function Folder(folderDescription, hreference) //constructor { //constant data this.desc = folderDescription this.hreference = hreference this.id = -1 this.navObj = 0 this.iconImg = 0 this.nodeImg = 0 this.isLastNode = 0 //dynamic data this.isOpen = true this.iconSrc = "ftv2folderopen.gif" this.children = new Array this.nChildren = 0 //methods this.initialize = initializeFolder this.setState = setStateFolder this.addChild = addChild this.createIndex = createEntryIndex this.hide = hideFolder this.display = display this.renderOb = drawFolder this.totalHeight = totalHeight this.subEntries = folderSubEntries this.outputLink = outputFolderLink } function setStateFolder(isOpen) { var subEntries var totalHeight var fIt = 0 var i=0 if (isOpen == this.isOpen) return if (browserVersion == 2) { totalHeight = 0 for (i=0; i < this.nChildren; i++) totalHeight = totalHeight + this.children[i].navObj.clip.height subEntries = this.subEntries() if (this.isOpen) totalHeight = 0 - totalHeight for (fIt = this.id + subEntries + 1; fIt < nEntries; fIt++) indexOfEntries[fIt].navObj.moveBy(0, totalHeight) } this.isOpen = isOpen propagateChangesInState(this) } function propagateChangesInState(folder) { var i=0 if (folder.isOpen) { if (folder.nodeImg) if (folder.isLastNode) folder.nodeImg.src = "ftv2mlastnode.gif" else folder.nodeImg.src = "ftv2mnode.gif" folder.iconImg.src = "ftv2folderopen.gif" for (i=0; i<folder.nChildren; i++) folder.children[i].display() } else { if (folder.nodeImg) if (folder.isLastNode) folder.nodeImg.src = "ftv2plastnode.gif" else folder.nodeImg.src = "ftv2pnode.gif" folder.iconImg.src = "ftv2folderclosed.gif" for (i=0; i<folder.nChildren; i++) folder.children[i].hide() } } function hideFolder() { if (browserVersion == 1) { if (this.navObj.style.display == "none") return this.navObj.style.display = "none" } else { if (this.navObj.visibility == "hiden") return this.navObj.visibility = "hiden" } this.setState(0) } function initializeFolder(level, lastNode, leftSide) { var j=0 var i=0 var numberOfFolders var numberOfDocs var nc nc = this.nChildren this.createIndex() var auxEv = "" if (browserVersion > 0) auxEv = "<a href='javascript:clickOnNode("+this.id+")'>" else auxEv = "<a>" if (level>0) if (lastNode) //the last 'brother' in the children array { this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mlastnode.gif' width=16 height=22 border=0></a>") leftSide = leftSide + "<img src='ftv2blank.gif' width=16 height=22>" this.isLastNode = 1 } else { this.renderOb(leftSide + auxEv + "<img name='nodeIcon" + this.id + "' src='ftv2mnode.gif' width=16 height=22 border=0></a>") lef