DataTable中的数据:
TypeID , TypeName , ParentTypeID
1 类别A 0
2 类别B 0
3 子类别B1 2
4 子类别A1 1
5 孙类别A11 4
DropDownList的显示效果:
类别A
|--子类别A1
|----孙类别A11
类别B
|--子类别B1

Code
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#region绑定
privatevoidfn_Bind_DropDownList()
{
DataSetds;
//数据库操作取出相应的ds
//ds=bll_Type.SelectAllTypeForChoose();
this.ddl_Type.Items.Clear();
if(ds!=null&&ds.Tables.Count>0&&ds.Tables[0].Rows.Count>0)
{
DataTabledtPara=ds.Tables[0];
DataTabledtTree=newDataTable();
dtTree=dtPara.Clone();
fn_ChangeToTree(refdtTree,dtPara,0,"0");//从顶级开始递归遍历
this.ddl_Type.DataSource=dtTree;
this.ddl_Type.DataTextField=dtTree.Columns[1].ToString();
this.ddl_Type.DataValueField=dtTree.Columns[0].ToString();
this.ddl_Type.DataBind();
}
this.ddl_Type.Items.Insert(0,newListItem("","0"));
}
#endregion
#region将类别DataTable信息整理成树状显示
privatevoidfn_ChangeToTree(refDataTabledtTree,DataTabledtPara,intintLevel,stringstrParentTypeID)
{
intLevel++;
stringstrLeftPre="";//处理每个级别的前缀内容显示
if(intLevel>1)
{
strLeftPre="|"+strLeftPre.PadLeft(intLevel*2,'-');
}
DataTabledt1=newDataTable();//当前类别
dt1=dtPara.Clone();
DataTabledt2=newDataTable();//下一级
dt2=dtPara.Clone();
for(inti=0;i<dtPara.Rows.Count;i++)
{
DataRowdr=dtPara.Rows[i];
stringstrRowParentTypeID=dr["ParentTypeID"].ToString();
if(strRowParentTypeID==strParentTypeID)
{
dt1.Rows.Add(dr.ItemArray);
}
else
{
dt2.Rows.Add(dr.ItemArray);
}
}
for(intj=0;j<dt1.Rows.Count;j++)
{
DataRowdr=dt1.Rows[j];
dr["TypeName"]=strLeftPre+dr["TypeName"].ToString();
dtTree.Rows.Add(dr.ItemArray);
stringstrRowParentTypeID=dr["TypeID"].ToString();
fn_ChangeToTree(refdtTree,dt2,intLevel,strRowParentTypeID);//递归
}
}
#endregion
分享到:
相关推荐
- **功能**:这是一个递归方法,用于递归地将子节点绑定到DropdownList中。 - **参数说明**: - `Pading`:当前层级的前缀空格,用于显示层级关系。 - `DirId`:当前节点的ID。 - `dt`:包含数据的DataTable对象...
在Visual Studio 2005中,利用ASP.NET Web Forms技术,可以实现将DropDownList控件以树形结构展示数据的功能。此方法适用于需要展示层级关系数据的场景,如产品分类、组织架构等。下面将详细解析如何在VS2005中实现...
根据给定的信息,“树形下拉框.NET”主要涉及如何在.NET框架中通过树形下拉框(Tree Dropdown)来展示组织结构中的部门或岗位层级关系。下面将详细阐述这一技术实现过程及其背后的关键概念。 ### 一、树形下拉框的...
drowList控件通常指的是ASP.NET中的`DropDownList`控件,它被广泛用于下拉列表的创建,但在某些情况下,开发者希望将这个控件用作一个树形菜单或层级结构的展示工具。这不仅需要对控件进行定制化处理,还需要深入...
在***中实现递归方法以从数据库中提取菜单项,并将它们以分栏的形式显示在DropDownList控件中,需要了解多个知识点,包括递归算法、数据库操作以及DropDownList控件的使用方法。下面将详细介绍这些知识点。 首先,...
`CreateLevelDropDown`方法是实现此功能的核心,它接收一个DropDownList控件对象,以及包含分类数据的DataTable,然后通过递归的方式将层级关系添加到控件中。这个方法首先找到所有顶级分类(即parentid为0的行),...
- **DropDownListBind()** 方法用于递归地填充`DropDownList`,基于父节点ID,获取相关数据集,并将其转换为`DropDownList`项。 - **treeShow()** 方法用于递归地显示子节点。它接收父节点ID和父节点对象作为参数,...
该方法通过递归的方式将所有数据加载到 `TreeView` 控件中。 #### 3. 功能扩展 除了基本的数据展示外,我们还可以实现对树形结构的操作,如添加、编辑、删除节点等功能。这些功能可以通过按钮触发事件来实现。下面...
可以通过添加`TreeNode`对象到`Nodes`集合来构建树形结构。 **21. 使用皮肤美化WinForms** 可以使用第三方库如DevExpress、Telerik等来为WinForms应用添加皮肤效果,也可以自定义样式来美化界面。 #### 二、程序...
72 <br>0102 将字符串首字母转换大写 72 <br>0103 如何进行字节数组和字符串的相互转换 72 <br>0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 <br>4.2 获取字符串信息 73 ...
3. **构建树形结构**:在`addChildItems`方法中,使用`DataView`对数据进行筛选和排序,然后通过循环遍历每一行数据,生成表示层级关系的前缀(gridline),这通常是通过递归调用来实现的。前缀由一系列的"├"、"│...