TreeView的动态绑定(C#)

 //添加公司下第一级组
    private void AddChildNodes(TreeNode tn)
    {
        int op_id = this.getCompanyID(tn.Value.ToString());  //获取根节点ID
        treedata = tree.getTreeViewRootByOperatorID(op_id);    //获取根节点下所有直属组

        for (int i = 0; i < treedata.TreeViewTB.Count; i++)
        {
            TreeNode ctn = new TreeNode();
            ctn.Text = treedata.TreeViewTB.Rows[i]["group_name"].ToString();
            ctn.Value = "G" + treedata.TreeViewTB.Rows[i]["group_id"].ToString();

            int group_id = int.Parse(treedata.TreeViewTB.Rows[i]["group_id"].ToString());
            tn.ChildNodes.Add(ctn);

            int statue = int.Parse(treedata.TreeViewTB.Rows[i]["statue"].ToString());
            if (statue == 0 || statue.Equals("0"))
            {
                this.AddGrandchild(ctn, group_id);   //status=0时表示该节点为叶节点
            }
            else if (statue == 1 || statue.Equals("1"))
            {
                this.AddOtherChildNote(ctn, group_id, op_id); //status=1时表示该节点下面有子节点
                this.AddGrandchild(ctn, group_id);  //添加完子节点后添加该组内所有数据
            }
        }

    }

    //添加最后一级组内所有车辆
    private void AddGrandchild(TreeNode gc, int group_id)
    {
        IGU.BusinessFacade.Device device = new IGU.BusinessFacade.Device();
        IGU.Data.TransportData transportdata = new IGU.Data.TransportData();
        transportdata = device.getTransport(group_id);   //通过调用逻辑层的方法获取组内所有数据信息
        if (transportdata.TransportTB.Count > 0)
        {
            for (int i = 0; i < transportdata.TransportTB.Count; i++)
            {
                TreeNode ctn = new TreeNode();
                ctn.Text = transportdata.TransportTB.Rows[i]["transport_paizhao"].ToString();

               //为ID加上一个前缀,这样取的时候就容易判断该ID是公司OR组OR车辆
                ctn.Value = "T" + transportdata.TransportTB.Rows[i]["transport_id"].ToString(); 

                gc.ChildNodes.Add(ctn);
            }
        }
    }

    //添加下一级组
    private void AddOtherChildNote(TreeNode tc, int up_id, int op_id)
    {
        IGU.Data.TreeViewData treeviewdata = new IGU.Data.TreeViewData();

        treeviewdata = tree.getTreeViewGroupByOperator(up_id, op_id);

        if (treeviewdata.TreeViewTB.Count > 0)
        {

            for (int i = 0; i < treeviewdata.TreeViewTB.Count; i++)
            {
                TreeNode tnc = new TreeNode();
                tnc.Text = treeviewdata.TreeViewTB.Rows[i]["group_name"].ToString();
                tnc.Value = "G" + treeviewdata.TreeViewTB.Rows[i]["group_id"].ToString(); 
                tc.ChildNodes.Add(tnc);
                int group_id = int.Parse(treeviewdata.TreeViewTB.Rows[i]["group_id"].ToString());
                int statue = int.Parse(treeviewdata.TreeViewTB.Rows[i]["statue"].ToString());
                if (statue == 0 || statue.Equals("0"))
                {
                    this.AddGrandchild(tnc, group_id);
                }
                else if (statue == 1 || statue.Equals("1"))
                {
                    this.AddOtherChildNote(tnc, group_id, op_id);
                    this.AddGrandchild(tnc, group_id);
                }
            }
        }

    }

    //获取Treeview前ChectBox内多个ID
    public string GetAllNodeText(TreeNodeCollection tnc)
    {

        foreach (TreeNode node in tnc)
        {

            if (node.ChildNodes.Count != 0)
            {
                GetAllNodeText(node.ChildNodes);
            }
            if (node.Checked == true)
            {
                transport = transport + node.Value;
            }
        }

        return transport;

    }

    //把String转换Int  区分不同组或车辆的ID
    public int getCompanyID(string sub_ID)
    {
        int count = (sub_ID).Length;
        string left = (sub_ID).Substring(1, count - 1);
        int op_id = Convert.ToInt32(left);

        return op_id;
    }

    //checkBox事件
    protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
    {

        SetChildChecked(e.Node);
    }

 

//便利选中的CheckBox
    private void SetChildChecked(TreeNode parentNode)
    {
        foreach (TreeNode node in parentNode.ChildNodes)
        {
            node.Checked = parentNode.Checked;

            if (node.ChildNodes.Count > 0)
            {
                SetChildChecked(node);
            }
        }

     }

   //JS事件
        TreeView1.Attributes.Add("onclick", "postBackByObject()");   //当父结点被选中的时候子节点自动选择上,放在Page_Load中


 

//ASP页面的head加上runat="server"

<head runat="server">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值