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

本文介绍了一个ASP.NET中使用DropDownList控件进行数据绑定的例子。通过查询数据库获取分类信息,并将其填充到DropDownList控件中,实现了下拉菜单的动态生成。特别地,文章展示了如何递归获取子类别的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  #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

转载于:https://www.cnblogs.com/luxp/p/3245978.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值