frmPopMatClass.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. using Pur.Entity.configureEntity;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using CoreFS.CA06;
  11. using Infragistics.Win.UltraWinTree;
  12. namespace Pur.Pop_upWindow
  13. {
  14. public partial class frmPopMatClass : FrmBase
  15. {
  16. public UltraTreeNode Q_Ultnode = null;
  17. string strTips = "";
  18. public frmPopMatClass(OpeBase ob)
  19. {
  20. InitializeComponent();
  21. this.ob = ob;
  22. getultree();
  23. }
  24. /// <summary>
  25. /// 选择分类
  26. /// </summary>
  27. /// <param name="ob"></param>
  28. /// <param name="strTips">1:选择物料分类</param>
  29. public frmPopMatClass(OpeBase ob,string strTips)
  30. {
  31. InitializeComponent();
  32. this.ob = ob;
  33. this.strTips = strTips;
  34. getultree();
  35. }
  36. /// <summary>
  37. /// 获取物料分类树形结构
  38. /// </summary>
  39. public void getultree()
  40. {
  41. PurmatclassEntity mat = new PurmatclassEntity();
  42. mat.Validflag = "1";
  43. DataTable dt = this.GetJsonService().execute<DataTable>("com.hnshituo.pur.configure.service.MatClassService", "find", new object[] { mat, 0, 0 });
  44. if (dt == null || dt.Rows.Count < 1)
  45. {
  46. return;
  47. }
  48. DataTable dt_A = new DataTable();//物料分类
  49. //筛选出根节点
  50. DataRow[] rows = dt.Select("PARENTCODE='' or PARENTCODE is null");
  51. dt_A = dt.Clone(); //克隆A的结构
  52. foreach (DataRow row in rows)
  53. {
  54. dt_A.ImportRow(row);//复制行数据
  55. }
  56. dt_A.DefaultView.Sort = "basename";
  57. dt_A = dt_A.DefaultView.ToTable();
  58. //添加物料大类
  59. for (int j = 0; j < dt_A.Rows.Count; j++)
  60. {
  61. if (!ultraTree1.Nodes.Exists(dt_A.Rows[j]["BASECODE"].ToString()))
  62. {
  63. UltraTreeNode Ultnode = ultraTree1.Nodes.Add(dt_A.Rows[j]["BASECODE"].ToString(), dt_A.Rows[j]["BASENAME"].ToString());
  64. getChildNodes(Ultnode, dt);
  65. }
  66. }
  67. }
  68. /// <summary>
  69. /// 递归查询父节点下的所有子节点
  70. /// </summary>
  71. /// <param name="Tnode"></param>
  72. public void getChildNodes(UltraTreeNode Tnode, DataTable dt)
  73. {
  74. DataTable dt_A = dt.Clone();//物料分类
  75. DataRow[] rows = dt.Select("PARENTCODE='" + Tnode.Key + "'");
  76. foreach (DataRow row in rows)
  77. {
  78. dt_A.ImportRow(row);//复制行数据
  79. }
  80. dt_A.DefaultView.Sort = "basename";
  81. dt_A = dt_A.DefaultView.ToTable();
  82. //添加物料分类
  83. for (int j = 0; j < dt_A.Rows.Count; j++)
  84. {
  85. UltraTreeNode Ultnode = Tnode.Nodes.Add(dt_A.Rows[j]["BASECODE"].ToString(), dt_A.Rows[j]["BASENAME"].ToString());
  86. getChildNodes(Ultnode, dt);//利用递归将当前节点的子节点添加进去
  87. }
  88. }
  89. private void ultraTree1_AfterActivate(object sender, NodeEventArgs e)
  90. {
  91. UltraTreeNode Ultnode = ultraTree1.ActiveNode;
  92. Ultnode.Expanded = true;
  93. }
  94. private void ultraTree1_DoubleClick(object sender, EventArgs e)
  95. {
  96. if (strTips=="1")
  97. {
  98. if(ultraTree1.ActiveNode.Key.Length!=5)
  99. {
  100. MessageBox.Show("请选择物料小类");
  101. return;
  102. }
  103. }
  104. Q_Ultnode = ultraTree1.ActiveNode;
  105. this.Close();
  106. }
  107. }
  108. }