在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → winfrom自定义树形

winfrom自定义树形

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.32M
  • 下载次数:45
  • 浏览次数:611
  • 发布时间:2016-03-01
  • 实例类别:C#语言基础
  • 发 布 人:348027355
  • 文件格式:.rar
  • 所需积分:2
 相关标签: 树形 WinFrom

实例介绍

【实例简介】
【实例截图】
【核心代码】

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 TreeControlLibrary;
using SQLHelper;
using System.Threading;
using BusinessInterface;
using BusinessInstance;
using DataMode;

namespace TreeViews
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }
        ISimpleInfo Sim = null;
        private void Form1_Load(object sender, EventArgs e)
        {
            //接口
            Sim = LogicInstance.NewInfo();

            this.trees.AllowDrop = true;//是否可以进行拖动
            Databinding();

        }

        #region 动态绑定数据

        private void BindTree(TreeNodeCollection nodes, DataTable dataSource, int tag)
        {

            nodes.Clear();
            string filter;
            filter = string.Format("{0}={1}", "ParentID", tag);
            DataRow[] drarr = dataSource.Select(filter);
            TreeNode node;
            foreach (DataRow dr in drarr)
            {
                node = new TreeNode();
                node.Text = (string)dr["RegionName"];
                node.Tag = (int)dr["RegionID"];
                node.Name = (string)dr["LCode"];
                nodes.Add(node);
                BindTree(node.Nodes, dataSource, (int)node.Tag);
            }

        }

        /// <summary>
        /// 动态绑定数据
        /// </summary>
        public void Databinding()
        {
            string error = string.Empty;
            //Sim.BindTreeInfo(mytable, 0, "RegionID", "ParentID", "RegionName", "LCode", ref error);
            DataTable mytable = new DataTable();
            mytable = Sim.GetTable("B_Region", " and DelFlag=0  order by LCode");
            BindTree(trees.Nodes, mytable, 0);
            if (error != string.Empty)
            {
                MessageBox.Show(error);
            }

            trees.ExpandAll();
        }

        #endregion


        #region 节点操作

        /// <summary>
        /// 节点的添加
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trees_Add(object sender, TreeClass.ChangeMyArgs e)
        {
            string aaa = e.NameInfo;
            Form f = Application.OpenForms["ModifiyNode"];  //查找是否打开过Form1窗体
            if (f == null)  //没打开过
            {
                ModifiyNode fname = new ModifiyNode();
                fname.TypeInfo = e.TypeInfo;
                fname.LCode = e.NameInfo;
                if (fname.ShowDialog() == DialogResult.OK)
                {
                    Databinding();
                }
            }
            else
            {
                f.Focus();   //打开过就让其获得焦点
            }
        }


        /// <summary>
        /// 节点的删除
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trees_Del(object sender, TreeClass.ChangeMyArgs e)
        {
            string errorinfo = "";
            if (MessageBox.Show("确定删除?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                DataTable myTable = new DataTable();
                myTable.TableName = "B_Region";
                myTable = Sim.GetTable("B_Region", " and DelFlag=0 and LCode='"   e.NameInfo   "' order by LCode");
                bool info = Sim.Del(myTable, ref errorinfo);
                if (info)
                {
                    MessageBox.Show("操作成功");
                }
                else
                {
                    MessageBox.Show("操作失败");
                }
                Databinding();
            }
        }

        /// <summary>
        /// 节点的修改
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trees_Update(object sender, TreeClass.ChangeMyArgs e)
        {
            string errorinfo = "";
            string NewName = e.RegionName;
            DataTable myTable = new DataTable();

            myTable = Sim.GetTable("B_Region", " and DelFlag=0 and LCode='"   e.NameInfo   "' order by LCode");
            myTable.TableName = "B_Region";
            myTable.Rows[0]["RegionName"] = NewName;
            //string sqldel = "update B_Region set RegionName='"   NewName   "' where LCode='"   e.NameInfo   "'";
            if (!Sim.Update(myTable, ref errorinfo))
            {
                MessageBox.Show("操作失败,请刷新后重试");
            }
            //Databinding();
        }


        /// <summary>
        /// 移动节点的保存
        /// </summary>
        /// <param name="NewParentNode">移动最后的新父节点</param>
        /// <param name="ChildNode">移动节点</param>
        /// <returns>0失败-1成功</returns>
        protected int MoveNodes(string NewParentNode, string ChildNode)
        {
            string errorinfo = "";
            DataTable mytable = new DataTable();

            
            int ResNum = 0;
            string FatherLCode = ""; string HighLCode = ""; string NewLCode = "";//修改后的节点名字:父节点 本级最大节点
            string sql = ""; string FNewCode = "";//保存第一次结束以后的父级节点;
            string NewFaherID;
            DataRow[] drarr;
            if (ChildNode != "")
            {
                DataTable dataSource = new DataTable();
                dataSource = SQLHelper.SQLHelper.GetDataTable("select RegionID,ParentID,RegionCode,RegionName,LCode,DelFlag,"
                             "Remark from B_Region where DelFlag=0 and LCode like '"   ChildNode   "%' order by LCode ");
                drarr = dataSource.Select();

                NewFaherID = SQLHelper.SQLHelper.ExecuteScalar("select RegionID from B_Region where LCode='"   NewParentNode   "'").ToString();//新的父ID
                FatherLCode = NewParentNode;

                foreach (DataRow dr in drarr)
                {
                    DataTable newtable = new DataTable();
                    //新的开头编号
                    if (dr["LCode"].ToString() == ChildNode)
                    {

                        try
                        {
                            //第一个节点,改变成当前父节点的最大子节点
                            HighLCode = SQLHelper.SQLHelper.ExecuteScalar("select SUBSTRING(LCode,LEN(LCode)-2,3) from B_Region where LCode like '"   FatherLCode   "___' and LEN(LCode)>3 and DelFlag=0 order by LCode desc").ToString();
                            if ((int.Parse(HighLCode)   1).ToString().Length == 1)
                            {
                                HighLCode = "00"   (int.Parse(HighLCode)   1).ToString();
                            }
                            else if ((int.Parse(HighLCode)   1).ToString().Length == 2)
                            {
                                HighLCode = "0"   (int.Parse(HighLCode)   1).ToString();
                            }
                        }
                        catch (Exception)
                        {
                            HighLCode = "001";
                        }
                        NewLCode = FNewCode = FatherLCode   HighLCode;

                        if (mytable != null)
                        {
                            newtable = Sim.GetTable("B_Region", " and  LCode='"   dr["LCode"].ToString()   "' order by LCode");
                            newtable.Rows[0]["LCode"] = NewLCode;
                            newtable.Rows[0]["ParentID"] = NewFaherID;
                            mytable.Merge(newtable);

                        }
                        else
                        {
                            mytable = Sim.GetTable("B_Region", " and  LCode='"   dr["LCode"].ToString()   "' order by LCode");

                        }
                    }
                    else
                    {
                        //以后的子节点,只保留最后三位;
                        HighLCode = dr["LCode"].ToString().Substring(dr["LCode"].ToString().Length - 3);
                        NewLCode = FNewCode   HighLCode;


                        if (mytable != null)
                        {
                            newtable = Sim.GetTable("B_Region", " and  LCode='"   dr["LCode"].ToString()   "' order by LCode");
                            newtable.Rows[0]["LCode"] = NewLCode;
                            mytable.Merge(newtable);

                        }
                        else
                        {
                            mytable = Sim.GetTable("B_Region", " and  LCode='"   dr["LCode"].ToString()   "' order by LCode");
                        }
                    }
                }
                ///已经获取完成Datatable,保存操作
                try
                {
                    mytable.TableName = "B_Region";
                    //保存   
                    bool info = Sim.Update(mytable, ref errorinfo);
                    if (info)
                    {
                        ResNum = 1;
                    }
                    else
                    {
                        ResNum = 0;
                    }
                    Databinding();
                }
                catch (Exception)
                {
                    ResNum = 0;
                }
                ResNum = 1;
            }
            return ResNum;
        }

        ///// <summary>
        ///// 节点当前后面位数更新
        ///// </summary>
        ///// <param name="ChildNode">当前节点</param>
        ///// <returns></returns>
        //protected int MoveNodes(string ChildNode)
        //{
        //    int ResNum = 0;
        //    string sql = "select LCode from B_Region where  LCode  like '"   ChildNode.Substring(0, ChildNode.Length - 3)   "%' and LEN(LCode)>="   ChildNode.Length   " and LCode<>'"   ChildNode   "' and LCode>'"   ChildNode   "' order by Lcode";
        //    DataTable MyTable = new DataTable();
        //    MyTable = SQLHelper.SQLHelper.GetDataTable(sql);
        //    try
        //    {
        //        string FirstCode = MyTable.Rows[0][0].ToString();
        //        if (FirstCode.Substring(FirstCode.Length - 3, 3) != "001")//当节点需要操作时 才进行操作
        //        {
        //            foreach (DataRow dr in MyTable.Rows)
        //            {
        //                //string OldCode=dr[]
        //            }

        //        }
        //    }
        //    catch (Exception)
        //    {

        //        ResNum = 1;
        //    }

        //    return ResNum;
        //}

        /// <summary>
        /// 节点的移动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void trees_Move(object sender, TreeClass.ChangeMyArgs e)
        {
            int Num_First = MoveNodes(e.NameInfo, e.RegionName);
            if (Num_First == 0)
            {
                MessageBox.Show("操作失败,请刷新后重试");
            }
        }
        #endregion
    }
}

标签: 树形 WinFrom

实例下载地址

winfrom自定义树形

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警