1

このようなリストがあります

  • ID | 名前 | タイトル | マネージャーID

  • 1 | ピーター | ピーター | 代表取締役社長 | ヌル

  • 2 | エリック | マネージャー | 1
  • 3 | ブラッド | 経済 | 1
  • 4 | ピット | ピット 販売 | 2
  • 5 | マイク | マイク | 秘書| 4
  • 6 | マック | コピー機 | 5
  • 7 | ベン | ベン | ボード | ボード ヌル

このリストは無限になる可能性があります。これの null 値は、マネージャーがないためです。これをツリービューに追加して、すべての親ノードとサブノードを正しく取得するにはどうすればよいですか?

ループでこれを達成する必要があり、元のデータベースを変更することはできません。次のようなことをしたいですか?

private void treew(TreeNode treeNode, List<Employees> employ)
    {
        foreach (Employees option in employ)
        {
            TreeNode nodeOutput;
    //Add parent node
            foreach (Employees optionItems in employ)
            {
                if (option.ID == optionItems.ManagerID)
                {
        //Add childnode
                    TreeNode nodeOption;
                    nodeOutput.Nodes.Add(nodeOption);
                }
            }
            treeNode.Nodes.Add(nodeOutput);
        }
    }
4

1 に答える 1

0
private List<Employees> employees;
private void treew(TreeNode root, int? managerID)
{
    foreach (Employees option in employ.Where(x => x.MangerID == managerID))
    {
        TreeNode nodeOutput;
        treew(nodeOutput, option.ID);
        root.Nodes.Add(nodeOutput);
    }
}

TreeView のルート ノードを最初の呼び出しに渡すか、TreeView を最初の引数として取り、ほとんど同じことを行う別のバージョンを作成します。

于 2012-12-07T18:27:41.447 に答える