使用场景
一般我们想要获取父id下(分部)的所有子id(子项),直接遍历就行了!但是满足分部下可能在嵌套一个分部呢?或者嵌套多个分部呢?这时我们就需要用递归方法去获取了!
实现思路
1.首先获取数据源!我们可以使用强转方法来实现!
DataTable Qdtable = (treelist.DataSource) as DataTable;
2.得到点击行的信息
var Selectionnode = treelist.Selection.ToList();
3.遍历获取点击行的信息,拿到id,因为是treelist所以要满足父子节点,这里id是父节点,pid是子节点!
foreach (TreeListNode node in Selectionnode)
{
long fuid = node["id"].ToLong();
List<long> ids = new List<long>();
Getids(Qdtable, fuid,ids);//得到所有子分部id
//ids即为子id的集合!
}
4.Getids方法的实现!
/// <summary>
/// 根据父id获取分部子id集合
/// </summary>
/// <param name="table"></param>
/// <param name="id"></param>
/// <returns></returns>
private void Getids(DataTable table, long id,List<long> ids)
{
ids.Add(id);
var list = table.Select("pid =" + id);
if (list.Count() > 0)
{
foreach (DataRow row in list)
{
Getids(table, row[Constant.fnID].ToLong(),ids);
}
}
}
很多可能只想拿到满足特定条件的id,只需要修改GetQdFbids方法的这一句:
var list = table.Select("pid =" + id);
例如:我现在只想拿数据类型datatype为1的所有id,既:
var list = table.Select("datatype = 1 and pid =" + id);
至于在那个事件中写可以在控件treelist的单击,双击,编辑完等事件都可以写!
实现方法有多种!能帮助你解决问题作者的目的也就达到了!
本文介绍如何在dev控件treelist中,通过递归方法获取点击父节点的所有子节点,包括处理嵌套子节点的情况。实现步骤包括获取数据源、获取点击行信息,遍历获取id,并通过Getids方法实现。可以应用于控件的单击、双击等事件中,根据需求筛选特定条件的子节点id。

2105

被折叠的 条评论
为什么被折叠?



