网络编程
位置:首页>> 网络编程>> Asp编程>> 整理一个asp多级树型分类问题的解决方法(4)

整理一个asp多级树型分类问题的解决方法(4)

 来源:csdn 发布时间:2007-10-17 18:38:00 

标签:树,分类,asp

修改后的GetChildren就可以完成显示FID分类的所有子分类的任务。要显示所有的分类,只需要如此调用就可以了:


<% 
REM  strConn--连接数据库的字符串,请根据情况修改 
set  oConn  =  Server.CreateObject("ADODB.Connection") 
oConn.Open  strConn 
=GetChildren(oConn,-1) 
oConn.Close 
%>


如何查找某个分类的所有产品;

现在来解决我们在前面提出的第四个问题。我们假设产品的数据表如下定义:


Create  Table  Product(
 [ID]  [int]  NOT  NULL,
 [Name]  [nvchar]  NOT  NULL,
 [FatherID]  [int]  NOT  NULL
);


 


其中,ID是产品的编号,Name是产品的名称,而FatherID是产品所属的分类。
对第四个问题,很容易想到的办法是:先找到这个分类FID的所有子类,然后查询所有子类下的所有产品。实现这个算法实际上很复杂。代码大致如下:



<% 
Function  GetAllID(oConn,FID) 
 Dim  strTemp 
  
 If  FID=-1  then 
   strTemp  =  "" 
 else 
   strTemp  ="," 
 end  if 
  
 strSQL  =  "select  Name  from  catalog  where  FatherID="&FID 
 set  rsCatalog  =  oConn.Execute(strSQL) 
 Do  while  not  rsCatalog.Eof   
   strTemp=strTemp&rsCatalog("ID")&GetAllID(oConn,Catalog("ID"))    REM  递归调用 
 Loop 
 rsCatalog.Close 
  
 GetAllID  =  strTemp 
End  Function 
  
REM  strConn--连接数据库的字符串,请根据情况修改 
set  oConn  =  Server.CreateObject("ADODB.Connection") 
oConn.Open  strConn 
  
FID  =  Request.QueryString("FID") 
  
strSQL  =  "select  top  100  *  from  Product  where  FatherID  in  ("&GetAllID(oConn,FID)&")" 
set  rsProduct=oConn.Execute(strSQL) 
%> 
<UL><% 
Do  while  not  rsProduct.EOF 
%> 
 <LI><%=rsProduct("Name")%> 
<%   
Loop 
%> 
</UL> 
<%rsProduct.Close 
oConn.Close   
%>



0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com