模拟分级显示的下拉框
/// <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,"一级分类"});//假定顶级节点只有一个,并且ParentID为0
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("┣","┃")+"┣");
}
浙公网安备 33010602011771号