zoukankan      html  css  js  c++  java
  • 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;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        usertree.SelectedNode.Checked = true;
                    }
                }
                else
                {
                    if (usertree.SelectedNode.ChildNodes.Count > 0)
                    {
                        foreach (TreeNode subNode in usertree.SelectedNode.ChildNodes)
                        {
                            usertree.SelectedNode.Checked = false;
                            subNode.Checked = false;
                            if (subNode.ChildNodes.Count > 0)
                            {
                                foreach (TreeNode subNode2 in subNode.ChildNodes)
                                {
                                    subNode2.Checked = false;
    
                                    if (subNode2.ChildNodes.Count > 0)
                                    {
                                        foreach (TreeNode subNode3 in subNode2.ChildNodes)
                                        {
                                            subNode3.Checked = false;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        usertree.SelectedNode.Checked = false;
                    }
                }
                usertree.SelectedNode.Selected = false;
            }
    
    
    
    
            protected void Button1_Click(object sender, EventArgs e)
            {
                foreach (TreeNode tn in usertree.CheckedNodes)
                {
                    try
                    {
    
                        string userid = tn.Value.ToString();
                      
                            ListItem li = new ListItem();
                           li.Text = tn.Value;
                           li.Value = tn.Text;
    
                            var tt = 0;
                            for (var i = 0; i < NeedExamStaff.Items.Count; i++)
                            {
    
                                if (NeedExamStaff.Items[i].Value == li.Value)
                                {
                                    tt = 1;
                                }
                            }
    
                            if (tt == 0)
                            {
                                this.NeedExamStaff.Items.Add(li);
    
                                if (this.NeedStaffNumber.Text != "")
                                {
                                    this.NeedStaffNumber.Text = (Convert.ToInt32(this.NeedStaffNumber.Text) + 1).ToString();
                                    this.VNeedStaffNumber.InnerText = "";
                                }
                                else
                                {
                                    this.NeedStaffNumber.Text = "1";
                                    this.VNeedStaffNumber.InnerText = "";
                                }
    
                            }
    
                        }
                    
                    catch
                    {
    
                    }
                }
            }
    View Code
  • 相关阅读:
    软件测试基础
    Python
    Python
    C# 打开帮助文档,打开电脑中其他应用或者文件
    C# 设置窗口大小为不可调、取消最大化、最小化窗口按键
    C# 控件置于最顶层、最底层、隐藏、显示
    C# 在窗口绘制图形(打点、画圆、画线)
    C# 不同窗口传递参数
    C# 禁止在textBox输入框输入非法字符
    C# 设定弹出窗体位置
  • 原文地址:https://www.cnblogs.com/yuanjiehot/p/4396092.html
Copyright © 2011-2022 走看看