请问treeView如果绑定数据表

解决方案 »

  1.   

    一般是用TreeNodePopulate事件异步加载 protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
        {
            try
            {
                if (ViewState["ReceiverList"] != null)
                {
                    dtlRec = (DataTable)ViewState["ReceiverList"];
                }
                string groupid = e.Node.Value;
                if (groupid != null && groupid != "")
                {
                    Guid id = new Guid(groupid);
                    Group group = new Group(id);
                    GroupNode(e.Node, group);
                }
                else
                {
                    groupid = "00000000-0000-0000-0000-000000000000";
                    Guid id = new Guid(groupid);
                    Group group = new Group(id);
                    GroupNode(e.Node, group);
                }
            }
            catch { }
        } /// <summary>
        /// 获取组节点
        /// </summary>
        /// <param name="Node">树节点</param>
        /// <param name="userInfo">组信息</param>
        protected void GroupNode(TreeNode Node, Group group)
        {
            GroupCollection groups = Groups.GetSubgroups(group);
            foreach (Group g in groups)
            {
                TreeNode groupnode = new TreeNode(g.GroupName, g.GroupID.ToString());
                groupnode.ImageUrl = "~/images/group.gif";
                groupnode.SelectAction = TreeNodeSelectAction.Expand;
                StringBuilder value = new StringBuilder();
                string[] users = Groups.GetUsersInGroup(g);
                for (int i = 0; i < users.Length; i++)
                {
                    MembershipUser u = Membership.GetUser(users[i]);
                    if (u != null)
                    {
                        ManNode(groupnode, u);
                    }
                }
                groupnode.Value = "";
                groupnode.ToolTip = value.ToString();
                Node.ChildNodes.Add(groupnode);            Group subgroup = new Group(g.GroupID);
                GroupCollection subgroups = Groups.GetSubgroups(subgroup);
                GroupNode(groupnode, subgroup);
            }    }    /// <summary>
        /// 获取人员节点
        /// </summary>
        /// <param name="Node">树节点</param>
        /// <param name="userInfo">用户信息</param>
        protected void ManNode(TreeNode Node, MembershipUser userInfo)
        {
            string uInfo = userInfo.ProviderUserKey.ToString();
            string uText = userInfo.Comment + "<input style='display:none;' type='text' value='" + uInfo + "' title='" + userInfo.Comment + "'  />";
            TreeNode mannode = new TreeNode(uText, userInfo.ProviderUserKey.ToString());        mannode.ImageUrl = "~/images/user.gif";
            mannode.SelectAction = TreeNodeSelectAction.None;
            Node.ChildNodes.Add(mannode);        if (dtlRec != null && dtlRec.Rows.Count > 0)
            {
                foreach (DataRow rowRec in dtlRec.Rows)
                {
                    if (mannode.Value == rowRec["Receiver"].ToString())
                    {
                        mannode.Checked = true;
                    }
                }
            }
        }