ASP.NET C#生成下拉列表树实现代码_asp.net教程-查字典教程网
ASP.NET C#生成下拉列表树实现代码
ASP.NET C#生成下拉列表树实现代码
发布时间:2017-01-07 来源:查字典编辑
摘要:效果图:代码:复制代码代码如下:usingSystem.Data;usingSystem.Web.UI.WebControls;//////...

效果图:

代码:

复制代码 代码如下:

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

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新asp.net教程学习
    热门asp.net教程学习
    编程开发子分类