无限分类移动修改栏目


<%

'系统页面加载初始化参数设定

ClassID=request("ClassID")
if ClassID="" or not isnumeric(ClassID) then
response.Write("<script>alert('传递参数错误!系统即将返回!');history.go(-1);</script>")
response.End()
end if

'类别列表读取函数

Function ShowClassFormOption(sChannelID,CurrentID,sClassDepth)
dim rsClass,sqlClass,sTemp,tmpClassDepth,i,n
dim arrShowLine(10)

for i=0 to ubound(arrShowLine)
arrShowLine(i)=False
next

sTemp="<option value=""0"""
if CurrentID=0 then sTemp=sTemp & " selected"">顶级类别</option>"


sqlClass="Select ClassID,ClassName,ClassDepth,ChannelID,RootID,OrderID From SoftClass "

if sClassDepth>0 then
sqlClass=sqlClass & " where ClassDepth<"&sClassDepth&" order by OrderID"
else
sqlClass=sqlClass & " order by OrderID"
end if

set rsClass=conn.Execute(sqlClass)

if rsClass.bof and rsClass.bof then
ShowClassFormOption = sTemp & "<option value="""">添加顶级类别</option>"
rsClass.close
set rsClass=Nothing
Exit Function
else
sTemp="<option value=""0"""">顶级类别</option>"
ClassRecord=rsClass.GetRows(-1)
'获取最后一行记录
'数据字段1,类别ID,ClassID
'数据字段2,类别名称,ClassName
'数据字段3,类别深度,ClassDepth
'数据字段4,类别ID,Class
rsClass.close
set rsClass=Nothing
End if


Dim sChecked, tempClassName

For i=0 to Ubound(ClassRecord,2)
tmpClassDepth=ClassRecord(2,i)
'数据字段3,类别深度,ClassDepth
if ClassRecord(3,i)>0 then
arrShowLine(tmpClassDepth)=True
else
arrShowLine(tmpClassDepth)=False
end if

sChecked = "" : tempClassName = ""
if ClassRecord(0,i)=CurrentID then sChecked = " selected"

if tmpClassDepth>0 then
for n=1 to tmpClassDepth
tempClassName = tempClassName & "&nbsp;&nbsp;"
if n=tmpClassDepth then
if ClassRecord(3,i)>0 then
tempClassName = tempClassName & "├&nbsp;"
else
tempClassName = tempClassName & "└&nbsp;"
end if
else
if arrShowLine(n)=True then
tempClassName = tempClassName & "│"
else
tempClassName = tempClassName & "&nbsp;"
end if
end if
next
end if

