IList<T>实现树形下拉列表 我用sqldatareader 查询出相关信息后,放入IList<实体>中。我想实现 树形 的下拉列表 请问如何实现(请贴上原代码)不够加分都可以,只有能解决,有源代码。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个跟IList没啥关系,ILis只是数据源按规律递归添加显示文本,下级文本前可以加— [size=11px][size=10px]//实体层 /// <summary> /// 实体类Sys_Depart 。(属性说明自动提取数据库字段的描述信息) /// </summary> [Serializable] public class Sys_Depart { public Sys_Depart() { } #region Model private int _oid; private string _deptid; private string _deptname; private string _shortname; private Guid _parentid; private string _re; /// <summary> /// 系统编号(自增) /// </summary> public int OID { set { _oid = value; } get { return _oid; } } /// <summary> /// 组织机构ID /// </summary> public string DeptID { set { _deptid = value; } get { return _deptid; } } /// <summary> /// 组织机构名称 /// </summary> public string DeptName { set { _deptname = value; } get { return _deptname; } } /// <summary> /// 组织机构简称 /// </summary> public string ShortName { set { _shortname = value; } get { return _shortname; } } /// <summary> /// 上级ID /// </summary> public Guid ParentID { set { _parentid = value; } get { return _parentid; } } /// <summary> /// 备注 /// </summary> public string Re { set { _re = value; } get { return _re; } } #endregion Model }//数据层的方法 public IList<Sys_Depart> getlist() { StringBuilder sb = new StringBuilder(); sb.Append("SELECT [OID],[DeptID],[DeptName],[ShortName],[ParentID],[Re]"); sb.Append(" FROM [dbo].[Sys_Depart] "); SqlParameter[] PMS = null; IList<Sys_Depart> listEntity = new List<Sys_Depart>(); Sys_Depart Entity= null; using (SqlDataReader Dr = (SqlDataReader) this.Session.ExecuteReader(CommandType.Text, sb.ToString(), PMS)) { while (Dr.Read()) { Entity = new Sys_Depart(); if (!ComFun.IsDBNull(Dr["OID"]))//comFun.IsDBNull是自己写的函数,是否为空 { Entity.OID =int.Pase(Dr["OID"].ToString()); } if (!ComFun.IsDBNull(Dr["DeptID"])) { Entity.DeptID = Dr["DeptID"].ToString(); } if (!ComFun.IsDBNull(Dr["DeptName"])) { Entity.DeptName = Dr["DeptName"].ToString(); } if (!ComFun.IsDBNull(Dr["ShortName"])) { Entity.ShortName = Dr["ShortName"].ToString(); } if (!ComFun.IsDBNull(Dr["ParentID"])) { Entity.ParentID = new Guid(Dr["ParentID"].ToString()); } if (!ComFun.IsDBNull(Dr["Re"])) { Entity.Re = Dr["Re"].ToString(); } listEntity.Add(Entity); } if (!Dr.IsClosed) Dr.Close(); } return listEntity; }现在我想实现ILIST<实体> 用树形方式的下拉列表显示!!!!!!!! protected void Page_Load(object sender, EventArgs e) { List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); list.Add(4); list.Add(5); DropDownList1.DataSource = list; DropDownList1.DataBind(); } protected void Page_Load(object sender, EventArgs e) { IList<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(3); list.Add(4); list.Add(5); DropDownList1.DataSource = list; DropDownList1.DataBind(); } 额 数据库中都有父类ID了 你就把父类的ID用ADD添加上 然后子类的文件用递归添加 private void TreeViewBind() { for (int i = 0; i < List.Count; i++) { if (List[i].ParentID == null) { TreeNode level1Node = new TreeNode(); level1Node.Text = List[i].Name; level1Node.Value = List[i].ID.ToString(); tv.Nodes.Add(level1Node); InitialTree(level1Node, List[i].ID); } } }//递归的方法private void InitialTree(TreeNode parentNode, int Id) { for (int i = 0; i < List.Count; i++) { if (List[i].ID == parentId) { TreeNode childNode = new TreeNode(); childNode.Text = List[i].Name; childNode.Value = List[i].ID.ToString(); InitialTree(childNode, List[i].ID); parentNode.ChildNodes.Add(childNode); } } }List是查询出的数据 public class DDLDepartment : DropDownList { private bool _blank; public DDLDepartment() { bind(this, 0); this.Items.Insert(0, new ListItem("==请选择==", "")); } public void bind(DropDownList ddlDepartment, int parent) { IList<Department> deptlist = DepartmentBLL.SelectChild(parent); foreach (Department dept in deptlist) { string text = new string(' ', dept.Depth - 1); text += "└" + dept.DeptName; ddlDepartment.Items.Add(new ListItem(text, dept.DeptId.ToString())); bind(this, dept.DeptNo); } } public bool Blank { set { _blank = value; if (value == false) this.Items.RemoveAt(0); } get { return _blank; } } }Department为实体类 定时器统计排行榜刷新内容 找个好点的短信发送平台 储存过程返回多个数据集 怎么绑定到GridView里显示 asp.net 读取Excel 格式问题 如何获得 Panel 中的文本内容?? 怎样直接从数据库中导出excel? 阿里巴巴那样的注册效果是怎么样做出来的? 请教 孟子E章 js问题 求购一套2-3万的财务软件 sql2005新建sql server注册 VSS配置登陆问题 运行项目时出现Unable to connect to the ASP.NET Development Server
按规律递归添加
显示文本,下级文本前可以加—
//实体层
/// <summary>
/// 实体类Sys_Depart 。(属性说明自动提取数据库字段的描述信息)
/// </summary>
[Serializable]
public class Sys_Depart
{
public Sys_Depart()
{ }
#region Model
private int _oid;
private string _deptid;
private string _deptname;
private string _shortname;
private Guid _parentid;
private string _re;
/// <summary>
/// 系统编号(自增)
/// </summary>
public int OID
{
set { _oid = value; }
get { return _oid; }
}
/// <summary>
/// 组织机构ID
/// </summary>
public string DeptID
{
set { _deptid = value; }
get { return _deptid; }
}
/// <summary>
/// 组织机构名称
/// </summary>
public string DeptName
{
set { _deptname = value; }
get { return _deptname; }
}
/// <summary>
/// 组织机构简称
/// </summary>
public string ShortName
{
set { _shortname = value; }
get { return _shortname; }
}
/// <summary>
/// 上级ID
/// </summary>
public Guid ParentID
{
set { _parentid = value; }
get { return _parentid; }
}
/// <summary>
/// 备注
/// </summary>
public string Re
{
set { _re = value; }
get { return _re; }
}
#endregion Model }//数据层的方法
public IList<Sys_Depart> getlist()
{
StringBuilder sb = new StringBuilder();
sb.Append("SELECT [OID],[DeptID],[DeptName],[ShortName],[ParentID],[Re]");
sb.Append(" FROM [dbo].[Sys_Depart] ");
SqlParameter[] PMS = null;
IList<Sys_Depart> listEntity = new List<Sys_Depart>();
Sys_Depart Entity= null;
using (SqlDataReader Dr = (SqlDataReader) this.Session.ExecuteReader(CommandType.Text, sb.ToString(), PMS))
{
while (Dr.Read())
{
Entity = new Sys_Depart();
if (!ComFun.IsDBNull(Dr["OID"]))//comFun.IsDBNull是自己写的函数,是否为空
{
Entity.OID =int.Pase(Dr["OID"].ToString());
}
if (!ComFun.IsDBNull(Dr["DeptID"]))
{
Entity.DeptID = Dr["DeptID"].ToString();
}
if (!ComFun.IsDBNull(Dr["DeptName"]))
{
Entity.DeptName = Dr["DeptName"].ToString();
}
if (!ComFun.IsDBNull(Dr["ShortName"]))
{
Entity.ShortName = Dr["ShortName"].ToString();
}
if (!ComFun.IsDBNull(Dr["ParentID"]))
{
Entity.ParentID = new Guid(Dr["ParentID"].ToString());
}
if (!ComFun.IsDBNull(Dr["Re"]))
{
Entity.Re = Dr["Re"].ToString();
}
listEntity.Add(Entity);
}
if (!Dr.IsClosed)
Dr.Close();
}
return listEntity;
}
现在我想实现ILIST<实体> 用树形方式的下拉列表显示!!!!!!!!
{
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
DropDownList1.DataSource = list;
DropDownList1.DataBind();
}
{
IList<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(4);
list.Add(5);
DropDownList1.DataSource = list;
DropDownList1.DataBind();
}
你就把父类的ID用ADD添加上 然后子类的文件用递归添加
}
}
}
//递归的方法
private void InitialTree(TreeNode parentNode, int Id)
{
for (int i = 0; i < List.Count; i++)
{
if (List[i].ID == parentId)
{
TreeNode childNode = new TreeNode();
childNode.Text = List[i].Name;
childNode.Value = List[i].ID.ToString();
InitialTree(childNode, List[i].ID);
parentNode.ChildNodes.Add(childNode);
}
}
}List是查询出的数据
public class DDLDepartment : DropDownList
{
private bool _blank; public DDLDepartment()
{
bind(this, 0);
this.Items.Insert(0, new ListItem("==请选择==", ""));
} public void bind(DropDownList ddlDepartment, int parent)
{
IList<Department> deptlist = DepartmentBLL.SelectChild(parent);
foreach (Department dept in deptlist)
{
string text = new string(' ', dept.Depth - 1);
text += "└" + dept.DeptName;
ddlDepartment.Items.Add(new ListItem(text, dept.DeptId.ToString()));
bind(this, dept.DeptNo);
}
} public bool Blank
{
set
{
_blank = value;
if (value == false) this.Items.RemoveAt(0);
}
get
{
return _blank;
}
}
}
Department为实体类