⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msgtree.asp

📁 物业管理和办公自动化系统
💻 ASP
字号:
<%@ Language=VBScript %>
<% option explicit %>
<% Response.expires = 0%>
<!-- #include file="../u_menu.asp" -->
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<SCRIPT LANGUAGE=javascript>
<!--// --------------------------Client Code Start-------------------------------
/*
''''''''''''''''''''''''''''''''''''''''''''''
''功能:树形结构的显示(树形菜单) 
''说明:该程序容易理解,算法清晰,您只需使用,无需做什么修改就可以适用于各种环境
''使用中如遇问题,请与我联系
''Version 1.0
''作者:陶建波 taojianbo@263.net

''**NEW**2001.10.10陶建波
''性能评测:
''  以本程序所提供的算法,对处理少量的数据来说,是一种简单快捷的方法,但是如果是大量的数据呢
''比如:数据库的记录达到1k(千),1m(百万)会如何呢?如果是用来人口统计呢?
''假设树的平均层次为layer,记录数为n,则计算:
''文件大小:length=2000(附加的固定大小部分)+(layer*130+280+$)*n
'' $的大小有layer,n与实际情况决定,但一般大于100
''最后计算length,文件的大小可能是nk
''由此看来,该算法不适用与大的数据量的情况,请用户考虑好
''为了改变这种不利情况,最新的算法版本请见powertree.asp,该程序将在目前功能的基础上着重考虑性能问题
'''''''''''''''''''''''''''''''''''''''''''''''
*/
function showhidechild(objspan)
{
	// 显示,隐藏区域,达到菜单显示的目的
	var temp;
	eval("temp=oSpan"+objspan+".style.display");
	if(temp=="none") 
	{
		eval("oSpan"+objspan+".style.display='block'");
		eval("oImg"+objspan+".src='images/close.gif'");
	}
	else
	{
		eval("oSpan"+objspan+".style.display='none'");
		eval("oImg"+objspan+".src='images/open.gif'");
	}
}//end function

