模拟分级显示的下拉框

 

/// <summary>

/// 模拟分级显示的下拉框 的摘要说明。

/// </summary>

public class 模拟分级显示的下拉框 : System.Web.UI.Page

{

protected System.Web.UI.WebControls.DropDownList DropDownList1;

 

private void Page_Load(object sender, System.EventArgs e)

{

// 在此处放置用户代码以初始化页面

if(!IsPostBack)

{

DataTable myData = this.GetDataFromDB();

 

CreateLevelDropDown(this.DropDownList1,myData);

}

}

 

/// <summary>

/// 模拟一些调试数据,实际应用改为从数据库读取

/// </summary>

/// <returns></returns>

private DataTable GetDataFromDB()

{

DataTable dt = new DataTable();

dt.Columns.Add("classID",typeof(string));

dt.Columns.Add("PID",typeof(string));

dt.Columns.Add("className",typeof(string));

dt.Rows.Add(new object[]{1,0,"一级分类"});//假定顶级节点只有一个,并且ParentID0

dt.Rows.Add(new object[]{2,1,"二级分类1"});

dt.Rows.Add(new object[]{3,1,"二级分类2"});

dt.Rows.Add(new object[]{4,3,"三级分类2"});

dt.Rows.Add(new object[]{5,1,"二级分类3"});

dt.Rows.Add(new object[]{6,5,"三级分类3"});

dt.Rows.Add(new object[]{7,6,"四级分类3"});

dt.Rows.Add(new object[]{8,3,"三级AAAA"});

dt.Rows.Add(new object[]{9,3,"三级BBBB"});

dt.Rows.Add(new object[]{10,1,"二级ZZZZ"});

dt.AcceptChanges();

 

 

return dt;

}

 

/// <summary>

/// 创建分级下拉框

/// </summary>

private void CreateLevelDropDown(DropDownList ddlst,DataTable dt)

{

System.Collections.ArrayList allItems = new ArrayList();

DataRow[] rows = dt.Select("[pID]='0'");

foreach(DataRow row in rows)

CreateLevelDropDownAssistant(dt,ref allItems,row,string.Empty);

 

ListItem[] items = new ListItem[allItems.Count];

allItems.CopyTo(items);

ddlst.Items.AddRange(items);

}

private void CreateLevelDropDownAssistant(DataTable dt,ref ArrayList items,DataRow parentRow,string curHeader)

{

ListItem newItem = new ListItem(curHeader+parentRow["className"].ToString(),parentRow["classID"].ToString());

items.Add(newItem);

parentRow.Delete();

 

DataRow[] rows = dt.Select("[pID]='"+newItem.Value+"'");

for(int i=0;i<rows.Length-1;i++)

CreateLevelDropDownAssistant(dt,ref items,rows[i],curHeader.Replace("","").Replace(""," ")+"");

 

if(rows.Length>0)

CreateLevelDropDownAssistant(dt,ref items,rows[rows.Length-1],curHeader.Replace("","").Replace("",".")+"");

 

//foreach(DataRow row in rows)

//CreateLevelDropDownAssistant(dt,ref items,row,curHeader.Replace("","")+"");

}

posted on 2007-06-12 10:54  笨熊丢丢  阅读(428)  评论(0)    收藏  举报

导航