日期:2014-05-17  浏览次数:20540 次

产品类型达到的、三级或者三级以上改怎么修改?
一个[产品]有所属[产品系列],系列有三个级别、或者三个以上。
数据库里面起码包含三个字段:
[自增ID] [产品类型名称] [父ID/级别]

--------
我想做到下面这这种效果,修改或者增加的时候,能获取到[产品系列]的[自增ID],插入到[产品表]里面



绑定[产品系列]的时候,如何显示在页面的DropDownList里面?

------解决方案--------------------
如果你只是想生成一个树形结构的下拉菜单 可以参考

http://www.hisofter.com/show-11-852.aspx

不必在意他生成的不是DropDownList 因为你从后台一样可以用Request.Form("控件名") 获取值。

你也可以参考他的代码 改到ilist数据源里面 这样也可以从DropDownList里面直接绑定。
------解决方案--------------------
C# code

/// <summary>
        /// 樹形DRP
        /// </summary>
        /// <param name="list">ddl控件</param>
        /// <param name="m_DS">數據源</param>
        /// <param name="m_Text">默認顯示</param>
        /// <param name="m_UpFieldId">父ID</param>
        /// <param name="m_FieldId">ID</param>
        /// <param name="m_FieldText">顯示內容</param>
        public static void BindTreeDrp(DropDownList list, System.Data.DataSet m_DS, string m_Text, string m_UpFieldId, string m_FieldId, string m_FieldText)
        {
            System.Data.DataTable dt = m_DS.Tables[0];

            list.Items.Clear();
            if (!string.IsNullOrEmpty(m_Text)) list.Items.Add(new ListItem(m_Text, ""));

            System.Data.DataRow[] drs = dt.Select(m_UpFieldId + "=0");

            foreach (System.Data.DataRow dr in drs)
            {
                string bid = dr[m_FieldId].ToString();
                string bussesname = dr[m_FieldText].ToString();
                list.Items.Add(new ListItem(bussesname, bid));
                int chrid = int.Parse(bid);
                string blank = " ";
                BindNode(list, m_UpFieldId, m_FieldId, m_FieldText, chrid, dt, blank);//绑定子节点
            }

        }

 private static void BindNode(System.Web.UI.WebControls.DropDownList list, string m_UpFieldID, string m_FieldID, string m_FieldText, int parentid, System.Data.DataTable dt, string blank)
        {
            System.Data.DataRow[] drs = dt.Select(m_UpFieldID + "= " + parentid);

            foreach (System.Data.DataRow r in drs)
            {
                string nodeid = r[m_FieldID].ToString();
                StringBuilder text = new StringBuilder();
                text.Append(blank);
                text.Append(r[m_FieldText].ToString());

                list.Items.Add(new ListItem(text.ToString(), nodeid));
                int sonparentid = System.Int32.Parse(nodeid);
                StringBuilder blank2 = new StringBuilder();
                blank2.Append(blank);
                blank2.Append(" ");
                BindNode(list, m_UpFieldID, m_FieldID, m_FieldText, sonparentid, dt, blank2.ToString());
            }
        }

------解决方案--------------------
一个无限递归