分享
 
 
 

用ASP+XML实现CSDN的菜单(数据库),可分权限管理

王朝asp·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

我在开发公司OA系统的时候.想找一个CSDN的菜单.可是网上有这样的代码.可是不是基于数据库,也不能按权限管理.我就写了一个.我的这个.只有一个程序文件和一个数据库.文件很少,也很容易查错.但是功能完全实现了!

数据库结构:

Table:Menu

ID

parentid,int,4

MenuName,Char,20

Link,Char,50

Table:UserLevel

ID

UserID,int,4

MenuID,int,4

-------------------------------------程序源文件:MenuList.Asp------------------------------

<%

'-------------------------------'

'源创商务策划有限公司-OA系统

'模块名称:可权限控制的菜单

'-------------------------------'

set conn = Server.CreateObject("ADODB.Connection")

conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.mappath("tree.mdb")+";Persist Security Info=False")

%>

<HTML>

<HEAD>

<TITLE> DSTree </TITLE>

<style>

body,td{font:12px verdana}

#treeBox{background-color:#fffffa;}

#treeBox .ec{margin:0 5 0 5;}

#treeBox .hasItems{font-weight:bold;height:20px;padding:3 6 0 6;margin:2px;cursor:hand;color:#555555;border:1px solid #fffffa;}

#treeBox .Items{height:20px;padding:3 6 0 6;margin:1px;cursor:hand;color:#555555;border:1px solid #fffffa;}

</style>

<script>

//code by star 20003-4-7

var HC = "color:#990000;border:1px solid #cccccc";

var SC = "background-color:#efefef;border:1px solid #cccccc;color:#000000;";

var IO = null;

function initTree(){

var rootn = document.all.menuXML.documentElement;

var sd = 0;

document.onselectstart = function(){return false;}

document.all.treeBox.appendChild(createTree(rootn,sd));

}

function createTree(thisn,sd){

var nodeObj = document.createElement("span");

var upobj = document.createElement("span");

with(upobj){

style.marginLeft = sd*10;

className = thisn.hasChildNodes()?"hasItems":"Items";

innerHTML = "<img src=expand.gif class=ec>" + thisn.getAttribute("text") +"";

onmousedown = function(){

if(event.button != 1) return;

if(this.getAttribute("cn")){

this.setAttribute("open",!this.getAttribute("open"));

this.cn.style.display = this.getAttribute("open")?"inline":"none";

this.all.tags("img")[0].src = this.getAttribute("open")?"expand.gif":"contract.gif";

}

if(IO){

IO.runtimeStyle.cssText = "";

IO.setAttribute("selected",false);

}

IO = this;

this.setAttribute("selected",true);

this.runtimeStyle.cssText = SC;

}

onmouseover = function(){

if(this.getAttribute("selected"))return;

this.runtimeStyle.cssText = HC;

}

onmouseout = function(){

if(this.getAttribute("selected"))return;

this.runtimeStyle.cssText = "";

}

oncontextmenu = contextMenuHandle;

onclick = clickHandle;

}

|||||| if(thisn.getAttribute("treeId") != null){

upobj.setAttribute("treeId",thisn.getAttribute("treeId"));

}

if(thisn.getAttribute("href") != null){

upobj.setAttribute("href",thisn.getAttribute("href"));

}

if(thisn.getAttribute("target") != null){

upobj.setAttribute("target",thisn.getAttribute("target"));

}

nodeObj.appendChild(upobj);

nodeObj.insertAdjacentHTML("beforeEnd","<br>")

if(thisn.hasChildNodes()){

var i;

var nodes = thisn.childNodes;

var cn = document.createElement("span");

upobj.setAttribute("cn",cn);

if(thisn.getAttribute("open") != null){

upobj.setAttribute("open",(thisn.getAttribute("open")=="true"));

upobj.getAttribute("cn").style.display = upobj.getAttribute("open")?"inline":"none";

if( !upobj.getAttribute("open"))upobj.all.tags("img")[0].src ="contract.gif";

}

for(i=0;i<nodes.length;cn.appendChild(createTree(nodes[i++],sd+1)));

nodeObj.appendChild(cn);

}

else{

upobj.all.tags("img")[0].src ="endnode.gif";

}

return nodeObj;

}

window.onload = initTree;

</script>

<script>

function clickHandle(){

if((this.getAttribute("href")!=null)&&(this.getAttribute("href")!="http://"))

{parent.mainFrame.location.href=this.getAttribute("href");} //在MainFrame窗口打开连接。

}

function contextMenuHandle(){

event.returnValue = false;

var treeId = this.getAttribute("treeId");

// your code here

}

</script>

</HEAD>

<BODY>

<xml id=menuXML>

<?xml version="1.0" encoding="GB2312"?>

<DSTreeRoot text="系统菜单" open="true" treeId="123">

<%

Set rs = Conn.Execute("SELECT (select count(*) from Menu where Menu.parentid=x.id and Menu.ID in (SELECT UserLevel.menuid FROM UserLevel WHERE UserLevel.userid = 1)) AS children, * FROM Menu AS x WHERE x.id in (SELECT UserLevel.menuid FROM UserLevel WHERE UserLevel.userid = 1)")

Do while not rs.eof

if rs("ParentID")=0 then

Count = Rs ("children")

%>

<DSTree text="<%=rs("Content")%>" href="<%=rs("Link")%>" open="false" treeId="<%=rs("ID")%>">

<%

rs.MoveNext

end if

for i=1 to Count

%>

<DSTree text="<%=rs("Content")%>" href="<%=rs("Link")%>" open="false" treeId="<%=rs("ID")%>">

</DSTree>

<%

Rs.MoveNext

Next

Response.write("</DSTree>")

Loop

rs.close

Conn.close

Set rs = Nothing

Set Conn = Nothing

%>

</DSTreeRoot>

</xml>

<table style="position:absolute;left:0;top:0;">

<tr><td id=treeBox style="width:400px;height:200px;border:1px solid #cccccc;padding:5 3 3 5;" valign=top></td></tr>

</table>

</BODY>

</HTML>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有