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(); // 折叠所有节点 }