//-----------------------------Client Code End--------------------------
//-->
</SCRIPT>
<style type="text/css">
<!--
body		{font-size:9pt;
		scrollbar-face-color:#dddddd;
		scrollbar-shadow-color:white;
		scrollbar-highlight-color:white;
		scrollbar-3dlight-color:#508CFF;
		scrollbar-darkshadow-color:#508CFF;
		scrollbar-track-color:#FFFFFF;
		scrollbar-arrow-color:#508CFF}
#treeroot	{font-size:9pt;}
a:link		{ font-size: 9pt; color: #000000; text-decoration: none;}
a:visited	{ font-size: 9pt; color: #000000; text-decoration: none;}
a:hover		{ font-size: 9pt; color: #0000FF; background-color: #FFFFFF; text-decoration: none}
a:active	{ font-size: 9pt; color: #000000; background-color: #FFFFFF; text-decoration: none}
td			{font-size:9pt}
-->
</style>
</HEAD>
<BODY leftmargin=0 rightmargin=0>
<table border=0 cellspacing=0 cellpadding=0 width="740px" align=center>
<tr><td style="font-size:11pt;color:green;font-weight:600" colspan=3 align=center>消 息 列 表</td></tr>
<tr><td valign=top nowrap align=left colspan=3>
<%
'''''''''''''''''''''''''''''''Server code start'''''''''''''''''''''''''''''''
function UserName(userid)
	'if Trim(userid) = Session("UserID") then
	'	UserName = "<img border=0 src='images/I.gif'>"
	'	exit function
	'end if
	sSQL = "proc_transEmpList " & ToSQL(userid,"Text")
	Set rs = cn.Execute(sSQL)
	UserName = GetValue(rs,"namelist")
	rs.close
	exit function
'	Dim sName
'	openrs rs, "select name from T_Employee where emp_id = " & ToSQL(userid, "Text")
'	if Not rs.EOF then sName = GetValue(rs, "name")
'	sName = Trim(sName)
'	if sName = "" then sName = userid
'	rs.close
'	UserName = sName
end function

function Brev(field, length)
	Dim sTemp : sTemp = CStr(field)
	if len(sTemp) > length then
		sTemp = left(sTemp, length - 4) & "...."
	end if
	Brev = sTemp	
end function
dim layer,seqer,rowcount,colcount ''全局变量定义
layer=0		'''树的层次计数器,初始化为0
seqer=0		'''顺序号计数器,初始化为0
rowcount=0	'''树组的第一维数
colcount=0	'''树组的第二维数
function listchild(id)
	''参数:树的根结点ID
	''可变部分:
	''erect.gif,blank.gif,link.gif,line.gif,open.gif,close.gif 各图片的
	''说明:在本程序中作了这样的假设,你的树在数据库存储的方法为 tree{row_id,nodename,par_id,...}
	''不要在未看清楚之前修改任何一条语句
	''在代码中,在editable start 与editable end 之间的未可修改内容
	''
	''
	dim parid,i,blnchild,lastobji
	dim lastseqer
	lastobji=""		'本级的最后一个对象i值,初始化为空
	parid=id		'
	i=0				'基数0
	blnchild=false	'该节点是否有子节点,初始化为false
	lastseqer=0		'上一个节点的顺序号,初始化为0,及

	response.write("<table border=0 cellspacing=0 cellpadding=0 width=""100%"">")
'	response.write "<tr><td>seqer:" & seqer & ", lastseqer:" & lastseqer & "</td></tr>"
	if layer=0 then
		Response.write "<tr bgcolor='#FFFFcc' height='20px'><td> 消息主题(共" & rowcount & "条消息)</td>" & _
			"<td>发送和接收者</td>" & _
			"<td>发送时间</td></tr>"

	end if
	while(i<rowcount)
'		dim sNodeName
'		sNodeName = Trim(treedata(i,1))
'		if len(sNodeName) > (24+layer*2) then sNodeName = left(sNodeName,20-layer*2) & "...."
		dim iSerial		: iSerial	= treedata(i,0)
		dim sSubject	: sSubject	= treedata(i,1)
		dim sParent		: sParent	= treedata(i,2)
		dim sSender		: sSender	= treedata(i,3)
		dim sReceiver	: sReceiver = treedata(i,4)
		dim sSendTime	: sSendTime	= treedata(i,5)
		dim iPMSerial	: iPMSerial	= treedata(i,6)

		if(CStr(treedata(i,2))=CStr(parid)) then
			response.write("<tr>")
			response.write("<td width='60%'>")
			lastobji=i '
			'if(seqer-lastseqer>1 and lastseqer<>0) then
			if(seqer-lastseqer>1 and lastseqer<>0 and layer<>0) then
				k=lastseqer+1
				Response.write("<script language=javascript>")
				while(k<seqer)
					Response.write("oerectImg"&layer&k&".src='images/erect.gif';")
					k=k+1
				wend
				Response.Write("</script>") 
			end if
			j=0
			while(j<layer)
				Response.Write("<img id='oerectImg"&j&seqer&"' src='images/blank.gif' border=0 align='absmiddle'>")
				'#b01# Response.Write("<img src='images/blank.gif' border=0 align='absmiddle'>") 
				''如果觉得垂直线之间的宽度小了,可以去掉#b01# ,#b02#两条语句的注释,同时也可以通过更改图片的大小以达目的 
				j=j+1
			wend
			' 如果层次为零,就不显示前面的link图标,而显示空白
			if layer = 0 then
				Response.Write("<img id='olinkImg"&parid&i&"' src='images/blank.gif' border=0 align='absmiddle'>")
			else
				Response.Write("<img id='olinkImg"&parid&i&"' src='images/link.gif' border=0 align='absmiddle'>")
			end if
			'#b02# Response.Write("<img src='images/line.gif' border=0 align='absmiddle'>")
			Response.Write("<img id='oImg"&parid&i&"' style='cursor:hand' src='images/open.gif' border=0 align='absmiddle' onclick=showhidechild('"&parid&i&"')>")

			''''''''''''''''''''''editable start'''''''''''''''''''''''''''''''''''''''
'			while ( len(sNodeName) < (20-layer*2) )
'				sNodeName = sNodeName & " "
'			wend
			
			Response.write("&nbsp;<a target='_blank' title='" & sSubject & "' style='cursor:hand' href='u_messageinfo.asp?pmserial=" & iPMSerial & "'>" & Brev(sSubject,30) & "</a>")
			'response.write("*" & seqer & ":" & lastseqer & "*")
			response.write("</td><td width='20%'>")
			Response.write("<font color='gray' title='"& UserName(sSender) &"'>" & UserName(sSender) & "<img border=0 src='images/msgfromto.gif'><span title='" & UserName(sReceiver) & "'>" & UserName(sReceiver) & "</span>")
			response.write("</td><td width='20%'>")
			Response.write(treedata(i,5))
			Response.write("</font>")
			''上面一行用户可以自行添加修改一满足实际情况。
			''''''''''''''''''''''editable end'''''''''''''''''''''''''''''''''''''''

			'Response.Write("<br>")
			Response.Write("</td></tr><tr><td colspan=3>")

			lastseqer=seqer		'取值在先,递加在后,其中lastseqer是局部变量,其值不会与seqer同步
			seqer=seqer+1		'顺序号加一
			layer=layer+1		'进入递归,层次layer加一

			Response.write("<span id='oSpan"&parid&i&"' style='display:none' >")
			if(listchild(treedata(i,0))=false) then
				Response.write("<script language=javascript>oImg"&parid&i&".src='images/leaf.gif';")
				Response.write("oImg"&parid&i&".onclick='';")
				Response.write("oImg"&parid&i&".style.cursor='default'")	''改变光标类型
				Response.write("</script>")
			end if
			''''如果没有下一级,则修改前面的图标为close.gif
			Response.write("</span>")
			response.write "</td></tr>"
			blnchild=true
		end if
		i=i+1
	wend
	if( lastobji <> "" ) then
		' 如果层次为零,就不显示前面的lineleaf图标,而显示空白
		if layer = 0 then
			Response.write("<script language=javascript>olinkImg"&parid&lastobji&".src='images/blank.gif';</script>")
		else
			Response.write("<script language=javascript>olinkImg"&parid&lastobji&".src='images/lineleaf.gif';</script>")
		end if
	end if
	layer=layer-1		'退出递归,层次减一
	listchild=blnchild	'返回是否有子节点
	response.write("</td></tr>")
	response.write("</table>")
end function
%> 

<%
dim strsql
strsql="select T1.serial, T1.subject, T1.parent, T1.sender, T1.receiver, T1.send_time, T2.serial as pmserial" & _
	" from T_Message T1, T_PersonalMessage T2" & _
	" where (T1.sender='" & Session("UserID") & "'" & _
		" or T1.serial in " & _
				"(select message_serial from T_PersonalMessage where account_id = '" & Session("UserID") & "')" & _
		" ) " & _
	" and T1.serial = T2.message_serial" & _
	" and T1.Message_type = 1" & _
	" order by T1.serial desc"
''SQL 语句书写要求: 
''在记录集的前面三个字段必须依次为: 
''  row_id(惟一的主键)
''  name(菜单条显示的内容)
''  par_id(父节点row_id), 其它根据需要输出与显示
'set conn=server.createobject("ADODB.connection")
'conn.open "infortower", "infor", "tower"

set rs=server.createobject("ADODB.Recordset")
rs.open strsql, cn, 3, 3
rs.MoveFirst

rowcount=rs.RecordCount 
colcount=7 '这个值根据实际情况设定
dim treedata,i,j,k
redim treedata(rowcount,colcount)
rs.MoveFirst
i=0
while(not rs.EOF) 
	j=0
	while(j<colcount) 
		treedata(i,j)=rs.Fields(j).Value
		j=j+1
	wend
	rs.MoveNext
	i=i+1
wend
rs.Close
set rs=nothing

'''''''初始化完毕数组

Response.write("<span id='treeroot' style='display:block' border=0>")
listchild(0)
Response.write("</span>")

''''''''''''''''''''''''''''''''Server Code END '''''''''''''''''''
cn.close
%></td>
</tr></table>
<p align=center>
<a href="msg_s.asp" style="color:blue" OnMouseOver="this.style.color='red'" OnMouseOut="this.style.color='blue'"><img border=0 src="../images/list.gif">&nbsp;消息查询</a>
&nbsp;&nbsp;
<a href="u_SendMessage.asp" style="color:blue" OnMouseOver="this.style.color='red'" OnMouseOut="this.style.color='blue'"><img border=0 src="../images/writemsg.gif">&nbsp;发送消息</a>
&nbsp;&nbsp;
<a href="u_SendBulletin.asp" style="color:blue" OnMouseOver="this.style.color='red'" OnMouseOut="this.style.color='blue'"><img border=0 src="../images/writebtn.gif">&nbsp;发送公告</a>
</BODY>
</HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -