基本信息
源码名称:winfrom自定义树形
源码大小:0.32M
文件格式:.rar
开发语言:C#
更新时间:2016-03-01
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
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
}
}