我正在尝试生成一个元素列表,如果可视化,这些元素将生成树结构。
例子:
Element 1 -> 1, 0 //ID is 1 & Parent ID is 0 (0 = root)
Element 2 -> 2, 0 //ID is 2 & Parent ID is 0 (0 = root)
Element 3 -> 3, 1 //ID is 3 & Parent ID is 1
Element 4 -> 4, 3
Element 5 -> 5, 2
Run Code Online (Sandbox Code Playgroud)
如果要用这种结构来可视化一棵树:
为了实现这一点,节点类如下:
public class Node
{
public string id;
public string parentId;
public List<Node> children = new List<Node>();
}
Run Code Online (Sandbox Code Playgroud)
与树类似,一个节点可能包含一个父节点,也可能包含多个其他子节点
任务是将元素排序到适当的层次结构并将子元素添加到其各自父级的子级集合中。我的想法有2种方法:
1) 循环法 …
我有一个包含不同数据类型字段的对象:
public class MyObject{
private String field1;
private CustomObject field2;
private int field3;
...
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个MyObject具有多个MyObject节点的树视图,每个节点都有字段(field1、field2、field3..etc )作为子节点。
我知道我可以制作一个字符串的 TreeView 并使用 addNode(MyObject obj) 方法自行填充它,在该方法中我将添加我需要的各个 TreeItems。但是,我使用 TableView 执行此操作,其中我能够将列与字段属性绑定。例如:
TableView<MyObject> table;
TableColumn<MyObject, String> myColumn;
myColumn.setCellValueFactory(new PropertyValueFactory<>("field1"));
Run Code Online (Sandbox Code Playgroud)
有什么办法可以为 a 做类似的事情吗TreeView<MyObject>?我不反对创建一个扩展的子类TreeItem<?>
我正在寻找的最终结果将是这样的:
--> First My Object
->field1: "Value at Field 1"
->field2: "Value at Field 2"
->field3: 3
--> Second My Object
->field1: "Value at Field 1"
->field2: "Value at Field 2" …Run Code Online (Sandbox Code Playgroud) 我制作了一个树视图,我想在第一列和第二列中添加值,然后程序需要计算当您按 ENTER 按钮时将放入第三列的值(我使用了事件和绑定)。我不知道如何将值放入 Treeview 的特定列中,我总是收到此错误:
TypeError: 'float' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
我知道如何一次在每一列中插入值,但我不知道如何在不更改其他列中的值的情况下仅将一个值插入到特定列中。这是我写的函数:
def PlannedCosPerSize(event):
try:
for child in tree.get_children():
Size=round(float(tree.item(child,"values")[1]),2)
PlannedCost=round(float(tree.item(child,"values")[2]),2)
PlanCostPerSize=float(round(PlannedCost/Size,2))
tree.insert("","end", values=(PlanCostPerSize)[4])
print(PlanCostPerSize)
except IndexError:
Error=messagebox.showinfo("error","You have error")
pass
tree.bind('<Return>', PlannedCosPerSize) # validate with Enter
Run Code Online (Sandbox Code Playgroud) 我想创建一个独特的小工具提示窗口,当我将Treeview鼠标悬停在小部件的每一行上时,就会出现该窗口。
我无法弄清楚如何将事件唯一地绑定<Enter>到<Leave>每一行。
我正在使用 muiv5 树视图组件来构建树视图下拉列表。该组件没有对选择/取消选择的复选框支持,但经过一番搜索后,我能够找到一种类似的解决方案,但需要传递到树视图的数据是一个对象,并且它有一个父节点。我不需要父节点。基本上我的结构是一个对象数组而不是一个对象。这是codesandbox项目的链接点击这里
丰富的对象是
const data: RenderTree = {
id: 'root',
name: 'Parent',
children: [
{
id: '1',
name: 'Child - 1',
},
{
id: '3',
name: 'Child - 3',
children: [
{
id: '4',
name: 'Child - 4',
},
],
},
],
};Run Code Online (Sandbox Code Playgroud)
但我的数据是
const data = [
{
id: '1',
name: 'Child - 1',
},
{
id: '3',
name: 'Child - 3',
children: [
{
id: '4',
name: 'Child - 4',
},
],
},
],Run Code Online (Sandbox Code Playgroud)
我不想显示根父节点
我有一个树视图和一个列表视图,以及一个应该将所选项目从树视图移动到列表视图的按钮.选择和传输完全正常,但删除树视图中的项目不是.它仅在我在树视图下选择单个项目时才有效.当我有TreeView1.MultiSelect := True,然后有一个问题.
这是我正在使用的代码:
For i := 0 to TreeView1.Items.Count-1 do Begin
If TreeView1.Items[i].Selected then
Begin
Itm := ListView1.Items.add;
.....
TreeView1.Items[i].Delete
Run Code Online (Sandbox Code Playgroud)
上述代码在某些选择后给出无效索引.不完美有时只添加两个中的一个.
尝试:
For i := TreeView1.Items.Count to 1 do Begin当我选择父节点中的所有元素被复制的最后一个元素时,这是不起作用的代码
for Itr := TreeView1.Items.Count-1 downto 0 do Begin
if TreeView1.Items[Itr].Selected then
begin
Str := TreeView1.Items[Itr].Parent.Text + ' ,' + TreeView1.Items[Itr].Text;
TrimLeft(Str);
for k := 0 to SaveList.Count -1 do Begin
If ansipos(Str, SaveList[k]) > 0 Then Begin
Value := StringReplace(SaveList[k], Str, '',[rfReplaceAll, rfIgnoreCase]);
End; …Run Code Online (Sandbox Code Playgroud) 我想在每次填充树视图时向节点添加信息。我的意思是,例如,当我创建一个 ChildNode 时,我想将它与其 kinhsip 程度链接起来。也许属性数据是为此而制作的,但我不知道如何处理它。
我有一些严重的问题,递归填充树视图,我会给你任何帮助.
我有这个DataTable:
ItemID ItemDesc Project Room Closet Item1 Item1Desc Project1 RoomE Closet-7 Item2 Item2Desc Project1 RoomW Closet8 Item3 Item3Desc Project1 RoomW Closet8 Item4 Item4Desc Project1 RoomN Closet2 Item5 Item5Desc Project1 RoomN Closet9 Item6 Item6Desc Project2 RoomN Closet2 Item7 Item7Desc Project2 RoomW Closet9
我想创建一个这样的TreeView:
我试图数据树视图的方式是使用
private List<treeDataItem> treeData = new List<treeDataItem>();
mytreeView.DataFieldID = "ID";
mytreeView.DataFieldParentID = "ParentID";
mytreeView.DataTextField = "Text";
mytreeView.DataValueField …Run Code Online (Sandbox Code Playgroud) 如何绘制一条线将树视图节点链接到另一个树视图节点
链接应该显示在
我想通过阅读以下路径来制作文件夹和文件
/project/tags/folder2/command.txt
/project/branches/folder1/folder1.1/Notes.docx
Run Code Online (Sandbox Code Playgroud)
并在驱动器D:\之下构建文件夹和文件
project
tags
folder2
command.txt
branches
folder1
folder1.1
Notes.docx
Run Code Online (Sandbox Code Playgroud)
然后使用这个物理结构用超链接键入树状视图(请假设我用*标记*表示单词具有超链接的名称).使用vba宏查看excel表格中的最后文件和文件夹.参见
project
|_tags
| |_folder2*
| |_command.txt*
|_branches
| |_folder1
| |_folder1.1*
| |_Notes.docx*
Run Code Online (Sandbox Code Playgroud)
所以请为vba noob提供帮助.