东儿童
爱拼才会赢

DropDownList实现无限分级


数据库:SqlServer2000
表:tree
表结构:


测试数据:


算法:使用递归实现

======================================

asp.net代码:

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

namespace AspNetTest.Common
{
 /// <summary>
 /// tree 的摘要说明。
 /// </summary>

 public class tree : System.Web.UI.Page
 {


  private DataTable dtPowerTree = new DataTable();
  private DataTable dt=new DataTable();
  protected System.Web.UI.WebControls.DropDownList DropDownList1;
  protected System.Web.UI.WebControls.TextBox TextBox1;
  const string tablename = "tree";
  protected System.Web.UI.WebControls.DropDownList DropDownList2;
  private string strText;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   if(!Page.IsPostBack)
   {
    FillTreeDataTable();
    blTreeDataTable(0);
    dtPowerTree.Clear();   

   }
         
   // 在此处放置用户代码以初始化页面
  }
  private void FillTreeDataTable()
  {
   string ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];
   SqlConnection conn = new SqlConnection(ConnectionString);
   SqlDataAdapter da = new SqlDataAdapter("select Id,PowerName,Layer,ParentId from " + tablename, conn);
   da.Fill(dtPowerTree);
  }
  private void blTreeDataTable(int _ParentId)
  {
   string filter = "ParentId=" + _ParentId;
   string sort = "Id ASC";
   DataRow[] drs = dtPowerTree.Select(filter, sort);
   for(int i=0; i<drs.Length; i++)
   {
    if(Convert.ToInt32(drs[i][3]) == _ParentId)
    {
     int Id = Convert.ToInt32(drs[i][0]);
     string PowerName = drs[i][1].ToString();
     int Layer = Convert.ToInt32(drs[i][2]);

     for(int n=1;n<=Layer; n++)
     {
      strText +=  HttpUtility.HtmlDecode("&nbsp;&nbsp;");
      
     }

     if(_ParentId!=0)
     {

 

      DropDownList1.Items.Add(new ListItem(strText+"┣"+PowerName,Id.ToString()));
      strText="";
     }
     else
     {

      DropDownList1.Items.Add(new ListItem(PowerName,Id.ToString()));
     }

     
  
     blTreeDataTable(Id);
    }
   }
  }

 

posted on 2008-05-20 21:12  哎!无悔  阅读(285)  评论(1)    收藏  举报