一个[产品]有所属[产品系列],系列有三个级别、或者三个以上。
数据库里面起码包含三个字段:
[自增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()); } }
------解决方案--------------------------------------------------------
一个无限递归