华域联盟 .Net ASP.NET C#生成下拉列表树实现代码

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

效果图:


代码:

复制代码 代码如下:

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();

}

}

调用:

复制代码 代码如下:

DropDownListHelp ddlHelper = new DropDownListHelp();

ddlHelper.createDropDownTree(dt, "parentID", "1", "ID","Text", "Text asc", DropDownList1);
您可能感兴趣的文章:

  • C#之Expression表达式树实例
  • 关于c#二叉树的实现
  • C# 递归查找树状目录实现方法
  • 一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
  • C#实现获取系统目录并以Tree树叉显示的方法
  • C# TreeView无限目录树实现方法
  • C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法
  • C#求解哈夫曼树,实例代码
  • c#反射表达式树模糊搜索示例
  • C#通过KD树进行距离最近点的查找

本文由 华域联盟 原创撰写:华域联盟 » ASP.NET C#生成下拉列表树实现代码

转载请保留出处和原文链接:https://www.cnhackhy.com/47253.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部