tempClassName = tempClassName & ClassRecord(1,i)
sTemp=sTemp & "<option value=""" & ClassRecord(0,i) & """ "&sChecked&">" & tempClassName & "</option>"
Next

ShowClassFormOption=sTemp
ClassRecord=Empty
End Function

if request("action")="EditSave" then

ChannelID=cint(trim(Request.Form("ChannelID")))
newParentClassID=Cint(trim(Request.Form("ParentID")))
ClassName=trim(Request.Form("ClassName"))
ClassFolderName=trim(Request.Form("ClassFolderName"))
ClassMemo=trim(Request.Form("ClassMemo"))
ClassKeyWords=trim(Request.Form("ClassKeyWords"))
ClassDescription=trim(Request.Form("ClassDescription"))
IsCreateFolder=trim(Request.Form("IsCreateFolder"))

if ClassName="" Then
response.write("<script>alert('系统出错!请返回填写栏目类别名称');history.go(-1);</script>")
response.End()
end if

if ClassFolderName="" Then
response.write("<script>alert('系统出错!请返回填写栏目类别目录文件夹');history.go(-1);</script>")
response.End()
end if

if ClassMemo="" Then
response.write("<script>alert('系统出错!请返回填写栏目类别说明');history.go(-1);</script>")
response.End()
end if

if ClassKeyWords="" Then
response.write("<script>alert('系统出错!请返回填写栏目类别搜索关键字');history.go(-1);</script>")
response.End()
end if

if ClassDescription="" Then
response.write("<script>alert('系统出错!请返回填写栏目类别搜索描述词');history.go(-1);</script>")
response.End()
end if


If IsValidWindowsFolderName(ClassFolderName)=False Then
response.Write("<script language=javascript>alert('目录名格式不正确,按确定返回重新填写');history.back();</script>")
response.End()
end if

ClassFolderName=Replace(PCase(ClassFolderName)," ","-")

'查询网站频道项目
set rs=server.CreateObject("Adodb.recordset")
sql="select * from SystemChannelList Where ChannelID="&ChannelID
rs.open sql,conn,1,3
if rs.eof and rs.bof then
rs.close
set rs=nothing
conn.close
set conn=nothing
response.write("<script>alert('无此数据,系统即将返回!');location.href='ClassList.asp';</script>")
response.End()
else
ChannelName =rs("ChannelName")
ChannelFolderUrl=rs("ChannelFolderUrl")
ChannelFolderPath=rs("ChannelFolderPath")
end if
rs.close
set rs=nothing

'查询父类别ID是否改变
'读取要修改的ClassID类别数据
set rsClass=server.CreateObject("Adodb.recordset")
sqlClass="select * from SoftClass where ClassID="&ClassID
rsClass.open sqlClass,conn,1,3
if rsClass.eof and rsClass.bof then
response.write("<script>alert('错误!未查询到对应类别!系统即将返回');location.href='ClassList.asp';</script>")
response.End()
else

if rsClass("ParentID")<>newParentClassID then '更改了所属栏目,则要做一系列检查
rstUpdateQuried=1
if ParentClassID=rsClass("ClassID") then
response.write("<script>alert('所属栏目不能为自己!!系统即将返回');location.href='ClassList.asp';</script>")
response.End()
end if
'判断所指定的栏目是否为本栏目的下属栏目
if rsClass("ParentID")=0 then
if newParentClassID>0 then
set trs=conn.execute("select RootID,ClassID From SoftClass where ClassID="&newParentClassID)
if trs.bof and trs.eof then
response.write("<script>alert('找不到要移动到的父栏目!系统即将返回');location.href='ClassList.asp';</script>")
response.End()
else
if rsClass("RootID")=trs(0) and rsClass("RootID")<>0 then
response.write("<script>alert('不能指定顶级栏目的父栏目为其下属栏目!系统即将返回');location.href='ClassList.asp';</script>")
response.End()
end if
end if
trs.close
set trs=nothing
end if
else
set trs=conn.execute("select ClassID From SoftClass where ParentIDPath like '"&rsClass("ParentIDPath")&"," & rsClass("ClassID") & ",%' and ClassID="&newParentClassID)
if not (trs.eof and trs.bof) then
response.write("<script>alert('不能指定父栏目的下属栏目作为所属栏目!系统即将返回');location.href='ClassList.asp';</script>")
response.End()
end if
trs.close
set trs=nothing
end if

else
rstUpdateQuried=0
end if

'读取类别相关历史数据

oldClassDepth=Clng(rsClass("ClassDepth"))
oldChild=Clng(rsClass("Child"))
oldRootID=Clng(rsClass("RootID"))
oldParentID=Clng(rsClass("ParentID"))
oldParentIDPath=rsClass("ParentIDPath")
oldPrevClassID=Clng(rsClass("PrevID"))
oldNextID=Clng(rsClass("NextID"))
oldClassOrderID=Clng(rsClass("ClassOrderID"))
oldRootOrderID=Clng(rsClass("RootOrderID"))
oldOrderID=Clng(rsClass("OrderID"))
end if
rsClass.close
set rsClass=nothing


IF newParentClassID=0 then
'查询新父类相关数据
newParentClassName="" '父类名
newParentClassFolderName="" '父类目录名
newClassDepth=0
newParentClassID=0
newParentClassRootID=0
ClassFolderPath=ClassFolderName
ClassLocalPath=ChannelFolderPath&"/"&ClassFolderPath
ClassFolderUrl=ChannelFolderUrl&"/"&Replace(ClassFolderPath,"/","/")
else
'查询新父类相关数据
set rsParent=server.CreateObject("Adodb.recordset")
sqlParent="select * from SoftClass where ClassID="&newParentClassID
rsParent.open sqlParent,conn,1,3
if rsParent.eof and rsParent.bof then
response.write("<script>alert('未能查询到新父类类别对应的数据!系统即将返回上一页');history.go(-1);</script>")
response.End()
else
newParentClassID=Clng(rsParent("ClassID"))
newParentClassName=rsParent("ClassName") '父类名

newParentClassFolderName=rsParent("ClassFolderName") '新父类目录名
newParentClassFolderPath=rsParent("ClassFolderPath") '新父类目录名
newParentClassFolderUrl=rsParent("ClassFolderUrl") '新父类访问路径
newParentClassIDPath=rsParent("ParentIDPath")

newParentClassDepth=Clng(rsParent("ClassDepth"))

newParentClassRootID=Clng(rsParent("RootID"))
newParentClassChild=Clng(rsParent("Child"))

newParentOrderID=Clng(rsParent("OrderID"))
newParentClassOrderID=Clng(rsParent("ClassOrderID"))
newParentRootOrderID=Clng(rsParent("RootOrderID"))
end if
rsParent.close
set rsParent=nothing

'根据父类数据得到当前路径相关参数
ClassFolderPath=newParentClassFolderPath&"/"&ClassFolderName
ClassLocalPath=ChannelFolderPath&"/"&ClassFolderPath
ClassFolderUrl=ChannelFolderUrl&"/"&Replace(ClassFolderPath,"/","/")

end if

'如果改变了父类,则要更新相关一些数据
IF rstUpdateQuried=1 then
'首先更新历史父栏目的子栏目数量
'如果是顶类栏目,下面的语句是不执行的
conn.execute("update SoftClass set Child=Child-1 where ClassID="&oldParentID)

'******************************************
'由一级别移动到1级别下面
'******************************************
IF oldParentID=0 and newParentClassRootID=0 and newParentClassID>0 then
'分顶类栏目往前移动和往后移动
if oldClassOrderID>newParentClassOrderID then
MovetoBehind=0'顶类栏目往前移动
response.Write("<br>顶类栏目往前移动到系统根栏目")
else
MovetoBehind=1'顶类栏目往后移动
response.Write("<br>顶类栏目往后移动到系统根栏目")
end if
response.Write("<br>顶类栏目移动方向:"&MovetoBehind)
'查询当前移动栏目的子类别数量
set rs1=conn.execute("select Count(*) from SoftClass where ParentIDPath like '0,"&ClassID&",%'")
if isnull(rs1(0)) then
ChildClassNumber=0
else
ChildClassNumber=rs1(0)
end if
set rs1=nothing
TotalMovingNumber=ChildClassNumber+1
response.Write("<br>当前移动栏目包含子栏目的栏目数量"&TotalMovingNumber)
newClassDepth=1
newRootID=newParentClassID

if newParentClassChild>0 then
'*************************************
'不同顶类栏目中的顶类栏目移动到别的包含子栏目顶类栏目下
'*************************************
response.Write("<br>不同顶类栏目中的顶类栏目移动到别的包含子栏目顶类栏目下:")
'获取新父栏目的子栏目中的当前类别的前一栏目
newPrevClassOrderID=conn.execute("select Max(ClassOrderID) from SoftClass where ParentID="&newParentClassID)(0)
PrevClassID=conn.execute("select ClassID,ClassOrderID from SoftClass where ClassOrderID="&newPrevClassOrderID&" and ParentID="&newParentClassID)(0)
conn.execute("Update SoftClass set NextID="&ClassID&" where ClassID="&PrevClassID)
newClassOrderID=newPrevClassOrderID+1
'获取同一顶类栏目中的排列顺序
set rs1=conn.execute("select Max(RootOrderID) from SoftClass where ParentIDPath like '0,"&newRootID&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxRootOrderID=rs1(0)
end if
newRootOrderID=newMaxRootOrderID+1
set rs1=nothing
response.Write("<br>最大前一栏目的RootOrderID:"&newMaxRootOrderID)

if MovetoBehind=0 then'顶类栏目往前移动
'获取所有栏目中的排列顺序
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '0,"&newRootID&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID+1
set rs1=nothing
response.Write("<br>最大前一栏目的OrderID:"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newRootID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID+"&TotalMovingNumber&" where OrderID>"&newMaxOrderID&" and OrderID<"&oldOrderID)
'更新同一父栏目的上一个栏目的“NextID”字段值
conn.execute("update SoftClass set NextID=" & ClassID & " where ClassID=" & PrevClassID)
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)

else'顶类栏目往后移动
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '0,"&newRootID&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID-TotalMovingNumber
set rs1=nothing
response.Write("<br>最大前一栏目的OrderID:"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newRootID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and (ParentIDPath not like '0,"&newRootID&",%')")
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
'更新同一父栏目的上一个栏目的“NextID”字段值
conn.execute("update SoftClass set NextID=" & ClassID & " where ClassID=" & PrevClassID)

end if'移动的栏目包含子栏目且顶类栏目往前往后移动代码结束
'*********************************
'批量更新所有移动的子栏目的排序
'*********************************
response.Write("<br>批量更新所有移动的子栏目的排序--顶类栏目往前移动")
set rs=conn.execute("select * From SoftClass where ParentIDPath like '0,"&ClassID&",%'")
i=0
do while not rs.eof
i=i+1
tempParentIDPath=replace(rs("ParentIDPath"),"0,","0,"&newParentClassID&",")
conn.execute("update SoftClass set ClassDepth=ClassDepth+"&newClassDepth&"+1,RootOrderID="&newRootOrderID&"+"&i&",RootID="&newRootID&",ParentIDPath='"&tempParentIDPath&"'")
rs.movenext
loop
rs.close
set rs=nothing
else
'*************************************************************
'不同顶类栏目中的顶类栏目移动到别的不包含子栏目顶类栏目下
'*************************************************************
response.Write("<br>不同顶类栏目中的顶类栏目移动到别的不包含子栏目顶类栏目下:")
'获取新父栏目的子栏目中的当前类别的前一栏目
PrevClassID=0
'获取同一父类栏目中的排列顺序
newClassOrderID=1
'获取同一顶类栏目中的排列顺序
set rs1=conn.execute("select Max(RootOrderID) from SoftClass where ParentIDPath like '0,"&newParentClassID&",%'")
if isnull(rs1(0)) then
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxRootOrderID=rs1(0)
end if
newRootOrderID=newMaxRootOrderID+1
set rs1=nothing
response.Write("<br>最大前一栏目的RootOrderID:"&newMaxRootOrderID)

if MovetoBehind=0 then'顶类栏目往前移动
'获取所有栏目中的排列顺序
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '0,"&newParentClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID+1
set rs1=nothing
response.Write("<br>最大前一栏目的OrderID:"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID+"&TotalMovingNumber&" where OrderID>"&newMaxOrderID&" and OrderID<"&oldOrderID)
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)

else'顶类栏目往后移动
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '0,"&newParentClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
newOrderID=newMaxOrderID-TotalMovingNumber
else
newMaxOrderID=rs1(0)
newOrderID=newMaxOrderID-TotalMovingNumber
end if
set rs1=nothing
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<"&newMaxOrderID&" and (ParentIDPath not like '0,"&newParentClassID&",%')")
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
end if'顶类栏目往后移动分类代码结束

'批量更新所有移动的子栏目的排序
set rs=conn.execute("select * From SoftClass where ParentIDPath like '0,"&ClassID&",%'")
i=0
do while not rs.eof
i=i+1
tempParentIDPath=replace(rs("ParentIDPath"),"0,",newParentClassID)
conn.execute("update SoftClass set ClassDepth=ClassDepth+"&newClassDepth&"+1,RootOrderID="&newRootOrderID&"+"&i&",RootID="&newRootID&",ParentIDPath='"&tempParentIDPath&"'")
rs.movenext
loop
rs.close
set rs=nothing


end if'新父栏目包含与不包含子栏目分类代码结束

'******************************************
'由一级别移动到N级别(N>1)
'******************************************
ELSEIF oldParentID=0 and newParentClassRootID>0 then
response.Write("<br>由一级别移动到N级别(N>1)")
'分顶类栏目往前移动和往后移动
if oldClassOrderID>newParentClassOrderID then
MovetoBehind=0'顶类栏目往前移动
response.Write("<br>顶类栏目往前移动到N级栏目")
else
MovetoBehind=1'顶类栏目往后移动
response.Write("<br>顶类栏目往后移动到N级栏目")
end if
'查询当前移动栏目的子类别数量
set rs1=conn.execute("select Count(*) from SoftClass where ParentIDPath like '"&oldParentIDPath&","&ClassID&",%'")
if isnull(rs1(0)) then
ChildClassNumber=0
else
ChildClassNumber=rs1(0)
end if
set rs1=nothing
TotalMovingNumber=ChildClassNumber+1
response.Write("<br>当前移动栏目的栏目数量"&TotalMovingNumber)
newClassDepth=newParentClassDepth+1
newRootID=newParentClassRootID

if newParentClassChild>0 then
'*************************************************************
'不同顶类栏目中的顶类栏目移动到别的包含子栏目N级栏目下
'*************************************************************
response.Write("<br>不同顶类栏目中的顶类栏目移动到别的包含子栏目N级栏目下:")
'获取新父栏目的子栏目中的当前类别的前一栏目
newPrevClassOrderID=conn.execute("select Max(ClassOrderID) from SoftClass where ParentID="&newParentClassID)(0)
PrevClassID=conn.execute("select ClassID,ClassOrderID from SoftClass where ClassOrderID="&newPrevClassOrderID&" and ParentID="&newParentClassID)(0)
response.Write("<br>前一子栏目ID"&PrevClassID)
conn.execute("Update SoftClass set NextID="&ClassID&" where ClassID="&PrevClassID)
newClassOrderID=newPrevClassOrderID+1
response.Write("<br>当前父栏目已经存在的子栏目数量"&newPrevClassOrderID)
'获取同一顶类栏目中的排列顺序
set rs1=conn.execute("select Max(RootOrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&newParentClassID&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxRootOrderID=rs1(0)
end if
newRootOrderID=newMaxRootOrderID+1
set rs1=nothing
response.Write("<br>当前同一顶类最大排序:"&newMaxRootOrderID)

if MovetoBehind=0 then'移动的栏目包含子栏目且顶类栏目往前移动

'获取所有栏目中的排列顺序
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&newParentClassID&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID+1
set rs1=nothing
response.Write("<br>前一栏目总排序:"&newMaxOrderID)
response.Write("<br>新父栏目的顶类栏目CLASSID:"&newParentClassRootID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and RootID="&newRootID)
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID+"&TotalMovingNumber&" where OrderID>"&newMaxOrderID&" and OrderID<"&oldOrderID)
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)

else'移动的栏目包含子栏目且顶类栏目往后移动

set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&newParentClassID&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID-TotalMovingNumber
set rs1=nothing
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassRootID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and (ParentIDPath not like '"&newParentClassIDPath&","&ClassID&",%')")
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
'更新同一父栏目的上一个栏目的“NextID”字段值
conn.execute("update SoftClass set NextID=" & ClassID & " where ClassID=" & PrevClassID)
end if'移动的栏目包含子栏目且顶类栏目往前往后移动代码结束

else
'*************************************************************
'不同顶类栏目中的顶类栏目移动到别的不包含子栏目N级栏目下
'*************************************************************
response.Write("<br>不同顶类栏目中的顶类栏目移动到别的不包含子栏目N级栏目下:")
'获取新父栏目的子栏目中的当前类别的前一栏目
PrevClassID=0
'获取同一父类栏目中的排列顺序
newClassOrderID=1

'获取同一顶类栏目中的排列顺序
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
newRootOrderID=newMaxRootOrderID+1
response.Write("<br>最大存在上一顶类栏目的RootOrderID"&newMaxRootOrderID)

if MovetoBehind=0 then'新父类栏目不包含子栏目且顶类栏目往前移动
'获取所有栏目中的排列顺序
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
newOrderID=newMaxOrderID+1

'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassRootID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID+"&TotalMovingNumber&" where OrderID>"&newMaxOrderID&" and OrderID<"&oldOrderID)
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
else'新父类栏目不包含子栏目且顶类栏目往后移动
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
newOrderID=newMaxOrderID-TotalMovingNumber
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassRootID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and (ParentIDPath not like '"&newParentClassIDPath&","&ClassID&",%')")
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
end if'顶类栏目往后移动分类代码结束

end if'移动的栏目包含与不包含子栏目分类代码结束

'******************************************
'由N级别移动到1级别栏目下
'******************************************
ELSEIF oldParentID>0 and newParentClassRootID=0 and newParentClassID>0 then

'查询当前移动栏目的子类别数量
set rs1=conn.execute("select Count(*) from SoftClass where ParentIDPath like '"&oldParentIDPath&","&ClassID&",%'")
if isnull(rs1(0)) then
ChildClassNumber=0
else
ChildClassNumber=rs1(0)
end if
set rs1=nothing
TotalMovingNumber=ChildClassNumber+1
response.Write("<br>当前移动栏目的栏目数量"&TotalMovingNumber)
newRootID=newParentClassID

if newParentClassChild>0 then
'*************************************************************
'不同顶类栏目中的N级栏目移动到别的包含子栏目的1级栏目下
'*************************************************************
response.Write("<br>不同顶类栏目中的N级栏目移动到别的包含子栏目的1级栏目下:")
'获取新父栏目的子栏目中的当前类别的前一栏目
newPrevClassOrderID=conn.execute("select Max(ClassOrderID) from SoftClass where ParentID="&newParentClassID)(0)
PrevClassID=conn.execute("select ClassID,ClassOrderID from SoftClass where ClassOrderID="&newPrevClassOrderID&" and ParentID="&newParentClassID)(0)
response.Write("<br>前一子栏目ID"&PrevClassID)
conn.execute("Update SoftClass set NextID="&ClassID&" where ClassID="&PrevClassID)
newClassOrderID=newPrevClassOrderID+1
response.Write("<br>当前父栏目已经存在的子栏目数量"&newPrevClassOrderID)
'获取同一顶类栏目中的排列顺序
set rs1=conn.execute("select Max(RootOrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxRootOrderID=rs1(0)
end if
newRootOrderID=newMaxRootOrderID+1
set rs1=nothing
response.Write("<br>当前同一顶类最大排序:"&newMaxRootOrderID)

set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
newOrderID=newMaxOrderID-TotalMovingNumber
else
newMaxOrderID=rs1(0)
newOrderID=newMaxOrderID-TotalMovingNumber
end if
set rs1=nothing
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and (ParentIDPath not like '0,"&newParentClassID&",%')")


else
'*************************************************************
'不同顶类栏目中的N级栏目移动到别的不包含子栏目1级栏目下
'*************************************************************
response.Write("<br>不同顶类栏目中的N级栏目移动到别的不包含子栏目1级栏目下:")
'获取新父栏目的子栏目中的当前类别的前一栏目
PrevClassID=0
'获取同一父类栏目中的排列顺序
newClassOrderID=1
response.Write("<br>当前父类ClassID:"&newParentClassID)
'获取同一顶类栏目中的排列顺序
set rs1=conn.execute("select Max(RootOrderID) from SoftClass where ParentIDPath like '0,"&newParentClassID&",%'")
if isnull(rs1(0)) then
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxRootOrderID=rs1(0)
end if
newRootOrderID=newMaxRootOrderID+1
set rs1=nothing
response.Write("<br>前一栏目的RootOrderID"&newMaxRootOrderID)
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '0,"&newParentClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID-TotalMovingNumber
set rs1=nothing
response.Write("<br>前一栏目的OrderID"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and (ParentIDPath not like '0,"&newParentClassID&","&ClassID&",%')")

end if'移动的栏目包含与不包含子栏目分类代码结束

'******************************************
'由N级别移动到根目录下
'******************************************
ELSEIF oldParentID>0 and newParentClassID=0 then
'*************************************************************
'不同顶类栏目中的N级栏目移动到根目录下
'*************************************************************]
response.Write("<br>由N级别移动到根目录下:")
'查询当前移动栏目的子类别数量
set rs1=conn.execute("select Count(*) from SoftClass where ParentIDPath like '"&oldParentIDPath&","&ClassID&",%'")
if isnull(rs1(0)) then
ChildClassNumber=0
else
ChildClassNumber=rs1(0)
end if
set rs1=nothing
TotalMovingNumber=ChildClassNumber+1
response.Write("<br>当前移动栏目的栏目数量:"&TotalMovingNumber)
newClassDepth=0
newRootID=0

'获取新父栏目的子栏目中的当前类别的前一栏目
newPrevClassOrderID=conn.execute("select Max(ClassOrderID) from SoftClass where ParentID=0")(0)
PrevClassID=conn.execute("select ClassID,ClassOrderID from SoftClass where ClassOrderID="&newPrevClassOrderID&" and ParentID=0")(0)
response.Write("<br>前一顶类栏目的ClassID"&PrevClassID)
conn.execute("Update SoftClass set NextID="&ClassID&" where ClassID="&PrevClassID)
newClassOrderID=newPrevClassOrderID+1
response.Write("<br>根栏目中的当前栏目的排序:"&newClassOrderID)
'获取同一顶类栏目中的排列顺序
newRootOrderID=1

newMaxOrderID=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '0,"&PrevClassID&",%'")(0)
if newMaxOrderID=oldOrderID then
newOrderID=newMaxOrderID
else
newOrderID=newMaxOrderID-TotalMovingNumber
end if
set rs1=nothing
'更新历史同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID-"&TotalMovingNumber&" where RootOrderID>"&oldRootOrderID&" and RootID="&oldRootID&" and (ParentIDPath not like '"&oldParentIDPath&",%')")
if newOrderID<>oldOrderID then
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newOrderID&" and (ParentIDPath not like '"&oldParentIDPath&",%')")
end if

'批量更新所有移动的子栏目的排序
set rs=conn.execute("select * From SoftClass where ParentIDPath like '"&oldParentIDPath&",%'")
i=0
do while not rs.eof
if rs("ClassDepth")>1 then
tempParentIDPath=replace(rs("ParentIDPath"),oldParentIDPath,"0,")
conn.execute("update SoftClass set ClassDepth=ClassDepth-"&oldClassDepth&"+1,RootOrderID="&newRootOrderID&"+"&i&",RootID="&ClassID&",ParentIDPath='"&tempParentIDPath&"'")
end if
rs.movenext
i=i+1
loop
rs.close
set rs=nothing

'******************************************
'类别由N级别移动到N级别(N>1)
'******************************************
ELSE '(oldParentID>0 and newParentClassRootID>0)
'分移动到相同顶类的栏目跟不同顶类的栏目下
'移动到不同顶类目录下分往前移动和往后移动两类
newClassDepth=newParentClassDepth+1

if oldRootID<>newParentClassRootID then

'分顶类栏目往前移动和往后移动
oldTopClassOrderID=Clng(conn.execute("select ClassOrderID,ClassID from SoftClass where RootID="&oldRootID)(0))
if oldTopClassOrderID>newParentClassOrderID then
MovetoBehind=0'顶类栏目往前移动
else
MovetoBehind=1'顶类栏目往后移动
end if

'查询当前移动栏目的子类别数量
set rs1=conn.execute("select Count(*) from SoftClass where ParentIDPath like '"&oldParentIDPath&","&ClassID&",%'")
if isnull(rs1(0)) then
ChildClassNumber=0
else
ChildClassNumber=rs1(0)
end if
set rs1=nothing
TotalMovingNumber=ChildClassNumber+1
MaxOldChildOrderID=oldOrderID+ChildClassNumber

if newParentClassChild>0 then'移动到包含子栏目的N级类别下
'*************************************************************
'不同顶类栏目中的N级栏目移动到别的包含子栏目N级栏目下
'*************************************************************
response.Write("<br>不同顶类栏目中的N级栏目移动到别的包含子栏目N级栏目下:")
'获取新父栏目的子栏目中的当前类别的前一栏目
PrevClassID=conn.execute("select Max(ClassID) from SoftClass where ParentID="&newParentClassID)(0)
conn.execute("Update SoftClass set NextID="&ClassID&" where ClassID="&PrevClassID)
'获取同一父类栏目中的排列顺序
newPrevClassOrderID=conn.execute("select Max(ClassOrderID) from SoftClass where ParentID="&newParentClassID)(0)

newClassOrderID=newPrevClassOrderID+1

'获取同一顶类栏目中的排列顺序
set rs1=conn.execute("select Max(RootOrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxRootOrderID=rs1(0)
end if
newRootOrderID=newMaxRootOrderID+1
set rs1=nothing
response.Write("<br>前一栏目的RootOrderID"&newMaxRootOrderID)

if MovetoBehind=0 then'移动栏目包含子栏目且其顶类栏目往前移动
'获取所有栏目中的排列顺序
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID+1
set rs1=nothing
response.Write("<br>前一栏目的OrderID"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassRootID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID+"&TotalMovingNumber&" where OrderID>"&newOrderID&" and OrderID<"&MaxOldChildOrderID&" and ParentIDPath not like '"&oldParentIDPath&","&ClassID&",%' ")
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
'更新同一父栏目的上一个栏目的“NextID”字段值
conn.execute("update SoftClass set NextID=" & ClassID & " where ClassID=" & PrevClassID)

else'移动栏目包含子栏目且其顶类栏目往后移动

set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID-TotalMovingNumber
set rs1=nothing
response.Write("<br>前一栏目的OrderID"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassRootID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and (ParentIDPath not like '"&newParentClassIDPath&","&ClassID&",%')")
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
'更新同一父栏目的上一个栏目的“NextID”字段值
conn.execute("update SoftClass set NextID=" & ClassID & " where ClassID=" & PrevClassID)
end if

else'移动到不包含子栏目的N级类别下
'*************************************************************
'不同顶类栏目中的N级栏目移动到别的不包含子栏目N级栏目下
'*************************************************************
response.Write("<br>不同顶类栏目中的N级栏目移动到别的不包含子栏目N级栏目下:")
PrevClassID=0
'获取同一父类栏目中的排列顺序
newClassOrderID=1
'获取同一顶类栏目中的排列顺序
set rs1=conn.execute("select Max(RootOrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&",%'")
if isnull(rs1(0)) then
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxRootOrderID=rs1(0)
end if
newRootOrderID=newMaxRootOrderID+1
set rs1=nothing
response.Write("<br>前一栏目的RootOrderID"&newMaxRootOrderID)

if MovetoBehind=0 then'移动栏目不包含子栏目且其顶类栏目往前移动
'获取所有栏目中的排列顺序
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID+1
set rs1=nothing
response.Write("<br>前一栏目的OrderID"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassRootID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID+"&TotalMovingNumber&" where OrderID>"&newMaxOrderID&" and OrderID<"&oldOrderID)
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and (ParentIDPath not like '"&newParentClassIDPath&","&ClassID&",%')")
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)

else'移动栏目不包含子栏目且其顶类栏目往后移动
'获取所有栏目中的排列顺序
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID-TotalMovingNumber
set rs1=nothing
response.Write("<br>前一栏目的OrderID"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and ParentIDPath like '0,"&newParentClassRootID&",%'")
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and (ParentIDPath not like '"&newParentClassIDPath&","&ClassID&",%')")
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)

end if

end if'不同顶类N层栏目移动的代码结束

'**********************************
'要移动的栏目在相同顶类栏目之间移动
'**********************************
else
'查询当前移动栏目的子类别数量
set rs1=conn.execute("select Count(*) from SoftClass where ParentIDPath like '"&oldParentIDPath&","&ClassID&",%'")
if isnull(rs1(0)) then
ChildClassNumber=0
else
ChildClassNumber=rs1(0)
end if
set rs1=nothing
TotalMovingNumber=ChildClassNumber+1

if newParentClassChild>0 then'移动到包含子栏目的N级类别下
'*************************************************************
'相同顶类栏目中的N级栏目移动到别的包含子栏目N级栏目下
'*************************************************************
response.Write("<br>同一顶类栏目中的N级栏目移动到别的包含子栏目N级栏目下:")
'获取新父栏目的子栏目中的当前类别的前一栏目
PrevClassOrderID=conn.execute("select Max(ClassOrderID) from SoftClass where ParentID="&newParentClassID)
PrevClassID=conn.execute("select ClassID,ClassOrderID from SoftClass where ParentID="&newParentClassID&" and ClassOrderID="&PrevClassOrderID)
conn.execute("Update SoftClass set NextID="&ClassID&" where ClassID="&PrevClassID)
'获取同一父类栏目中的排列顺序
newPrevClassOrderID=conn.execute("select Max(ClassOrderID) from SoftClass where ParentID="&newParentClassID)(0)

newClassOrderID=newPrevClassOrderID+1

'获取同一顶类栏目中的排列顺序
set rs1=conn.execute("select Max(RootOrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxRootOrderID=rs1(0)
end if
newRootOrderID=newMaxRootOrderID+1
set rs1=nothing
response.Write("<br>前一栏目的RootOrderID"&newMaxRootOrderID)

if oldClassOrderID>newParentClassOrderID then'同一顶类栏目中移动栏目包含子栏目且往前移动
'获取所有栏目中的排列顺序
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID+1
set rs1=nothing
response.Write("<br>前一栏目的OrderID"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and RootOrderID<"&oldRootOrderID&" and RootID="&oldRootID)
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID+"&TotalMovingNumber&" where OrderID>"&newMaxOrderID&" and OrderID<"&oldOrderID&" and RootID="&oldRootID)
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
'更新同一父栏目的上一个栏目的“NextID”字段值
conn.execute("update SoftClass set NextID=" & ClassID & " where ClassID=" & PrevClassID)

else'移动栏目包含子栏目且其顶类栏目往后移动

set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&","&PrevClassID&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&PrevClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID-TotalMovingNumber
set rs1=nothing
response.Write("<br>前一栏目的OrderID"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and RootOrderID<"&oldRootOrderID&" and RootID="&oldRootID)
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and RootID="&oldRootID)
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
'更新同一父栏目的上一个栏目的“NextID”字段值
conn.execute("update SoftClass set NextID=" & ClassID & " where ClassID=" & PrevClassID)
end if

else'移动到不包含子栏目的N级类别下
'*************************************************************
'相同顶类栏目中的N级栏目移动到别的不包含子栏目N级栏目下
'*************************************************************
response.Write("<br>同一顶类栏目中的N级栏目移动到别的不包含子栏目N级栏目下:")
PrevClassID=0
'获取同一父类栏目中的排列顺序
newClassOrderID=1
'获取同一顶类栏目中的排列顺序
set rs1=conn.execute("select Max(RootOrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&",%'")
if isnull(rs1(0)) then
newMaxRootOrderID=conn.execute("select RootOrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxRootOrderID=rs1(0)
end if
newRootOrderID=newMaxRootOrderID+1
set rs1=nothing
response.Write("<br>前一栏目的RootOrderID:"&newMaxRootOrderID)
if oldClassOrderID>newParentClassOrderID then'移动栏目不包含子栏目且其顶类栏目往前后移动
'获取所有栏目中的排列顺序
set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID+1
set rs1=nothing
response.Write("<br>前一栏目的OrderID:"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" where RootOrderID>"&newMaxRootOrderID&" and RootOrderID<"&oldRootOrderID&" and RootID="&oldRootID)
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID+"&TotalMovingNumber&" where OrderID>"&newMaxOrderID&" and OrderID<"&oldOrderID)
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and RootID="&oldRootID)
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)

else'移动栏目不包含子栏目且其顶类栏目往后移动

set rs1=conn.execute("select Max(OrderID) from SoftClass where ParentIDPath like '"&newParentClassIDPath&",%'")
if isnull(rs1(0)) then
newMaxOrderID=conn.execute("select OrderID,ClassID from SoftClass where ClassID="&newParentClassID)(0)
else
newMaxOrderID=rs1(0)
end if
newOrderID=newMaxOrderID-TotalMovingNumber
set rs1=nothing
response.Write("<br>前一栏目的OrderID:"&newMaxOrderID)
'更新同一顶类栏目的RootOrderID
conn.execute("update SoftClass set RootOrderID=RootOrderID+"&TotalMovingNumber&" RootOrderID>"&newMaxRootOrderID&" and RootOrderID<"&oldRootOrderID&" and RootID="&oldRootID)
'更新所有栏目的OrderID
conn.execute("update SoftClass set OrderID=OrderID-"&TotalMovingNumber&" where OrderID>"&oldOrderID&" and OrderID<="&newMaxOrderID&" and RootID="&oldRootID)
'更新父栏目中的子栏目数量
conn.execute("Update SoftClass Set Child=Child+1 where ClassID="&newParentClassID)
end if'同一顶类栏目中移动栏目

end if'移动到包含与不包含子栏目的N级类代码结束

END IF
END IF
END IF
'移动栏目资料修改结束

'创建对应的类别目录
if IsCreateFolder=1 then
response.Write("<br>"&ClassLocalPath)
CreateFolder ClassLocalPath,IsCreateFolder
end if


'更新数据库对应类别的字段值

UserIP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If UserIP = "" Then UserIP = Request.ServerVariables("REMOTE_ADDR")
UserFrom=Cstr(Request.ServerVariables("HTTP_REFERER"))

CorrectSqlClassFolderName=replace(ClassFolderName,"'","''")
CorrectSqlClassName=replace(ClassName,"'","''")
set rs=server.CreateObject("Adodb.recordset")
sql="select * from SoftClass where ClassID="&ClassID
rs.open sql,conn,3,3
if rs.eof and rs.bof then
rs.close
set rs=nothing
conn.close
set conn=nothing
response.write("<script>alert('栏目类别数据不存在!系统即将返回');history.go(-1);</script>")
response.end
else
rs("ChannelID")=ChannelID
rs("ChannelName")=ChannelName
rs("ChannelFolderPath")=ChannelFolderPath
rs("ChannelFolderUrl")=ChannelFolderUrl

rs("ParentName")=newParentClassName
rs("ParentID")=newParentClassID


rs("ClassName")=ClassName
rs("ClassFolderName")=ClassFolderName
rs("ClassFolderPath")=ClassFolderPath
rs("ClassLocalPath")=ClassLocalPath

rs("ClassDepth")=newClassDepth
if newClassDepth>0 then
rs("RootID")=newParentClassID
else
rs("RootID")=0
end if

rs("ClassMemo")=ClassMemo
rs("ClassKeyWords")=ClassKeyWords
rs("ClassDescription")=ClassDescription
rs("IsCreateFolder")=IsCreateFolder

if rstUpdateQuried=1 then

rs("PrevID")=PrevClassID
rs("OrderID")=newOrderID
rs("RootOrderID")=newRootOrderID
rs("ClassOrderID")=newClassOrderID
end if

rs("UpdateUser")=Session("ManagerUserName")
rs("UpdateTime")=now()
rs("UpdateIP")=UserIP
rs("UpdateFrom")=UserFrom
rs.update
end if
rs.close
set rs=nothing

conn.close
set conn=nothing
response.write("<br>栏目类别"&ClassName&"修改完成!系统即将返回列表<a href='ClassList.asp'>点这里返回</a>")
response.End()
response.write("<script>alert('栏目类别"&ClassName&"修改完成!系统即将返回列表');location.href='ClassList.asp';</script>")
response.End()

end if

%>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值