源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

ASP.NET C#生成下拉列表树实现代码

  • 时间:2022-01-22 00:10 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:ASP.NET C#生成下拉列表树实现代码
效果图: [img]http://files.jb51.net/file_images/article/201302/201326174321686.png?201316174354[/img] 代码:
[u]复制代码[/u] 代码如下:
using System.Data; using System.Web.UI.WebControls; /// <summary> /// 根据DataTable生成下拉列表树 /// </summary> public class DropDownListHelp { private string gridline; private DataTable dt; public DropDownListHelp() { // //TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 根据Datatable生成树形下拉菜单 /// </summary> /// <param name="datatable"></param> /// <param name="parentKeyField">上级节点关键字段</param> /// <param name="parentKey">上级节点值</param> /// <param name="keyField">本节点关键字段</param> /// <param name="sortString">排序字符串</param> /// <param name="ddl">DownList</param> public void createDropDownTree(DataTable datatable, string parentKeyField, string parentKey, string keyField, string textField, string sortString, DropDownList ddl) { dt = datatable; ddl.Items.Add(new ListItem("", "")); addChildItems(parentKeyField, parentKey, keyField, textField, sortString, ddl); } /// <summary> /// 递归生成树节点 /// </summary> /// <param name="parentKeyField">上级节点关键字段</param> /// <param name="parentKey">上级节点值</param> /// <param name="keyField">本节点关键字段</param> /// <param name="sortString">排序字符串</param> /// <param name="ddl">DownList控件</param> /// <returns></returns> private void addChildItems(string parentKeyField, string parentKey, string keyField, string textField, string sortString, DropDownList ddl) { DataView dv = new DataView(dt, parentKeyField + "='" + parentKey + "'", sortString, DataViewRowState.CurrentRows); int a = dv.Count; if (dv.Count == 0) { return; } for (int i = 0; i < a; i++) { gridline = ""; dv.RowFilter = parentKeyField + "='" + parentKey + "'"; dv.Sort = sortString; getTreeLine(parentKeyField, dv[i][parentKeyField].ToString(), keyField, dv[i][keyField].ToString(), sortString); dv.RowFilter = parentKeyField + "='" + parentKey + "'"; dv.Sort = sortString; ddl.Items.Add(new ListItem(gridline + (i == a - 1 ? "┗" : "┣") + dv[i][textField].ToString(), dv[i][keyField].ToString())); addChildItems(parentKeyField, dv[i][keyField].ToString(), keyField, textField, sortString, ddl); } dv.Dispose(); } /// <summary> /// 回溯生成树的连接线 /// </summary> /// <param name="parentKeyField">上级节点关键字段</param> /// <param name="parentKey">上级节点值</param> /// <param name="keyField">本节点关键字段</param> /// <param name="nodeKey">本节点值</param> /// <param name="sortString">排序字符串</param> /// <returns></returns> private void getTreeLine(string parentKeyField, string parentKey, string keyField, string nodeKey, string sortString) { //选择父层节点 DataView dv = new DataView(dt, keyField + "='" + parentKey + "'", sortString, DataViewRowState.CurrentRows); if (dv.Count > 0) { //选择父节点同级节点 dv.RowFilter = parentKeyField + "='" + dv[0][parentKeyField].ToString() + "'"; dv.Sort = sortString; for (int j = 0; j < dv.Count; j++) { if (dv[j][keyField].ToString() == parentKey) { if (j == dv.Count - 1) { gridline = " " + gridline; } else { gridline = "┃" + gridline; } } } getTreeLine(parentKeyField, dv[0][parentKeyField].ToString(), keyField, dv[0][keyField].ToString(), sortString); } dv.Dispose(); } }
调用:
[u]复制代码[/u] 代码如下:
DropDownListHelp ddlHelper = new DropDownListHelp(); ddlHelper.createDropDownTree(dt, "parentID", "1", "ID","Text", "Text asc", DropDownList1);
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部