如果存在子节点,如何仅显示TreeView展开符号[+]

Chr*_*s B 1 sql database treeview lazy-loading

我开发了一个应用程序,它从数据库中的层次数据填充树视图.

我设计它使用延迟加载,因此它只在节点扩展时获取子节点.

我的问题是,显然我不知道节点是否有子节点,除非我调用数据库并查看.目前我已经实现了一个虚拟子节点,因此所有节点都会显示[+]图标,然后删除这个虚拟节点并获取BeforeExpand事件中的真实子节点.

这意味着我为没有子节点的节点获得了一个[+]图标,因此用户点击了展开图标,没有什么显示看起来有点粗制滥造.

在延迟加载树视图中处理子节点的preffrred方法是什么?如果我调用数据库来查看是否有子节点,那么我也可以加载子节点并忘记延迟加载吧?

我想过是储存"HasChildren"标志在数据库中,这样我就可以有选择地创建虚拟我的子节点只为实际上的节点具有子节点.

对不起,我很想知道其他人的想法......

Qua*_*noi 5

当您拨打电话时,请检查孩子以及节点数据:

SELECT  tp.*, 
        (
        SELECT  1
        FROM    table tc
        WHERE   tc.parent = tp.id
        LIMIT 1
        ) AS has_children
FROM    table tp
Run Code Online (Sandbox Code Playgroud)

你不必数数,它可能很长.

只需检查至少有一个孩子存在.