无限分类
来源:互联网 发布:java 递归二分法 编辑:程序博客网 时间:2024/04/28 00:25
ASP.NET无限分类
作者:蝙蝠 日期:2006-06-12
字体大小: 小 中 大
<script type="text/javascript"><!--google_ad_client = "pub-1962657149275668";google_ad_width = 728;google_ad_height = 90;google_ad_format = "728x90_as";google_ad_type = "text_image";//2006-12-16: 上边google_ad_channel = "3842754409";google_color_border = "F4F4F4";google_color_bg = "F4F4F4";google_color_link = "0000FF";google_color_text = "000000";google_color_url = "008000";//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script><iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1962657149275668&dt=1178674165859&lmt=1178674165&format=728x90_as&output=html&channel=3842754409&url=http%3A%2F%2Fwww.leafweb.cn%2Farticle.asp%3FID%3D1416%26pages%3D2&color_bg=F4F4F4&color_text=000000&color_link=0000FF&color_url=008000&color_border=F4F4F4&ad_type=text_image&ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fcomplete%3D1%26hl%3Dzh-CN%26newwindow%3D1%26q%3Dasp.net%2B%25E6%2597%25A0%25E9%2599%2590%25E5%2588%2586%25E7%25B1%25BB%26meta%3D&cc=100&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="728" scrolling="no" height="90" allowtransparency="allowtransparency"></iframe>
我参考上面的代码改成了asp.net版本的无限分类.开始遇到了语法上的限制.当时的处理是直接把rs换成SqlDataReader,然后加以修改,代码如下(错误代码):
测试数据库的表Tree结构是:id,ParentID,Name。
错误原因是SqlDataReader每次使用之后都需要关闭,所以DataReader是不可以嵌套使用的.
后来我改成了用DataTable的形式实现了无限分类,但是感觉这种方式的效率不高,需要改进(还在研究中)
修改后的代码如下:
虽然是实现了无限分类,但是效率还是挺低,努力探索更高的效率。
我参考上面的代码改成了asp.net版本的无限分类.开始遇到了语法上的限制.当时的处理是直接把rs换成SqlDataReader,然后加以修改,代码如下(错误代码):
测试数据库的表Tree结构是:id,ParentID,Name。
1private void Display(string parentid/**//*, int rank*/)
2 {
3 SqlDataReader dr;
4 SqlCommand cmd;
5 String strSQL;
6
7 strSQL = "Select * From Tree Where ParentID =" + parentid + "Order By ID DESC";
8 cmd = new SqlCommand(strSQL,conn);
9 //cmd.Connection.Open();
10
11 using(dr = cmd.ExecuteReader())
12 {
13 while(dr.Read())
14 {
15 Response.Write(dr["Name"].ToString() + "<br>");
16 Display(dr["ID"].ToString());
17 }
18 }
19 cmd.Connection.Close();
20 }
调用使用Display("0").2 {
3 SqlDataReader dr;
4 SqlCommand cmd;
5 String strSQL;
6
7 strSQL = "Select * From Tree Where ParentID =" + parentid + "Order By ID DESC";
8 cmd = new SqlCommand(strSQL,conn);
9 //cmd.Connection.Open();
10
11 using(dr = cmd.ExecuteReader())
12 {
13 while(dr.Read())
14 {
15 Response.Write(dr["Name"].ToString() + "<br>");
16 Display(dr["ID"].ToString());
17 }
18 }
19 cmd.Connection.Close();
20 }
错误原因是SqlDataReader每次使用之后都需要关闭,所以DataReader是不可以嵌套使用的.
后来我改成了用DataTable的形式实现了无限分类,但是感觉这种方式的效率不高,需要改进(还在研究中)
修改后的代码如下:
1private void Display(string parentid, String space)
2 {
3 DataTable dt;
4 String strSQL;
5 strSQL = "Select * From Tree Where ParentID =" + parentid + " Order By ID DESC";
6
7 SqlDataAdapter sda = new SqlDataAdapter(strSQL, conn);
8 DataSet ds = new DataSet();
9 sda.Fill(ds, "Tree");
10 dt = ds.Tables["Tree"];
11
12 if (dt.Rows.Count > 0)
13 {
14 foreach (DataRow dr in dt.Rows)
15 {
16 strOpinion += space + "<font color=red>[" + dr["Name"].ToString() +"<br>";
17 Display(dr["ID"].ToString(), " " + space, false);
18 }
19 }
20 }
调用时候使用Display("0","↓→→")。2 {
3 DataTable dt;
4 String strSQL;
5 strSQL = "Select * From Tree Where ParentID =" + parentid + " Order By ID DESC";
6
7 SqlDataAdapter sda = new SqlDataAdapter(strSQL, conn);
8 DataSet ds = new DataSet();
9 sda.Fill(ds, "Tree");
10 dt = ds.Tables["Tree"];
11
12 if (dt.Rows.Count > 0)
13 {
14 foreach (DataRow dr in dt.Rows)
15 {
16 strOpinion += space + "<font color=red>[" + dr["Name"].ToString() +"<br>";
17 Display(dr["ID"].ToString(), " " + space, false);
18 }
19 }
20 }
虽然是实现了无限分类,但是效率还是挺低,努力探索更高的效率。
- 无限分类
- 无限分类
- 无限分类
- 无限分类
- 无限分类
- 无限分类
- 无限分类
- 无限分类
- 无限分类
- 树分类,无限极分类
- 无限分类处理类
- 实现无限分类
- 无限级分类
- 无限级分类
- 无限分类算法
- Treeview无限分类解决方案
- DataTable版 无限分类
- 无限级分类
- 精妙Sql语句(总结以前的所有精华)
- “GridView1”激发了未处理的事件“PageIndexChanging”
- SQL Server 2000 JDBC驱动的完整安装及测试说明
- 深入剖析C#继承机制1
- X509证书的编解码
- 无限分类
- JAVASCRIPT精彩200例
- linux ln 命令的使用
- 绕任意轴r转a角的两种实现.
- 深入剖析C#继承机制2
- Effective C++之51
- 做梦记录
- Effective C++之52
- 深入剖析C#继承机制3