实例介绍
【实例简介】
【实例截图】
【核心代码】
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
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论