|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。asp.net入手下手在网上查找到asp的无穷分类,可是asp.net的几近找不到,找到的也是跟TreeView分离起来的.
找到asp版本的代码有几种,本来都差未几是接纳递回算法.
个中表布局都是以下:
表称号是ClassName
id主键
sid对应的父类的id
ClassName对应种别的称号.
代码段一:
1functionloadNextType(upid,rank)
2dimrs
3setrs="select*fromclassnamewheresid="&upid
4dowhilenotrs.eof
5loadNextType=loadNextType&rs("ClassName")&"<br>"&string("-",rank)&loadNextType(rs("id"),rank+1)
6rs.movenext
7loop
8endfunction挪用时:response.write(loadNextType(0,0))
别的一段代码就跟下面道理就一样的.只不外是到场了树型布局的显现体例.
代码段二:
1界说第一级分类
2submainfl()
3dimrs
4setrs=conn.execute("selectid,F_id,F_namefromClassNaewheresid=0orderbyiddesc")
5ifnotrs.eofthen
6dowhilenotrs.eof
7response.writers(2)&"<br>"
8callsubfl(rs(0)," |-")轮回子级分类
9rs.movenext
10ifrs.eofthenexitdo防上形成逝世轮回
11loop
12endif
13endsub
14界说子级分类
15subsubfl(fid,strdis)
16dimrs1
17setrs1=conn.execute("selectid,sid,ClassNamefromClassNamewheresid="&fid&"orderbyiddesc")
18ifnotrs1.eofthen
19dowhilenotrs1.eof
20response.writers1(2)&"<br>"
21callsubfl(rs1(0)," "&strdis)递回子级分类
22rs1.movenext
23ifrs1.eofthen
24rs1.close
25exitsub
26endif
27loop
28endif
29endsub
我参考下面的代码改成了asp.net版本的无穷分类.入手下手碰到了语法上的限定.事先的处置是间接把rs换成SqlDataReader,然后加以修正,代码以下(毛病代码):
测试数据库的表Tree布局是:id,ParentID,Name。
1privatevoidDisplay(stringparentid/**//*,intrank*/)
2{
3SqlDataReaderdr;
4SqlCommandcmd;
5StringstrSQL;
6
7strSQL="Select*FromTreeWhereParentID="+parentid+"OrderByIDDESC";
8cmd=newSqlCommand(strSQL,conn);
9//cmd.Connection.Open();
10
11using(dr=cmd.ExecuteReader())
12{
13while(dr.Read())
14{
15Response.Write(dr["Name"].ToString()+"<br>");
16Display(dr["ID"].ToString());
17}
18}
19cmd.Connection.Close();
20}挪用利用Display("0").
毛病缘故原由是SqlDataReader每次利用以后都必要封闭,以是DataReader是不成以嵌套利用的.
厥后我改成了用DataTable的情势完成了无穷分类,可是感到这类体例的效力不高,必要改善(还在研讨中)
修正后的代码以下:
1privatevoidDisplay(stringparentid,Stringspace)
2{
3DataTabledt;
4StringstrSQL;
5strSQL="Select*FromTreeWhereParentID="+parentid+"OrderByIDDESC";
6
7SqlDataAdaptersda=newSqlDataAdapter(strSQL,conn);
8DataSetds=newDataSet();
9sda.Fill(ds,"Tree");
10dt=ds.Tables["Tree"];
11
12if(dt.Rows.Count>0)
13{
14foreach(DataRowdrindt.Rows)
15{
16strOpinion+=space+"<fontcolor=red>["+dr["Name"].ToString()+"<br>";
17Display(dr["ID"].ToString(),""+space,false);
18}
19}
20}挪用时分利用Display("0","↓→→")。
固然是完成了无穷分类,可是效力仍是挺低,勉力探究更高的效力。
出处:P.DragonsBlog
也不知道,我同学昨天说数据挖掘很好。 |
|