·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> asp.net TreeView

asp.net TreeView

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

asp.net TreeView

希望有实力的朋友了以后能指点我改一下选中和不选中的递归

前台代码

  <div style="font-size:14px;">                        <asp:TreeView ShowCheckBoxes="All" ID="usertree" runat="server" OnTreeNodeCheckChanged="MyTreeView_TreeNodeCheckChanged" OnSelectedNodeChanged="MyTreeView_SelectedNodeChanged" >                        </asp:TreeView>                    </div>                           <div style="float:left;">           <span style="display:block">要参加人员:</span>            <asp:ListBox ID="NeedExamStaff" AutoPostBack="true" runat="server" Height="262px" Width="116px" SelectionMode="Multiple">            <asp:ListItem Value="张三"></asp:ListItem>            <asp:ListItem Value="李四"></asp:ListItem>            <asp:ListItem>王五</asp:ListItem>            </asp:ListBox>                <hr />             <span style="margin-bottom:0px">总 人 员:<asp:TextBox ID="NeedStaffNumber" runat="server" Text="" Enabled="false" Height="16px" Width="56px"></asp:TextBox><br /><span style="color:red;font-size:small" id="VNeedStaffNumber" runat="server"></span></span>             </div>               <asp:Button ID="Button1" runat="server" Text="确定" OnClick="Button1_Click" Height="21px" />
View Code

后台代码

       DataTable dt = new DataTable();        PRotected void Page_Load(object sender, EventArgs e)        {            if (!IsPostBack)            {                SqlConnection conn = new SqlConnection();                conn.ConnectionString = "User ID=sa;Initial Catalog=newtest;Data Source=JJ-PC;PassWord=123";                // 打开连接                if (conn.State == ConnectionState.Closed)                {                    conn.Open();                }                var sql = "select * from city";                // 初始化命令                SqlCommand cmd = new SqlCommand();                cmd.Connection = conn;                cmd.CommandType = CommandType.Text;                cmd.CommandText = sql;                // 用于执行数据插入、更新和删除的操作;返回被影响的行数。                int i = cmd.ExecuteNonQuery();                // 如果想获取数据集合的话我们经常使用到的是数据适配器                SqlDataAdapter adapter = new SqlDataAdapter();                adapter.SelectCommand = cmd;                adapter.Fill(dt);                this.usertree.Nodes.Clear();                usertree.Attributes.Add("onclick", " postBackByObject()");                AddTree(110000, (TreeNode)null);            }        }        //递归添加树的节点        public void AddTree(int ParentID, TreeNode pNode)        {            DataTable ds = dt;            DataView dvTree = new DataView(ds);            //过滤ParentID,得到当前的所有子节点            dvTree.RowFilter = "[fatherID] = " + ParentID;            foreach (DataRowView Row in dvTree)            {                TreeNode Node = new TreeNode();                if (pNode == null)                {                    //添加根节点                    Node.Text = Row[2].ToString();                    Node.Value = Row[1].ToString();                    this.usertree.Nodes.Add(Node);                    Node.Expanded = true;                    Node.ShowCheckBox = true;                    //再次递归                    AddTree(Int32.Parse(Row[1].ToString()), Node);                }                else                {                    //添加当前节点的子节点                    Node.Text = Row[2].ToString();                    Node.Value = Row[1].ToString();                    pNode.ChildNodes.Add(Node);                    Node.Expanded = true;                    Node.ShowCheckBox = true;                    //再次递归                    AddTree(Int32.Parse(Row[1].ToString()), Node);                }            }        }        protected void MyTreeView_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)        {            TreeNode node = e.Node;            var nodeCount = node.ChildNodes.Count;            if (node.Checked == true)            {                if (nodeCount > 0)                {                    for (var i = 0; i < nodeCount; i++)                    {                        node.ChildNodes[i].Checked = true;                        var node1Count = node.ChildNodes[i].ChildNodes.Count;                        if (node1Count > 0)                        {                            for (var k = 0; k < node1Count; k++)                            {                                node.ChildNodes[i].ChildNodes[k].Checked = true;                                var node2Count = node.ChildNodes[i].ChildNodes[k].ChildNodes.Count;                                if (node2Count > 0)                                {                                    for (var j = 0; j < node2Count; j++)                                    {                                        node.ChildNodes[i].ChildNodes[k].ChildNodes[j].Checked = true;                                    }                                }                            }                        }                    }                }            }            else            {                if (nodeCount > 0)                {                    for (var i = 0; i < nodeCount; i++)                    {                        node.ChildNodes[i].Checked = false;                        var node1Count = node.ChildNodes[i].ChildNodes.Count;                        if (node1Count > 0)                        {                            for (var k = 0; k < node1Count; k++)                            {                                node.ChildNodes[i].ChildNodes[k].Checked = false;                                var node2Count = node.ChildNodes[i].ChildNodes[k].ChildNodes.Count;                                if (node2Count > 0)                                {                                    for (var j = 0; j < node2Count; j++)                                    {                                        node.ChildNodes[i].ChildNodes[k].ChildNodes[j].Checked = false;                                    }                                }                            }                        }                    }                }            }        }        protected void MyTreeView_SelectedNodeChanged(object sender, EventArgs e)        {            var tt = usertree.SelectedNode.Checked;            var dd = usertree.SelectedValue;            databind();        }        public void databind()        {            if (usertree.SelectedNode.Checked == false)            {                if (usertree.SelectedNode.ChildNodes.Count > 0)                {                    foreach (TreeNode subNode in usertree.SelectedNode.ChildNodes)                    {                        usertree.SelectedNode.Checked = true;                        subNode.Checked = true;                        if (subNode.ChildNodes.Count > 0)                        {                            foreach (TreeNode subNode2 in subNode.ChildNodes)                            {                                subNode2.Checked = true;                                if (subNode2.ChildNodes.Count > 0)                                {                                    foreach (TreeNode subNode3 in subNode2.ChildNodes)                                    {                                        subNode3.Checked = true