.net目录菜单,绑定目录类别。

  #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

posted @ 2013-08-08 15:50  小新+  阅读(187)  评论(0)    收藏  举报