如何遍历鎑ev控件中treelist的树节点

如何遍历鎑ev控件中treelist的树节点,第1张

您好,很高兴能帮助您,

foreach (TreeNode item in treeView1Nodes)//遍历Treeview的所有节点

{

TreeNode node =GetNode(item);//遍历子节点

treeView2NodesAdd(node);

}

private TreeNode GetNode(TreeNode node)

{

if (nodeNodesCount == 0)

return new TreeNode(nodeText);

TreeNode ns = new TreeNode(nodeText);

foreach (TreeNode item in nodeNodes)

{

TreeNode n = GetNode(item);

nsNodesAdd(n);

}

return ns;

}

你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”!

如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!

DataTable dtTree = new DataTable();

            dtTreeColumnsAdd("ID",typeof(string));

            dtTreeColumnsAdd("Code", typeof(string));

            dtTreeColumnsAdd("Name", typeof(string));

            dtTreeColumnsAdd("Description", typeof(string));

            dtTreeColumnsAdd("ParentID", typeof(string));

            //新增加的列 布尔类型才能绑定checkbox

            dtTreeColumnsAdd("Tag", typeof(bool));

            dtTreeColumnsAdd("Happy", typeof(string));

DataRow row = dtTreeNewRow();

            row["ID"] = "1";

            row["Code"] = "001";

            row["Name"] = "野原广志";

            row["Description"] = "野原广志";

            row["ParentID"] = "-1";

            row["tag"] = false;

            row["Happy"] = "爱吃青椒";

            dtTreeRowsAdd(row);

DataRow row2 = dtTreeNewRow();

            row2["ID"] = "2";

            row2["Code"] = "002";

            row2["Name"] = "野原美呀";

            row2["Description"] = "野原美呀";

            row2["ParentID"] = "-1";

            row2["tag"] = false;

            row2["Happy"] = "爱吃青椒";

            dtTreeRowsAdd(row2);

DataRow row3 = dtTreeNewRow();

            row3["ID"] = "3";

            row3["Code"] = "003";

            row3["Name"] = "野原新之助";

            row3["Description"] = "野原新之助";

            row3["ParentID"] = "-1";

            row3["tag"] = false;

            row3["Happy"] = "不爱吃青椒";

            dtTreeRowsAdd(row3);

DataRow row4 = dtTreeNewRow();

            row4["ID"] = "4";

            row4["Code"] = "004";

            row4["Name"] = "野原小白";

            row4["Description"] = "野原小白";

            row4["ParentID"] = "3";

            row4["tag"] = false;

            row4["Happy"] = "不爱吃青椒";

            dtTreeRowsAdd(row4);

//模拟数据 将查询出来的datatable添加一列 例如:tag

            //然后查询datatable type列 当type为“板式”,“沙发”时 将tag列置为true

            DataRow[] drs = dtTreeSelect("Happy='爱吃青椒'");

            foreach (DataRow item in drs)

            {

                item["tag"] = true;

            }

            treeList1DataSource = dtTree;

你这样做的话,可以加个判断就行了 答案补充 这样可以!传个值到地址拦上去,再去取就可以达到你的效果! 答案补充 选中时,取个值把这个值传到地址上面去,GET传值再去取

这样随你怎么刷新,都不会变依然是你选中的那个节点

Linq表达式中Select以及SelectMany的用法,select是将一个源list投影到一个属性值或者多个属性值,也可以是另外一个属性类,通常和where子句连用,通过where子句对list进行筛选之后投影成我们需要的属性。有时我们只需要list中的单个属性,例如是需要查询井的信息,那么我们只需要知道井ID的list集合。那么我们就可以使用select语句投影成到这个井ID属性。

select单属性投影

石油软件类的项目通常左边为项目树,通过左边treeList的节点点击,向后台发送TreeNode属性集合,石油类部门的组织机构通常分为井区、井组、单井,当我们点击了井组集合,井区之下包含了很多口单井,井组之下包含该井组的单井,通常为5~10口单井。假设用户点击了井组节点之后,我们要获得他下面的单井节点。我们首先需要判断用户点击的是哪一级的节点,做法一般是给点击的节点赋值一个Level,通过spilt()方法判断点击是井区、井组还是单井级别。当然我们这里限定了用户点击的是井组节点,那么我们就要获取它下面所属的单井节点。需要注意的是,项目树节点传过来的类型为List<object>。WellOrganDescriptor类封装了组织机构单井信息类,利用ofType方法限定了方法属性名,通过select方法投影出单井的ID属性,使用var匿名定义方法返回值。看出区别没,对于select投影,定义一个item属性,然后进行new出这个list的属性集合,然后投影出自己需要的属性集合。但是细心的你可能会发现,后面还加了一层where筛选,这个是在石油生产环节井分为采油井、注水井,由于需求需要选出采油井的id,所以加了这层属性的筛选,最终拿出这些油井的id。

2、new出新的对象类,将投影出来的属性进行赋值获取

首先启用TreeList的ShowingEditor事件,该事件在控件转化到可编辑状态前调用,只要设置该事件的参数CancelEventArgs即可

而对于具体是哪一个节点则可以通过TreeList的FocusedNode来获取,而对于是哪一列则可以通过TreeList的FocusedColumn来获取

而我现在的这个项目还要求结合第一列的值来进行判断,那么就通过FocusedNode的GetValue(0)方法来获取第一列的值。

写了这么多还是来看一下代码可能更明白:

private void treeList1_ShowingEditor(object sender, CancelEventArgs e)

{

TreeList currentTreeList = sender as TreeList;

if (currentTreeList != null)

{

TreeListNode node = currentTreeListFocusedNode;

DevExpressXtraTreeListColumnsTreeListColumn column = currentTreeListFocusedColumn;

if (columnFieldName == "ITEM_VALUE" && nodeGetValue(0)ToString() != "")

{

eCancel = true;

}

else

{

eCancel = false;

}

}

}

以上就是关于如何遍历鎑ev控件中treelist的树节点全部的内容,包括:如何遍历鎑ev控件中treelist的树节点、devexpress treelist 绑定数据时让部分节点默认选择、c#中,treelist这个控件刷新后 如何不改变它之前的选中节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9498720.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存