コード例 #1
0
    private void tvCPUsersDataBind()
    {
        Model.ChannelProgramUser[] mcpus = dbll.getCPUsers();

        if (mcpus.Length == 0)
        {
            return;
        }

        /*
         * // 移除数组中的重复元素
         * string[] userNameDistArray = Utilities.RemoveDup(userNameArray);
         */

        if (tvCPUsers.Nodes.Count > 0)
        {
            tvCPUsers.Nodes.Clear();
        }


        /*********************************
        * 前提条件:SQL中已对结果进行排序
        * 分别对UserID,ChannelID,ProgramID
        * 相邻字段进行判断,不同内容绑定不同
        * 的节点,相同内容绑定到兄弟节点
        * *******************************/

        // User第一项
        TreeNode rootNode = new TreeNode(mcpus[0].UserName, mcpus[0].UserID);   // text, value

        tvCPUsers.Nodes.Add(rootNode);

        TreeNode childNode = null;

        // bug fix. 如果第一个用户也没有频道设置
        if (mcpus[0].ChannelID != null && mcpus[0].ProgramID != null)
        {
            // Channel第一项
            childNode = new TreeNode(mcpus[0].ChannelName, mcpus[0].ChannelID.ToString());
            rootNode.ChildNodes.Add(childNode);

            // Program第一项
            TreeNode leafNode = new TreeNode(mcpus[0].ProgramName, mcpus[0].ProgramID.ToString());
            childNode.ChildNodes.Add(leafNode);
        }
        else
        {
            childNode = new TreeNode("该用户无频道栏目设置!", "-1");
            childNode.SelectAction = TreeNodeSelectAction.None;  // 节点不可选
            rootNode.ChildNodes.Add(childNode);
        }

        TreeNode userNode    = rootNode;
        TreeNode channelNode = childNode;

        for (int i = 1; i < mcpus.Length; i++)
        {
            userNode    = addUserNode(userNode, mcpus[i - 1], mcpus[i]);
            channelNode = addCPNode(userNode, channelNode, mcpus[i - 1], mcpus[i]);

            channelNode.CollapseAll();      // 隐藏栏目节点显示
        }

        //tvCPUsers.CollapseAll();      // 折叠所有节点
    }