递归树节点的使用

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TX.DataAccess;
using TX.FrameWorks;
using LT.Production.DataAccess;
using Infragistics.Win.UltraWinGrid;

namespace LT.Production.FormLibraries
{
    public partial class frmRightUserInfo : Form
    {
        SqlExecuteMaster sqlcon = new SqlExecuteMaster();
        private DataTable dt1 = null;
        public frmRightUserInfo()
        {
            InitializeComponent();
            this.txMultiLanguage1.GetFormLanguage(this);
            BindRoot();
            BindUserCode();
        }

        private void BindGridView()
        {
            string strSql = "EXEC spG_RightUserDate @ActionType='Query8',@DBNo='" + GlobalVariables.UserInfo.DBNo + "',@UserCode='" + this.cmbUserCode.SelectedValue + "'";
            dt1 = sqlcon.GetDataTable(strSql);
            this.dgRightUserInfo.DataSource = dt1;
        }

        /// <summary>
        /// 绑定用户信息
        /// </summary>
        private void BindUserCode()
        {
            string strSql = "EXEC spG_RightUserDate @ActionType='Query7',@DBNo='" + GlobalVariables.UserInfo.DBNo + "'";
            DataTable dt = sqlcon.GetDataTable(strSql);
            DataRow dr = dt.NewRow();
            dr["UserName"] = "";
            dr["UserCode"] = "";
            dt.Rows.InsertAt(dr, 0);
            this.cmbUserCode.DisplayMember = "UserName";
            this.cmbUserCode.ValueMember = "UserCode";
            this.cmbUserCode.DataSource = dt;
        }

        /// <summary>
        /// 绑定树菜单
        /// </summary>
        private void BindRoot()
        {
            this.treeView1.Nodes.Clear();
            string strSql = "EXEC spG_RightUserDate @ActionType='Query3',@DBNo='" + GlobalVariables.UserInfo.DBNo + "'";
            DataTable dt = sqlcon.GetDataTable(strSql);
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                TreeNode rootNode = new TreeNode();
                string partid = dt.Rows[i]["PartID"].ToString().Trim();
                string partname = dt.Rows[i]["PartName1"].ToString().Trim();
                rootNode.Name = partid;
                rootNode.Text = partname;
                treeView1.Nodes.Add(rootNode);
                rootNode.ExpandAll();

                string strSql2 = "EXEC spG_RightUserDate @ActionType='Query4',@PartID='" + partid + "'";
                DataTable dt2 = sqlcon.GetDataTable(strSql2);
                for (int c2 = 0; c2 < dt2.Rows.Count; c2++)
                {
                    TreeNode rootNode2 = new TreeNode();
                    string partid2 = dt2.Rows[c2]["PartID2"].ToString().Trim();
                    string partname2 = dt2.Rows[c2]["PartName2"].ToString().Trim();
                    rootNode2.Name = partid2;
                    rootNode2.Text = partname2;
                    rootNode.Nodes.Add(rootNode2);
                    rootNode2.ExpandAll();

                    string strSql3 = "EXEC spG_RightUserDate @ActionType='Query5',@PartID2='" + partid2 + "'";
                    DataTable dt3 = sqlcon.GetDataTable(strSql3);
                    for (int c3 = 0; c3 < dt3.Rows.Count; c3++)
                    {
                        TreeNode rootNode3 = new TreeNode();
                        string partid3 = dt3.Rows[c3]["PartID3"].ToString().Trim();
                        string partname3 = dt3.Rows[c3]["PartName3"].ToString().Trim();
                        rootNode3.Name = partid3;
                        rootNode3.Text = partname3;
                        rootNode2.Nodes.Add(rootNode3);
                        string strSql4 = "EXEC spG_RightUserDate @ActionType='Query6',@PartID3='" + partid3 + "'";
                        DataTable dt4 = sqlcon.GetDataTable(strSql4);
                        for (int c4 = 0; c4 < dt4.Rows.Count; c4++)
                        {
                            TreeNode rootNode4 = new TreeNode();
                            string partid4 = dt4.Rows[c4]["PartID4"].ToString().Trim();
                            string partname4 = dt4.Rows[c4]["PartName4"].ToString().Trim();
                            rootNode4.Name = partid4;
                            rootNode4.Text = partname4;
                            rootNode3.Nodes.Add(rootNode4);
                        }
                    }
                }
            }
        }


        private void cmbUserCode_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Cursor = Cursors.WaitCursor; // 等待光标
            BindGridView();
            //清空所有节点
            for (int i = 0; i < this.treeView1.Nodes.Count; i++)
            {
                CheckNode(this.treeView1.Nodes[i], false);
            }
            if (this.cmbUserCode.SelectedIndex > 0)
            {
                for (int i = 0; i < this.treeView1.Nodes.Count; i++)
                {
                    GetNodeText2(this.treeView1.Nodes[i]);
                }
            }
            this.Cursor = Cursors.Default; // 默认光标  
        }

        private void CheckNode(TreeNode node, bool flag)
        {
            node.Checked = flag;
            if (node.Nodes.Count != 0)
            {
                for (int i = 0; i < node.Nodes.Count; i++)
                {
                    CheckNode(node.Nodes[i], flag);
                }
            }
        }

        private void GetNodeText2(TreeNode node)
        {
            if (node.Nodes.Count != 0)
            {
                for (int i = 0; i < node.Nodes.Count; i++)
                {
                    for (int j = 0; j < dt1.Rows.Count; j++)
                    {
                        if (node.Nodes[i].Name.Trim() == dt1.Rows[j]["PartID"].ToString().Trim())
                        {
                                node.Nodes[i].Checked = true;
                        }
                        else
                        {
                            GetNodeText2(node.Nodes[i]);
                        }
                    }
                }
            }
        }

        string str = "";
        private void cmdSave_Click(object sender, EventArgs e)
        {
            if (this.cmbUserCode.SelectedIndex > 0)
            {
                str = "";
                for (int i = 0; i < this.treeView1.Nodes.Count; i++)
                {
                    GetNodeText(this.treeView1.Nodes[i]);
                }
                string strSql = "EXEC spG_RightUserDate @ActionType='Add1',@UserCode='" + this.cmbUserCode.SelectedValue.ToString().Trim() + "',@Str='" + str.Trim() + "',@CreatedBy='" + GlobalVariables.UserInfo.UserCode + "',@DBNo='" + GlobalVariables.UserInfo.DBNo + "'";
                if (sqlcon.ExecuteSql(strSql) > 0)
                {
                    this.txMessenger1.Show(TX.Winforms.EnumFactory.MessengerEnum.MessageType.Info, this.txMultiLanguage1.GetMessageById(11));
                    BindGridView();
                }
                else
                    this.txMessenger1.Show(TX.Winforms.EnumFactory.MessengerEnum.MessageType.Info, this.txMultiLanguage1.GetMessageById(12));
            }
            else
                this.txMessenger1.Show(TX.Winforms.EnumFactory.MessengerEnum.MessageType.Info, this.txMultiLanguage1.GetMessageById(124));
        }

        private void GetNodeText(TreeNode node)
        {
            if (node.Checked)
                str += node.Name.Trim() + "&" + node.Text.Trim() + "^";
            if (node.Nodes.Count != 0)
            {
                for (int i = 0; i < node.Nodes.Count; i++)
                {
                    GetNodeText(node.Nodes[i]);
                }
            }
        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值