using Pur.Entity.configureEntity; 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 CoreFS.CA06; using Infragistics.Win.UltraWinTree; namespace Pur.Pop_upWindow { public partial class frmPopMatClass : FrmBase { public UltraTreeNode Q_Ultnode = null; string strTips = ""; public frmPopMatClass(OpeBase ob) { InitializeComponent(); this.ob = ob; getultree(); } /// /// 选择分类 /// /// /// 1:选择物料分类 public frmPopMatClass(OpeBase ob,string strTips) { InitializeComponent(); this.ob = ob; this.strTips = strTips; getultree(); } /// /// 获取物料分类树形结构 /// public void getultree() { PurmatclassEntity mat = new PurmatclassEntity(); mat.Validflag = "1"; DataTable dt = this.GetJsonService().execute("com.hnshituo.pur.configure.service.MatClassService", "find", new object[] { mat, 0, 0 }); if (dt == null || dt.Rows.Count < 1) { return; } DataTable dt_A = new DataTable();//物料分类 //筛选出根节点 DataRow[] rows = dt.Select("PARENTCODE='' or PARENTCODE is null"); dt_A = dt.Clone(); //克隆A的结构 foreach (DataRow row in rows) { dt_A.ImportRow(row);//复制行数据 } dt_A.DefaultView.Sort = "basename"; dt_A = dt_A.DefaultView.ToTable(); //添加物料大类 for (int j = 0; j < dt_A.Rows.Count; j++) { if (!ultraTree1.Nodes.Exists(dt_A.Rows[j]["BASECODE"].ToString())) { UltraTreeNode Ultnode = ultraTree1.Nodes.Add(dt_A.Rows[j]["BASECODE"].ToString(), dt_A.Rows[j]["BASENAME"].ToString()); getChildNodes(Ultnode, dt); } } } /// /// 递归查询父节点下的所有子节点 /// /// public void getChildNodes(UltraTreeNode Tnode, DataTable dt) { DataTable dt_A = dt.Clone();//物料分类 DataRow[] rows = dt.Select("PARENTCODE='" + Tnode.Key + "'"); foreach (DataRow row in rows) { dt_A.ImportRow(row);//复制行数据 } dt_A.DefaultView.Sort = "basename"; dt_A = dt_A.DefaultView.ToTable(); //添加物料分类 for (int j = 0; j < dt_A.Rows.Count; j++) { UltraTreeNode Ultnode = Tnode.Nodes.Add(dt_A.Rows[j]["BASECODE"].ToString(), dt_A.Rows[j]["BASENAME"].ToString()); getChildNodes(Ultnode, dt);//利用递归将当前节点的子节点添加进去 } } private void ultraTree1_AfterActivate(object sender, NodeEventArgs e) { UltraTreeNode Ultnode = ultraTree1.ActiveNode; Ultnode.Expanded = true; } private void ultraTree1_DoubleClick(object sender, EventArgs e) { if (strTips=="1") { if(ultraTree1.ActiveNode.Key.Length!=5) { MessageBox.Show("请选择物料小类"); return; } } Q_Ultnode = ultraTree1.ActiveNode; this.Close(); } } }