zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

c#NetASP列表代码 实现 生成
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);