`
touchinsert
  • 浏览: 1355954 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

通过递归方法 将DataTable中的树状数据信息 按树状格式显示在DropDownList中

 
阅读更多

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
分享到:
评论

相关推荐

    .net DropDownList 树型显示

    - **功能**:这是一个递归方法,用于递归地将子节点绑定到DropdownList中。 - **参数说明**: - `Pading`:当前层级的前缀空格,用于显示层级关系。 - `DirId`:当前节点的ID。 - `dt`:包含数据的DataTable对象...

    vs2005里面DropDownList用树的形式显示数据!

    在Visual Studio 2005中,利用ASP.NET Web Forms技术,可以实现将DropDownList控件以树形结构展示数据的功能。此方法适用于需要展示层级关系数据的场景,如产品分类、组织架构等。下面将详细解析如何在VS2005中实现...

    树形下拉框.net

    根据给定的信息,“树形下拉框.NET”主要涉及如何在.NET框架中通过树形下拉框(Tree Dropdown)来展示组织结构中的部门或岗位层级关系。下面将详细阐述这一技术实现过程及其背后的关键概念。 ### 一、树形下拉框的...

    树形形式填充drowList

    drowList控件通常指的是ASP.NET中的`DropDownList`控件,它被广泛用于下拉列表的创建,但在某些情况下,开发者希望将这个控件用作一个树形菜单或层级结构的展示工具。这不仅需要对控件进行定制化处理,还需要深入...

    asp.net实现递归方法取出菜单并显示在DropDownList中(分栏形式)

    在***中实现递归方法以从数据库中提取菜单项,并将它们以分栏的形式显示在DropDownList控件中,需要了解多个知识点,包括递归算法、数据库操作以及DropDownList控件的使用方法。下面将详细介绍这些知识点。 首先,...

    asp.net实现DropDownList,TreeView,ListBox的无限极分类目录树

    `CreateLevelDropDown`方法是实现此功能的核心,它接收一个DropDownList控件对象,以及包含分类数据的DataTable,然后通过递归的方式将层级关系添加到控件中。这个方法首先找到所有顶级分类(即parentid为0的行),...

    ASP.NET TreeView树型菜单操作实例(代码调试通过).doc

    - **DropDownListBind()** 方法用于递归地填充`DropDownList`,基于父节点ID,获取相关数据集,并将其转换为`DropDownList`项。 - **treeShow()** 方法用于递归地显示子节点。它接收父节点ID和父节点对象作为参数,...

    C# treeview控件使用

    该方法通过递归的方式将所有数据加载到 `TreeView` 控件中。 #### 3. 功能扩展 除了基本的数据展示外,我们还可以实现对树形结构的操作,如添加、编辑、删除节点等功能。这些功能可以通过按钮触发事件来实现。下面...

    WinForms疑难解答.doc

    可以通过添加`TreeNode`对象到`Nodes`集合来构建树形结构。 **21. 使用皮肤美化WinForms** 可以使用第三方库如DevExpress、Telerik等来为WinForms应用添加皮肤效果,也可以自定义样式来美化界面。 #### 二、程序...

    C#编程经验技巧宝典

    72 &lt;br&gt;0102 将字符串首字母转换大写 72 &lt;br&gt;0103 如何进行字节数组和字符串的相互转换 72 &lt;br&gt;0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 &lt;br&gt;4.2 获取字符串信息 73 ...

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

    3. **构建树形结构**:在`addChildItems`方法中,使用`DataView`对数据进行筛选和排序,然后通过循环遍历每一行数据,生成表示层级关系的前缀(gridline),这通常是通过递归调用来实现的。前缀由一系列的"├"、"│...

Global site tag (gtag.js) - Google Analytics