#region 绑定类别=================================
private void TreeBind(int _channel_id)
{
DataTable dt = GetList(0, _channel_id);
this.ddlCategoryId.Items.Clear();
this.ddlCategoryId.Items.Add(new ListItem("所有类别", ""));
foreach (DataRow dr in dt.Rows)
{
string Id = dr["id"].ToString();
int ClassLayer = int.Parse(dr["class_layer"].ToString());
string Title = dr["title"].ToString().Trim();
if (ClassLayer == 1)
{
this.ddlCategoryId.Items.Add(new ListItem(Title, Id));
}
else
{
Title = "├ " + Title;
Title = DESEncrypt.StringOfChar(ClassLayer - 1, " ") + Title;
this.ddlCategoryId.Items.Add(new ListItem(Title, Id));
}
}
}
#endregion
public DataTable GetList(int parent_id, int channel_id)
{
DataSet ds = DB.Query("select * from category where channel_id=" + channel_id);
DataTable oldData = ds.Tables[0] as DataTable;
if (oldData == null)
{
return null;
}
DataTable newData = oldData.Clone();
GetChilds(oldData, newData, parent_id, channel_id);
return newData;
}
private void GetChilds(DataTable oldData, DataTable newData, int parent_id, int channel_id)
{
DataRow[] dr = oldData.Select("parent_id=" + parent_id);
for (int i = 0; i < dr.Length; i++)
{
DataRow row = newData.NewRow();
row["id"] = int.Parse(dr[i]["id"].ToString());
row["channel_id"] = int.Parse(dr[i]["channel_id"].ToString());
row["title"] = dr[i]["title"].ToString();
row["class_layer"] = int.Parse(dr[i]["class_layer"].ToString());
row["content"] = dr[i]["content"].ToString();
row["parent_id"] = int.Parse(dr[i]["parent_id"].ToString());
newData.Rows.Add(row);
//调用自身迭代
this.GetChilds(oldData, newData, int.Parse(dr[i]["id"].ToString()), channel_id);
}
}
Hrml代码:
请选择:<asp:DropDownList
ID="ddlCategoryId" runat="server" CssClass="select2" AutoPostBack="True" ></asp:DropDownList><br />
数据库设计:参考动易CMS