FrmBaseInfoNew.cs 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901
  1. using Core.Mes.Client.Comm.Control;
  2. using Core.Mes.Client.Comm.Server;
  3. using Core.Mes.Client.Comm.Tool;
  4. using CoreFS.CA06;
  5. using Infragistics.Win.UltraWinGrid;
  6. using Infragistics.Win.UltraWinTree;
  7. using System;
  8. using System.Collections;
  9. using System.Data;
  10. using System.Drawing;
  11. using System.Windows.Forms;
  12. namespace Core.StlMes.Client.Lims.Data.PipeAndOutdec
  13. {
  14. public partial class FrmBaseInfoNew : FrmBase
  15. {
  16. public FrmBaseInfoNew()
  17. {
  18. InitializeComponent();
  19. ExceptionHelper.RegistException();
  20. //this.IsLoadUserView = true; //平台F1功能
  21. }
  22. public override void ToolBar_Click(object sender, string ToolbarKey)
  23. {
  24. switch (ToolbarKey)
  25. {
  26. case "Query":
  27. try
  28. {
  29. this.Cursor = Cursors.WaitCursor;
  30. doQuery();
  31. }
  32. finally
  33. {
  34. this.Cursor = Cursors.Default;
  35. }
  36. break;
  37. case "Add":
  38. doAdd();
  39. break;
  40. case "Update":
  41. doModify();
  42. break;
  43. case "Delete":
  44. this.doDeleteOrResume(true);
  45. break;
  46. case "doResume":
  47. this.doDeleteOrResume(false);
  48. break;
  49. case "Close":
  50. this.Close();
  51. break;
  52. }
  53. }
  54. /// <summary>
  55. /// 树节点选中事件触发时,存储父节点id,防止当父节点选中项转移到其他焦点时,无法获取数据。
  56. /// </summary>
  57. private static string parentCode = "";
  58. /// <summary>
  59. /// 用于修改时验证重复项
  60. /// </summary>
  61. private static string VName = "";
  62. private bool IsExistValidChild(string baseCode)
  63. {
  64. DataTable dt = ServerHelper.GetData("com.steering.lims.data.base.ComBaseInfo.isExistValidChild", new object[] { baseCode }, ob);
  65. if (dt != null && dt.Rows[0][0].ToString() != "0")
  66. {
  67. return true;
  68. }
  69. return false;
  70. }
  71. private bool IsExistValidParent(string sortCode)
  72. {
  73. DataTable dt = ServerHelper.GetData("com.steering.lims.data.base.ComBaseInfo.isExistValidParent", new object[] { sortCode }, ob);
  74. if (dt != null && dt.Rows[0][0].ToString() != "0")
  75. {
  76. return true;
  77. }
  78. return false;
  79. }
  80. /// <summary>
  81. /// 作废或恢复
  82. /// </summary>
  83. /// <param name="isDelete">true作废 false恢复</param>
  84. private void doDeleteOrResume(bool isDelete)
  85. {
  86. //已经没有批量作废功能,单表作废功能实现。
  87. ArrayList param = new ArrayList();
  88. if (ultraGrid1.ActiveRow == null)
  89. {
  90. MessageBox.Show("请选择需要" + (isDelete ? "作废" : "恢复") + "的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  91. return;
  92. }
  93. string validflagStr = ultraGrid1.ActiveRow.Cells["VALIDFLAG"].Value.ToString();
  94. //无效数据不允许作废
  95. if ("0".Equals(validflagStr))
  96. {
  97. if (isDelete)
  98. {
  99. MessageBox.Show("无效数据不支持作废操作。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  100. return;
  101. }
  102. }
  103. else
  104. {
  105. //有效数据不允许恢复
  106. if (!isDelete)
  107. {
  108. MessageBox.Show("有效数据不支持恢复操作。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  109. return;
  110. }
  111. }
  112. string baseCode = ultraGrid1.ActiveRow.Cells["BASECODE"].Value.ToString();
  113. string parentCode = ultraGrid1.ActiveRow.Cells["SORTCODE"].Value.ToString();
  114. if (isDelete && IsExistValidChild(baseCode))
  115. {
  116. MessageUtil.ShowWarning("该节点包含有效的子节点,不能作废!");
  117. return;
  118. }
  119. if (isDelete == false && IsExistValidParent(parentCode) == false)
  120. {
  121. MessageUtil.ShowWarning("该节点没有有效的父节点,不能恢复!");
  122. return;
  123. }
  124. ArrayList parm = new ArrayList();
  125. param.Add(baseCode);
  126. if (param.Count > 0 && MessageBox.Show("是否确认" + (isDelete ? "作废" : "恢复") + "选中的数据!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  127. {
  128. try
  129. {
  130. int count = ServerHelper.SetData("com.steering.lims.data.base.ComBaseInfo.deleteLineInfo", new Object[] { param, UserInfo.GetUserName(), isDelete }, this.ob);
  131. if (count > 0)
  132. {
  133. binUltraGrid(parentCode);
  134. //作废聚焦
  135. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  136. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  137. {
  138. row = ultraGrid1.Rows[i];
  139. if (row.Cells["BASECODE"].Value.ToString().Equals(baseCode))
  140. {
  141. row.Activate();
  142. break;
  143. }
  144. }
  145. }
  146. }
  147. catch (Exception ex)
  148. {
  149. MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  150. }
  151. }
  152. }
  153. /// <summary>
  154. /// 验证必填项
  155. /// </summary>
  156. /// <returns></returns>
  157. private bool ValidInput()
  158. {
  159. if (string.IsNullOrEmpty(txtName.Text.Trim()))
  160. {
  161. MessageBox.Show("请输入基础分类名称!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  162. return false;
  163. }
  164. return true;
  165. }
  166. /// <summary>
  167. /// 修改操作
  168. /// </summary>
  169. private void doModify()
  170. {
  171. //判断当前树节点是否有选中项,如果没有则不允许新增。 || !(treeView1.SelectedNode.Nodes.Count > 0)
  172. //if (treeView1.SelectedNode == null)
  173. //{
  174. // MessageBox.Show("请先选中左侧基础分类树节点!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  175. // return;
  176. //}
  177. if (parentCode == "")
  178. {
  179. MessageBox.Show("请先选中左侧基础分类树节点!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  180. return;
  181. }
  182. //BASECODE,BASENAME,SORTCODE,ISVISIBLE,MNEMONIC_CODE,SEQ,FLAG
  183. //基础分类编码,基础分类名称,快速检索码,可编辑标志(1:可编辑,0:不可编辑),拼音助记码,序号(排序用),
  184. //是否允许增加子类(1:允许,0:不允许)
  185. if (ultraGrid1.ActiveRow == null)
  186. {
  187. MessageBox.Show("请选择需要修改的数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  188. return;
  189. }
  190. string validflagStr = ultraGrid1.ActiveRow.Cells["VALIDFLAG"].Value.ToString();
  191. //无效数据不允许修改
  192. if ("0".Equals(validflagStr))
  193. {
  194. MessageBox.Show("无效数据不支持修改操作。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  195. return;
  196. }
  197. if (ValidInput())
  198. {
  199. ArrayList parm = new ArrayList();
  200. //父节点的编号+当前手动输入的后半段编号,需要提供验证功能。
  201. string baseCode = this.ultraGrid1.ActiveRow.Cells["baseCode"].Value.ToString();
  202. //先判断基础分类名称是否重复,如果重复则return,并提示他。
  203. string name = txtName.Text.Trim();
  204. //验证是否修改了name
  205. if (!VName.Equals(name))
  206. {
  207. //验证名称是否重复。
  208. if (isRepeatName(parentCode, name))
  209. {
  210. MessageBox.Show("基础分类名称\"" + name + "\"已存在,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  211. return;
  212. }
  213. }
  214. if (MessageBox.Show("是否确认修改?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  215. {
  216. return;
  217. }
  218. //基础分类名称
  219. parm.Add(name);
  220. //快速检索码,父节点编号
  221. //string parentCode = this.parentCode;
  222. //parm.Add(parentCode);
  223. //可编辑标识
  224. //parm.Add(cmbEdit.Value.ToString().Trim());
  225. //拼音助记码
  226. parm.Add("");
  227. //序号也应该是自动生成的
  228. //parm.Add(txtSEQ.Text.Trim());
  229. //是否允许添加子类,因此,实际上在新增时,还需要判断该字段,假设为否,则提示他不可以新增子类。
  230. if (chbxAddChild.Checked)
  231. {
  232. parm.Add(1);
  233. }
  234. else
  235. {
  236. parm.Add(0);
  237. }
  238. //admin
  239. parm.Add(this.UserInfo.GetUserName());
  240. //备注
  241. parm.Add(txtMemo.Text);
  242. //id最后加入
  243. parm.Add(baseCode);
  244. CoreClientParam ccp = new CoreClientParam();
  245. ccp.ServerName = "com.steering.lims.data.base.ComBaseInfo";
  246. ccp.MethodName = "doModify";
  247. ccp.ServerParams = new object[] { parm };
  248. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  249. if (ccp.ReturnCode == -1) return;
  250. //刷新Grid数据
  251. binUltraGrid(parentCode);
  252. //刷新树节点数据
  253. //treeView1.SelectedNode.Nodes.Find(baseCode,false) = name;
  254. //修改树节点数据
  255. foreach (UltraTreeNode anode in treeView1.ActiveNode.Nodes)
  256. {
  257. if (baseCode.Equals(anode.Tag.ToString()))
  258. {
  259. anode.Text = name;
  260. }
  261. }
  262. //高亮显示新增的数据
  263. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  264. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  265. {
  266. row = ultraGrid1.Rows[i];
  267. if (row.Cells["BASECODE"].Value.ToString().Equals(baseCode))
  268. {
  269. row.Activate();
  270. break;
  271. }
  272. }
  273. }
  274. }
  275. /// <summary>
  276. /// 查找树节点根据tag
  277. /// </summary>
  278. /// <param name="treeview">要查找的树</param>
  279. /// <param name="treeTag">treetag</param>
  280. /// <returns></returns>
  281. public TreeNode[] FindTreeNodeByNodeTag(TreeView treeview, string treeTag)
  282. {
  283. if (treeview.Nodes == null)
  284. {
  285. return null;
  286. }
  287. TreeNode[] treeNodeList = null;
  288. ArrayList treelist = new ArrayList();
  289. foreach (TreeNode trnode in treeview.Nodes)
  290. {
  291. FindTreeNodeFromTag(trnode, treeTag, ref treelist);
  292. }
  293. if (treelist.Count > 0)
  294. {
  295. treeNodeList = new TreeNode[treelist.Count];
  296. for (int i = 0; i < treelist.Count; i++)
  297. {
  298. treeNodeList[i] = (TreeNode)treelist[i];
  299. }
  300. }
  301. return treeNodeList;
  302. }
  303. /// <summary>
  304. /// 查找具体的tag
  305. /// </summary>
  306. /// <param name="trnode"></param>
  307. /// <param name="treeTag"></param>
  308. /// <param name="treelist"></param>
  309. private void FindTreeNodeFromTag(TreeNode trnode, string treeTag, ref ArrayList treelist)
  310. {
  311. if (trnode.Tag != null && trnode.Tag.ToString() == treeTag)
  312. {
  313. treelist.Add(trnode);
  314. }
  315. foreach (TreeNode anode in trnode.Nodes)
  316. {
  317. FindTreeNodeFromTag(anode, treeTag, ref treelist);
  318. }
  319. }
  320. /// <summary>
  321. /// 验证名称是否重复。
  322. /// </summary>
  323. /// <param name="name"></param>
  324. /// <returns></returns>
  325. private bool isRepeatName(string sortCode, string baseName)
  326. {
  327. DataTable dt = new DataTable();
  328. dt = ServerHelper.GetData("com.steering.lims.data.base.ComBaseInfo.GetName", new Object[] { sortCode, baseName }, this.ob);
  329. if (dt.Rows.Count > 0)
  330. {
  331. return true;
  332. }
  333. else
  334. {
  335. return false;
  336. }
  337. }
  338. /// <summary>
  339. /// 验证是否允许添加子项
  340. /// </summary>
  341. /// <param name="parentCode"></param>
  342. /// <returns></returns>
  343. private bool isAddChild(string baseCode)
  344. {
  345. DataTable dt = new DataTable();
  346. dt = ServerHelper.GetData("com.steering.lims.data.base.ComBaseInfo.isAddChild", new Object[] { baseCode }, this.ob);
  347. if ("1".Equals(dt.Rows[0]["FLAG"].ToString()))
  348. {
  349. return true;
  350. }
  351. else
  352. {
  353. return false;
  354. }
  355. }
  356. /// <summary>
  357. /// 新增操作
  358. /// </summary>
  359. private void doAdd()
  360. {
  361. //判断当前树节点是否有选中项,如果没有则不允许新增。
  362. //单击新增时,树节点势必没有选中。
  363. //if (treeView1.SelectedNode == null || !(treeView1.SelectedNode.Nodes.Count > 0))
  364. //{
  365. // MessageBox.Show("请先选中树节点!", "提示");
  366. // return;
  367. //}
  368. if (parentCode == "")
  369. {
  370. MessageBox.Show("请先选中左侧基础分类树节点!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  371. return;
  372. }
  373. if (ValidInput())
  374. {
  375. //基础分类名称
  376. string name = txtName.Text.Trim();
  377. if (isRepeatName(parentCode, name))
  378. {
  379. MessageBox.Show("基础分类名称\"" + name + "\"已存在,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  380. return;
  381. }
  382. //string parentCode = parentCode;
  383. //判断当前父类是否允许增加子类
  384. if (!isAddChild(parentCode))
  385. {
  386. MessageBox.Show("当前父类基础信息不允许增加子类!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  387. return;
  388. }
  389. if (MessageBox.Show("是否确认新增?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  390. {
  391. return;
  392. }
  393. ArrayList parm = new ArrayList();
  394. //BASECODE,BASENAME,SORTCODE,ISVISIBLE,MNEMONIC_CODE,SEQ,FLAG
  395. //基础分类编码,基础分类名称,快速检索码,可编辑标志(1:可编辑,0:不可编辑),拼音助记码,序号(排序用),
  396. //是否允许增加子类(1:允许,0:不允许)
  397. //自动生成编号,需要查询出当前父节点下最大编号。
  398. DataTable dt = new DataTable();
  399. dt = ServerHelper.GetData("com.steering.lims.data.base.ComBaseInfo.GetMaxBaseCode", new Object[] { parentCode }, this.ob);
  400. string baseCode = "";
  401. if (dt.Rows.Count > 0 && !"".Equals(dt.Rows[0][0].ToString()))
  402. {
  403. baseCode = (Convert.ToInt64(dt.Rows[0][0]) + 1).ToString();
  404. }
  405. else
  406. {
  407. if (parentCode.Length > 1)
  408. {
  409. baseCode = parentCode + "01";
  410. }
  411. else
  412. {
  413. baseCode = parentCode + "001";
  414. }
  415. }
  416. parm.Add(baseCode);
  417. parm.Add(name);
  418. //快速检索码,父节点编号
  419. parm.Add(parentCode);
  420. //可编辑标识
  421. //parm.Add(cmbEdit.Value.ToString());
  422. //拼音助记码
  423. parm.Add("");
  424. //序号也应该是自动生成的
  425. //parm.Add(txtSEQ.Text.Trim());
  426. //是否允许添加子类,因此,实际上在新增时,还需要判断该字段,假设为否,则提示他不可以新增子类。
  427. if (chbxAddChild.Checked)
  428. {
  429. parm.Add(1);
  430. }
  431. else
  432. {
  433. parm.Add(0);
  434. }
  435. //admin
  436. parm.Add(this.UserInfo.GetUserName());
  437. //备注
  438. parm.Add(txtMemo.Text);
  439. CoreClientParam ccp = new CoreClientParam();
  440. ccp.ServerName = "com.steering.lims.data.base.ComBaseInfo";
  441. ccp.MethodName = "doAdd";
  442. ccp.ServerParams = new object[] { parm };
  443. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  444. if (ccp.ReturnCode == -1) return;
  445. //刷新数据源
  446. binUltraGrid(parentCode);
  447. //树节点刷新,树节点会折叠起来。
  448. //bandTreeView();
  449. //当前父节点新增一个子节点
  450. UltraTreeNode tn = new UltraTreeNode();
  451. tn.Text = name;
  452. tn.Tag = baseCode;
  453. treeView1.ActiveNode.Nodes.Add(tn);
  454. //高亮显示新增的数据
  455. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  456. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  457. {
  458. row = ultraGrid1.Rows[i];
  459. if (row.Cells["BASECODE"].Value.ToString().Equals(baseCode))
  460. {
  461. row.Activate();
  462. break;
  463. }
  464. }
  465. }
  466. }
  467. /// <summary>
  468. /// 刷新操作
  469. /// </summary>
  470. private void doQuery()
  471. {
  472. //查询按钮就当刷新功能。
  473. bandTreeView();
  474. }
  475. /// <summary>
  476. /// 刷新树控件
  477. /// </summary>
  478. /// <param name="sender"></param>
  479. /// <param name="e"></param>
  480. private void FrmBaseInfoNew_Load(object sender, EventArgs e)
  481. {
  482. //绑定是否可编辑控件
  483. //bandCmbEdit();
  484. //根据已选择的项,绑定树控件。
  485. bandTreeView();
  486. }
  487. /// <summary>
  488. /// //绑定是否可编辑控件
  489. /// </summary>
  490. //public void bandCmbEdit()
  491. //{
  492. // DataTable dt = new DataTable();
  493. // dt.Columns.Add("display");
  494. // dt.Columns.Add("value");
  495. // DataRow dr = dt.NewRow();
  496. // dr["display"] = "是";
  497. // dr["value"] = "1";
  498. // DataRow drB = dt.NewRow();
  499. // drB["display"] = "否";
  500. // drB["value"] = "0";
  501. // dt.Rows.Add(dr);
  502. // dt.Rows.Add(drB);
  503. // cmbEdit.DataSource = dt;
  504. // cmbEdit.DisplayMember = "display";
  505. // cmbEdit.ValueMember = "value";
  506. //}
  507. /// <summary>
  508. /// 树控件绑定数据源
  509. /// </summary>
  510. public void bandTreeView()
  511. {
  512. ArrayList parms = new ArrayList();
  513. //if (chbxXS.Checked)
  514. //{
  515. // parms.Add("1");
  516. //}
  517. //else
  518. //{
  519. // parms.Add("");
  520. //}
  521. //if (chbxSC.Checked)
  522. //{
  523. // parms.Add("2");
  524. //}
  525. //else
  526. //{
  527. // parms.Add("");
  528. //}
  529. //if (chbxLG.Checked)
  530. //{
  531. // parms.Add("3");
  532. //}
  533. //else
  534. //{
  535. // parms.Add("");
  536. //}
  537. //if (chbxZL.Checked)
  538. //{
  539. // parms.Add("4");
  540. //}
  541. //else
  542. //{
  543. // parms.Add("");
  544. //}
  545. //if (chbxZG.Checked)
  546. //{
  547. // parms.Add("5");
  548. //}
  549. //else
  550. //{
  551. // parms.Add("");
  552. //}
  553. //if (chbxRCL.Checked)
  554. //{
  555. // parms.Add("6");
  556. //}
  557. //else
  558. //{
  559. // parms.Add("");
  560. //}
  561. //if (chbxGJG.Checked)
  562. //{
  563. // parms.Add("7");
  564. //}
  565. //else
  566. //{
  567. // parms.Add("");
  568. //}
  569. //if (chbxWL.Checked)
  570. //{
  571. // parms.Add("8");
  572. //}
  573. //else
  574. //{
  575. // parms.Add("");
  576. //}
  577. //if (chbxQT.Checked)
  578. //{
  579. // parms.Add("9");
  580. //}
  581. //else
  582. //{
  583. // parms.Add("");
  584. //}
  585. //DataTable treeViewdt = ServerHelper.GetData("com.steering.lims.data.base.ComBaseInfo.getTreeData", new Object[] { parms }, this.ob);
  586. //binUltraGrid("2001");
  587. treeView1.Nodes.Clear();
  588. DataTable dt = new DataTable();
  589. dt = ServerHelper.GetData("com.steering.lims.data.base.ComBaseInfo.getTreeData", new Object[] { parms }, this.ob);
  590. //树控件递归绑定方法。
  591. Bind_Tv(dt, treeView1.Nodes, null, "BASECODE", "SORTCODE", "BASENAME");
  592. }
  593. /// <summary>
  594. /// top复选框选中事件触发,更新树控件数据源
  595. /// </summary>
  596. /// <param name="sender"></param>
  597. /// <param name="e"></param>
  598. private void chbx_CheckedChanged(object sender, EventArgs e)
  599. {
  600. if (this.Cursor == Cursors.WaitCursor) return;
  601. //刷新功能。
  602. try
  603. {
  604. this.Cursor = Cursors.WaitCursor;
  605. bandTreeView();
  606. }
  607. finally
  608. {
  609. this.Cursor = Cursors.Default;
  610. }
  611. }
  612. /// <summary>
  613. /// 刷新Grid数据源
  614. /// </summary>
  615. /// <param name="basecode"></param>
  616. private void binUltraGrid(string basecode)
  617. {
  618. this.dataTable1.Clear();
  619. DataTable dt = ServerHelper.GetData("com.steering.lims.data.base.ComBaseInfo.doQuery", new Object[] { basecode }, this.ob);
  620. GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable1, true);
  621. //不同颜色区分是否有效数据
  622. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  623. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  624. {
  625. row = ultraGrid1.Rows[i];
  626. if (!row.Cells["VALIDFLAG"].Value.ToString().Equals("1"))
  627. {
  628. row.Appearance.ForeColor = Color.Red;
  629. }
  630. else
  631. {
  632. row.Appearance.ForeColor = Color.Black;
  633. }
  634. }
  635. //内容自适应
  636. GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid1, new UltraGridColumn[] {
  637. ultraGrid1.DisplayLayout.Bands[0].Columns["MEMO"]
  638. });
  639. }
  640. /// <summary>
  641. /// 绑定TreeView(利用TreeNodeCollection)
  642. /// </summary>
  643. /// <param name="tnc">TreeNodeCollection(TreeView的节点集合)</param>
  644. /// <param name="pid_val">父id的值</param>
  645. /// <param name="id">数据库 id 字段名</param>
  646. /// <param name="pid">数据库 父id 字段名</param>
  647. /// <param name="text">数据库 文本 字段值</param>
  648. private void Bind_Tv(DataTable dt, TreeNodesCollection tnc, string pid_val, string id, string pid, string text)
  649. {
  650. DataView dv = new DataView(dt);//将DataTable存到DataView中,以便于筛选数据
  651. UltraTreeNode tn;//建立TreeView的节点(TreeNode),以便将取出的数据添加到节点中
  652. //以下为三元运算符,如果父id为空,则为构建“父id字段 is null”的查询条件,否则构建“父id字段=父id字段值”的查询条件
  653. string filter = string.IsNullOrEmpty(pid_val) ? pid + " is null" : string.Format(pid + "='{0}'", pid_val);
  654. dv.RowFilter = filter;//利用DataView将数据进行筛选,选出相同 父id值 的数据
  655. foreach (DataRowView drv in dv)
  656. {
  657. tn = new UltraTreeNode();//建立一个新节点(学名叫:一个实例)
  658. tn.Tag = drv[id].ToString();//节点的Value值,一般为数据库的id值
  659. tn.Text = drv[text].ToString();//节点的Text,节点的文本显示
  660. tnc.Add(tn);//将该节点加入到TreeNodeCollection(节点集合)中
  661. Bind_Tv(dt, tn.Nodes, tn.Tag.ToString(), id, pid, text);//递归(反复调用这个方法,直到把数据取完为止)
  662. }
  663. }
  664. /// <summary>
  665. /// 为编辑区域赋值
  666. /// </summary>
  667. /// <param name="sender"></param>
  668. /// <param name="e"></param>
  669. private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
  670. {
  671. //BASECODE,BASENAME,SORTCODE,ISVISIBLE,MNEMONIC_CODE,SEQ,FLAG
  672. //基础分类编码,基础分类名称,快速检索码,可编辑标志(1:可编辑,0:不可编辑),拼音助记码,序号(排序用),
  673. //是否允许增加子类(1:允许,0:不允许)
  674. Infragistics.Win.UltraWinGrid.UltraGridRow row = ultraGrid1.ActiveRow;
  675. if (row != null)
  676. {
  677. //基础分类编码
  678. //txtCodePart2.Text = row.Cells["BASECODE"].Value.ToString();
  679. //基础分类名称
  680. txtName.Text = row.Cells["BASENAME"].Value.ToString();
  681. //存储name,用于修改时验证重复项。
  682. VName = row.Cells["BASENAME"].Value.ToString();
  683. //快速检索码,进入Grid之前就已经进行赋值。
  684. //txtCodePart2.Text = row.Cells["SORTCODE"].Value.ToString();
  685. //可编辑标志
  686. //cmbEdit.Value = row.Cells["ISVISIBLE"].Value.ToString();
  687. //拼音助记码
  688. //txtPym.Text = row.Cells["MNEMONIC_CODE"].Value.ToString();
  689. //序号
  690. //txtSEQ.Text = row.Cells["SEQ"].Value.ToString();
  691. //是否允许增加子类
  692. if ("1".Equals(row.Cells["FLAG"].Value.ToString()))
  693. {
  694. chbxAddChild.Checked = true;
  695. }
  696. else
  697. {
  698. chbxAddChild.Checked = false;
  699. }
  700. //备注
  701. txtMemo.Text = row.Cells["MEMO"].Value.ToString();
  702. }
  703. }
  704. private void treeView1_AfterActivate(object sender, NodeEventArgs e)
  705. {
  706. try
  707. {
  708. this.Cursor = Cursors.WaitCursor;
  709. //给编辑区域控件赋值。
  710. //基础分类编码
  711. //txtCodePart1.Text = e.Node.Tag.ToString();
  712. //快速检索码
  713. //txtSCode.Text = e.Node.Tag.ToString();
  714. //刷新Grid数据源,将父节点等于当前选中节点的数据全部取出来,构建数据源。
  715. parentCode = e.TreeNode.Tag.ToString();
  716. binUltraGrid(parentCode);
  717. }
  718. finally
  719. {
  720. this.Cursor = Cursors.Default;
  721. }
  722. }
  723. }
  724. }