ASP.NETC#生成下拉列表树实现代码
2023-06-13 09:14:45 时间
效果图:
代码:
复制代码代码如下:
代码:
usingSystem.Data;
usingSystem.Web.UI.WebControls;
///<summary>
///根据DataTable生成下拉列表树
///</summary>
publicclassDropDownListHelp
{
privatestringgridline;
privateDataTabledt;
publicDropDownListHelp()
{
//
//TODO:在此处添加构造函数逻辑
//
}
///<summary>
///根据Datatable生成树形下拉菜单
///</summary>
///<paramname="datatable"></param>
///<paramname="parentKeyField">上级节点关键字段</param>
///<paramname="parentKey">上级节点值</param>
///<paramname="keyField">本节点关键字段</param>
///<paramname="sortString">排序字符串</param>
///<paramname="ddl">DownList</param>
publicvoidcreateDropDownTree(DataTabledatatable,stringparentKeyField,stringparentKey,stringkeyField,stringtextField,stringsortString,DropDownListddl)
{
dt=datatable;
ddl.Items.Add(newListItem("",""));
addChildItems(parentKeyField,parentKey,keyField,textField,sortString,ddl);
}
///<summary>
///递归生成树节点
///</summary>
///<paramname="parentKeyField">上级节点关键字段</param>
///<paramname="parentKey">上级节点值</param>
///<paramname="keyField">本节点关键字段</param>
///<paramname="sortString">排序字符串</param>
///<paramname="ddl">DownList控件</param>
///<returns></returns>
privatevoidaddChildItems(stringparentKeyField,stringparentKey,stringkeyField,stringtextField,stringsortString,DropDownListddl)
{
DataViewdv=newDataView(dt,parentKeyField+"=""+parentKey+""",sortString,DataViewRowState.CurrentRows);
inta=dv.Count;
if(dv.Count==0)
{
return;
}
for(inti=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(newListItem(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>
///<paramname="parentKeyField">上级节点关键字段</param>
///<paramname="parentKey">上级节点值</param>
///<paramname="keyField">本节点关键字段</param>
///<paramname="nodeKey">本节点值</param>
///<paramname="sortString">排序字符串</param>
///<returns></returns>
privatevoidgetTreeLine(stringparentKeyField,stringparentKey,stringkeyField,stringnodeKey,stringsortString)
{
//选择父层节点
DataViewdv=newDataView(dt,keyField+"=""+parentKey+""",sortString,DataViewRowState.CurrentRows);
if(dv.Count>0)
{
//选择父节点同级节点
dv.RowFilter=parentKeyField+"=""+dv[0][parentKeyField].ToString()+""";
dv.Sort=sortString;
for(intj=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();
}
}
调用:
DropDownListHelpddlHelper=newDropDownListHelp();
ddlHelper.createDropDownTree(dt,"parentID","1","ID","Text","Textasc",DropDownList1);
相关文章
- asp.net(c#)网页跳转几种方法小结「建议收藏」
- c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法
- [接上篇]在Window10/11的Linux子系统Docker上部署VB.NET Asp.Net Core WebAPI应用
- SQL Server中调用C#类中的方法实例(使用.NET程序集)
- .NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Ruby/Shell/Agile/CSS/HTML/HTTP/Unix/Linux大量PDF书籍/电子书籍下载, Effective Java 下载详解编程语言
- .net让Oracle与ASP.NET实现无缝连接(oracleasp)
- .net搭建ASP.NET应用程序在Linux系统上(linux搭建asp)
- Net不再压着 MSSql,语音变得前景无限(net mssql语音)
- asp.net(c#)EnterpriseLibrary3.0下载
- c#连接字符串数据库服务器端口号.net状态服务器端口号
- asp.net(C#)把汉字转化成全拼音函数(全拼)
- asp.net(c#)做一个网页数据采集工具
- asp.net(C#)中给控件添加客户端js事件的方法
- asp.net(C#)压缩图片,可以指定图片模板高宽
- asp页面和Asp.net页面传中文参数UrlEncode编码以及接收解码
- asp.net(c#)使用Rex正则来生成字符串数组的代码
- 答你所问.NET小常识方便学习asp.net的朋友
- 基于ASP.NET的lucene.net全文搜索实现步骤
- .netC#实现任意List的笛卡尔乘积算法代码
- asp.netC#实现解压缩文件的方法