检索数据到树视图

本文关键字:视图 数据 检索 | 更新日期: 2023-09-27 18:07:45

我有一个这样的表

    TaskID------ParentID-------TaskName  
    1-----------Null-----------AllPro  
    2-----------1--------------Drink  
    3-----------2--------------Coco  
    4-----------2--------------Pepsi  
    5-----------1--------------Food  
    6-----------5--------------Macdo 

我试着把它放到树视图中,我的问题是,当我想在任务id和父id之间建立关系时,结果是重复的,你可以看到我的代码:

一个表中的两个列之间的关系:

public IQueryable<tblTask> GetTaskTree()  
    {  
        var MySubject = from publisher in ObjectContext.tblTasks  
                        join subjects in ObjectContext.tblTasks  
                         on publisher.ParentTaskID equals subjects.TaskID  
                        select publisher;  
        return MySubject;  
    }  

结果如下:

Drink
--Pepsi
--Coco
Pepsi
Coco
Food
---Mac
Mac

这里是itemtemplate

检索数据到树视图

我认为你不应该在LINQ中使用join;你的表应该只读一次,并且拥有所有的记录,你应该知道如何用递归键ParentID将它们嵌套到彼此中,基本上每个记录都有一个Id,一个标签,并且知道它属于哪个其他父记录,没有理由连接。

在旧的windows窗体编程中,我可能会编写一个小程序来扫描所有记录并相应地创建节点。也有一些层次属性的树视图一般,所以你可以指定父节点字段或类似的东西,树视图使层次结构为你,但我真的不确定这与默认的窗口形式的树视图,我使用了这么多的控件,不记得哪一个有哪些功能没有检查…(DevExpress, Telerik, inffragistics…)