FrmBaseInfoNew.cs 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926
  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.PnCost.Frm
  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 "Modify":
  41. doModify();
  42. break;
  43. case "Delete":
  44. this.doDeleteOrResume(true);
  45. break;
  46. case "Resume":
  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.pss.qcm.CoreBaseInfoCost.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.pss.qcm.CoreBaseInfoCost.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.pss.qcm.CoreBaseInfoCost.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. //属性A
  243. parm.Add(txtProA.Text);
  244. //属性B
  245. parm.Add(txtProB.Text);
  246. //责任部门
  247. parm.Add(txtDept.Text);
  248. //标准
  249. parm.Add(txtStand.Text);
  250. //id最后加入
  251. parm.Add(baseCode);
  252. CoreClientParam ccp = new CoreClientParam();
  253. ccp.ServerName = "com.steering.pss.qcm.CoreBaseInfoCost";
  254. ccp.MethodName = "doModify";
  255. ccp.ServerParams = new object[] { parm };
  256. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  257. if (ccp.ReturnCode == -1) return;
  258. //刷新Grid数据
  259. binUltraGrid(parentCode);
  260. //刷新树节点数据
  261. //treeView1.SelectedNode.Nodes.Find(baseCode,false) = name;
  262. //修改树节点数据
  263. foreach (UltraTreeNode anode in treeView1.ActiveNode.Nodes)
  264. {
  265. if (baseCode.Equals(anode.Tag.ToString()))
  266. {
  267. anode.Text = name;
  268. }
  269. }
  270. //高亮显示新增的数据
  271. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  272. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  273. {
  274. row = ultraGrid1.Rows[i];
  275. if (row.Cells["BASECODE"].Value.ToString().Equals(baseCode))
  276. {
  277. row.Activate();
  278. break;
  279. }
  280. }
  281. }
  282. }
  283. /// <summary>
  284. /// 查找树节点根据tag
  285. /// </summary>
  286. /// <param name="treeview">要查找的树</param>
  287. /// <param name="treeTag">treetag</param>
  288. /// <returns></returns>
  289. public TreeNode[] FindTreeNodeByNodeTag(TreeView treeview, string treeTag)
  290. {
  291. if (treeview.Nodes == null)
  292. {
  293. return null;
  294. }
  295. TreeNode[] treeNodeList = null;
  296. ArrayList treelist = new ArrayList();
  297. foreach (TreeNode trnode in treeview.Nodes)
  298. {
  299. FindTreeNodeFromTag(trnode, treeTag, ref treelist);
  300. }
  301. if (treelist.Count > 0)
  302. {
  303. treeNodeList = new TreeNode[treelist.Count];
  304. for (int i = 0; i < treelist.Count; i++)
  305. {
  306. treeNodeList[i] = (TreeNode)treelist[i];
  307. }
  308. }
  309. return treeNodeList;
  310. }
  311. /// <summary>
  312. /// 查找具体的tag
  313. /// </summary>
  314. /// <param name="trnode"></param>
  315. /// <param name="treeTag"></param>
  316. /// <param name="treelist"></param>
  317. private void FindTreeNodeFromTag(TreeNode trnode, string treeTag, ref ArrayList treelist)
  318. {
  319. if (trnode.Tag != null && trnode.Tag.ToString() == treeTag)
  320. {
  321. treelist.Add(trnode);
  322. }
  323. foreach (TreeNode anode in trnode.Nodes)
  324. {
  325. FindTreeNodeFromTag(anode, treeTag, ref treelist);
  326. }
  327. }
  328. /// <summary>
  329. /// 验证名称是否重复。
  330. /// </summary>
  331. /// <param name="name"></param>
  332. /// <returns></returns>
  333. private bool isRepeatName(string sortCode, string baseName)
  334. {
  335. DataTable dt = new DataTable();
  336. dt = ServerHelper.GetData("com.steering.pss.qcm.CoreBaseInfoCost.GetName", new Object[] { sortCode, baseName }, this.ob);
  337. if (dt.Rows.Count > 0)
  338. {
  339. return true;
  340. }
  341. else
  342. {
  343. return false;
  344. }
  345. }
  346. /// <summary>
  347. /// 验证是否允许添加子项
  348. /// </summary>
  349. /// <param name="parentCode"></param>
  350. /// <returns></returns>
  351. private bool isAddChild(string baseCode)
  352. {
  353. DataTable dt = new DataTable();
  354. dt = ServerHelper.GetData("com.steering.pss.qcm.CoreBaseInfoCost.isAddChild", new Object[] { baseCode }, this.ob);
  355. if ("1".Equals(dt.Rows[0]["FLAG"].ToString()))
  356. {
  357. return true;
  358. }
  359. else
  360. {
  361. return false;
  362. }
  363. }
  364. /// <summary>
  365. /// 新增操作
  366. /// </summary>
  367. private void doAdd()
  368. {
  369. //判断当前树节点是否有选中项,如果没有则不允许新增。
  370. //单击新增时,树节点势必没有选中。
  371. //if (treeView1.SelectedNode == null || !(treeView1.SelectedNode.Nodes.Count > 0))
  372. //{
  373. // MessageBox.Show("请先选中树节点!", "提示");
  374. // return;
  375. //}
  376. if (parentCode == "")
  377. {
  378. MessageBox.Show("请先选中左侧基础分类树节点!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  379. return;
  380. }
  381. if (ValidInput())
  382. {
  383. //基础分类名称
  384. string name = txtName.Text.Trim();
  385. if (isRepeatName(parentCode, name))
  386. {
  387. MessageBox.Show("基础分类名称\"" + name + "\"已存在,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  388. return;
  389. }
  390. //string parentCode = parentCode;
  391. //判断当前父类是否允许增加子类
  392. if (!isAddChild(parentCode))
  393. {
  394. MessageBox.Show("当前父类基础信息不允许增加子类!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  395. return;
  396. }
  397. if (MessageBox.Show("是否确认新增?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  398. {
  399. return;
  400. }
  401. ArrayList parm = new ArrayList();
  402. //BASECODE,BASENAME,SORTCODE,ISVISIBLE,MNEMONIC_CODE,SEQ,FLAG
  403. //基础分类编码,基础分类名称,快速检索码,可编辑标志(1:可编辑,0:不可编辑),拼音助记码,序号(排序用),
  404. //是否允许增加子类(1:允许,0:不允许)
  405. //自动生成编号,需要查询出当前父节点下最大编号。
  406. DataTable dt = new DataTable();
  407. dt = ServerHelper.GetData("com.steering.pss.qcm.CoreBaseInfoCost.GetMaxBaseCode", new Object[] { parentCode }, this.ob);
  408. string baseCode = "";
  409. if (dt.Rows.Count > 0 && !"".Equals(dt.Rows[0][0].ToString()))
  410. {
  411. baseCode = (Convert.ToInt64(dt.Rows[0][0]) + 1).ToString();
  412. }
  413. else
  414. {
  415. if (parentCode.Length > 1)
  416. {
  417. baseCode = parentCode + "01";
  418. }
  419. else
  420. {
  421. baseCode = parentCode + "001";
  422. }
  423. }
  424. parm.Add(baseCode);
  425. parm.Add(name);
  426. //快速检索码,父节点编号
  427. parm.Add(parentCode);
  428. //可编辑标识
  429. //parm.Add(cmbEdit.Value.ToString());
  430. //拼音助记码
  431. parm.Add("");
  432. //序号也应该是自动生成的
  433. //parm.Add(txtSEQ.Text.Trim());
  434. //是否允许添加子类,因此,实际上在新增时,还需要判断该字段,假设为否,则提示他不可以新增子类。
  435. if (chbxAddChild.Checked)
  436. {
  437. parm.Add(1);
  438. }
  439. else
  440. {
  441. parm.Add(0);
  442. }
  443. //admin
  444. parm.Add(this.UserInfo.GetUserName());
  445. //备注
  446. parm.Add(txtMemo.Text);
  447. //属性A
  448. parm.Add(txtProA.Text);
  449. //属性B
  450. parm.Add(txtProB.Text);
  451. //责任部门
  452. parm.Add(txtDept.Text);
  453. //属性B
  454. parm.Add(txtStand.Text);
  455. CoreClientParam ccp = new CoreClientParam();
  456. ccp.ServerName = "com.steering.pss.qcm.CoreBaseInfoCost";
  457. ccp.MethodName = "doAdd";
  458. ccp.ServerParams = new object[] { parm };
  459. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  460. if (ccp.ReturnCode == -1) return;
  461. //刷新数据源
  462. binUltraGrid(parentCode);
  463. //树节点刷新,树节点会折叠起来。
  464. //bandTreeView();
  465. //当前父节点新增一个子节点
  466. UltraTreeNode tn = new UltraTreeNode();
  467. tn.Text = name;
  468. tn.Tag = baseCode;
  469. treeView1.ActiveNode.Nodes.Add(tn);
  470. //高亮显示新增的数据
  471. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  472. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  473. {
  474. row = ultraGrid1.Rows[i];
  475. if (row.Cells["BASECODE"].Value.ToString().Equals(baseCode))
  476. {
  477. row.Activate();
  478. break;
  479. }
  480. }
  481. }
  482. }
  483. /// <summary>
  484. /// 刷新操作
  485. /// </summary>
  486. private void doQuery()
  487. {
  488. //查询按钮就当刷新功能。
  489. bandTreeView();
  490. }
  491. /// <summary>
  492. /// 刷新树控件
  493. /// </summary>
  494. /// <param name="sender"></param>
  495. /// <param name="e"></param>
  496. private void FrmBaseInfoNew_Load(object sender, EventArgs e)
  497. {
  498. //绑定是否可编辑控件
  499. //bandCmbEdit();
  500. //根据已选择的项,绑定树控件。
  501. bandTreeView();
  502. }
  503. /// <summary>
  504. /// //绑定是否可编辑控件
  505. /// </summary>
  506. //public void bandCmbEdit()
  507. //{
  508. // DataTable dt = new DataTable();
  509. // dt.Columns.Add("display");
  510. // dt.Columns.Add("value");
  511. // DataRow dr = dt.NewRow();
  512. // dr["display"] = "是";
  513. // dr["value"] = "1";
  514. // DataRow drB = dt.NewRow();
  515. // drB["display"] = "否";
  516. // drB["value"] = "0";
  517. // dt.Rows.Add(dr);
  518. // dt.Rows.Add(drB);
  519. // cmbEdit.DataSource = dt;
  520. // cmbEdit.DisplayMember = "display";
  521. // cmbEdit.ValueMember = "value";
  522. //}
  523. /// <summary>
  524. /// 树控件绑定数据源
  525. /// </summary>
  526. public void bandTreeView()
  527. {
  528. ArrayList parms = new ArrayList();
  529. if (chbx1.Checked)
  530. {
  531. parms.Add("1");
  532. }
  533. else
  534. {
  535. parms.Add("");
  536. }
  537. if (chbx2.Checked)
  538. {
  539. parms.Add("2");
  540. }
  541. else
  542. {
  543. parms.Add("");
  544. }
  545. if (chbx3.Checked)
  546. {
  547. parms.Add("3");
  548. }
  549. else
  550. {
  551. parms.Add("");
  552. }
  553. if (chbx4.Checked)
  554. {
  555. parms.Add("4");
  556. }
  557. else
  558. {
  559. parms.Add("");
  560. }
  561. if (chbx5.Checked)
  562. {
  563. parms.Add("5");
  564. }
  565. else
  566. {
  567. parms.Add("");
  568. }
  569. treeView1.Nodes.Clear();
  570. DataTable dt = new DataTable();
  571. dt = ServerHelper.GetData("com.steering.pss.qcm.CoreBaseInfoCost.getTreeDataNew", new Object[] { parms }, this.ob);
  572. //树控件递归绑定方法。
  573. Bind_Tv(dt, treeView1.Nodes, null, "BASECODE", "SORTCODE", "BASENAME");
  574. }
  575. /// <summary>
  576. /// top复选框选中事件触发,更新树控件数据源
  577. /// </summary>
  578. /// <param name="sender"></param>
  579. /// <param name="e"></param>
  580. private void chbx_CheckedChanged(object sender, EventArgs e)
  581. {
  582. if (this.Cursor == Cursors.WaitCursor) return;
  583. //刷新功能。
  584. try
  585. {
  586. this.Cursor = Cursors.WaitCursor;
  587. bandTreeView();
  588. }
  589. finally
  590. {
  591. this.Cursor = Cursors.Default;
  592. }
  593. }
  594. /// <summary>
  595. /// 刷新Grid数据源
  596. /// </summary>
  597. /// <param name="basecode"></param>
  598. private void binUltraGrid(string basecode)
  599. {
  600. this.dataTable1.Clear();
  601. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreBaseInfoCost.doQuery", new Object[] { basecode }, this.ob);
  602. if (basecode.StartsWith("5006") || basecode.StartsWith("7025") || basecode.StartsWith("6006")
  603. || basecode.StartsWith("3001") )
  604. {
  605. label3.Visible = true;
  606. label4.Visible = true;
  607. label5.Visible = true;
  608. label6.Visible = true;
  609. txtDept.Visible = true;
  610. txtProA.Visible = true;
  611. txtProB.Visible = true;
  612. txtStand.Visible = true;
  613. ultraGrid1.DisplayLayout.Bands[0].Columns["DEPT"].Hidden = false;
  614. ultraGrid1.DisplayLayout.Bands[0].Columns["PROPERA"].Hidden = false;
  615. ultraGrid1.DisplayLayout.Bands[0].Columns["PROPERB"].Hidden = false;
  616. ultraGrid1.DisplayLayout.Bands[0].Columns["STANDARD"].Hidden = false;
  617. }
  618. else
  619. {
  620. label3.Visible = false;
  621. label4.Visible = false;
  622. label5.Visible = false;
  623. label6.Visible = false;
  624. txtDept.Visible = false;
  625. txtProA.Visible = false;
  626. txtProB.Visible = false;
  627. txtStand.Visible = false;
  628. ultraGrid1.DisplayLayout.Bands[0].Columns["DEPT"].Hidden = true;
  629. ultraGrid1.DisplayLayout.Bands[0].Columns["PROPERA"].Hidden = true;
  630. ultraGrid1.DisplayLayout.Bands[0].Columns["PROPERB"].Hidden = true;
  631. ultraGrid1.DisplayLayout.Bands[0].Columns["STANDARD"].Hidden = false;
  632. }
  633. GridHelper.CopyDataToDatatable(ref dt, ref this.dataTable1, true);
  634. //不同颜色区分是否有效数据
  635. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  636. for (int i = 0; i < ultraGrid1.Rows.Count; i++)
  637. {
  638. row = ultraGrid1.Rows[i];
  639. if (!row.Cells["VALIDFLAG"].Value.ToString().Equals("1"))
  640. {
  641. row.Appearance.ForeColor = Color.Red;
  642. }
  643. else
  644. {
  645. row.Appearance.ForeColor = Color.Black;
  646. }
  647. }
  648. //内容自适应
  649. GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid1, new UltraGridColumn[] {
  650. ultraGrid1.DisplayLayout.Bands[0].Columns["MEMO"]
  651. });
  652. }
  653. /// <summary>
  654. /// 绑定TreeView(利用TreeNodeCollection)
  655. /// </summary>
  656. /// <param name="tnc">TreeNodeCollection(TreeView的节点集合)</param>
  657. /// <param name="pid_val">父id的值</param>
  658. /// <param name="id">数据库 id 字段名</param>
  659. /// <param name="pid">数据库 父id 字段名</param>
  660. /// <param name="text">数据库 文本 字段值</param>
  661. private void Bind_Tv(DataTable dt, TreeNodesCollection tnc, string pid_val, string id, string pid, string text)
  662. {
  663. DataView dv = new DataView(dt);//将DataTable存到DataView中,以便于筛选数据
  664. UltraTreeNode tn;//建立TreeView的节点(TreeNode),以便将取出的数据添加到节点中
  665. //以下为三元运算符,如果父id为空,则为构建“父id字段 is null”的查询条件,否则构建“父id字段=父id字段值”的查询条件
  666. string filter = string.IsNullOrEmpty(pid_val) ? pid + " is null" : string.Format(pid + "='{0}'", pid_val);
  667. dv.RowFilter = filter;//利用DataView将数据进行筛选,选出相同 父id值 的数据
  668. foreach (DataRowView drv in dv)
  669. {
  670. tn = new UltraTreeNode();//建立一个新节点(学名叫:一个实例)
  671. tn.Tag = drv[id].ToString();//节点的Value值,一般为数据库的id值
  672. tn.Text = drv[text].ToString();//节点的Text,节点的文本显示
  673. tnc.Add(tn);//将该节点加入到TreeNodeCollection(节点集合)中
  674. Bind_Tv(dt, tn.Nodes, tn.Tag.ToString(), id, pid, text);//递归(反复调用这个方法,直到把数据取完为止)
  675. }
  676. }
  677. /// <summary>
  678. /// 为编辑区域赋值
  679. /// </summary>
  680. /// <param name="sender"></param>
  681. /// <param name="e"></param>
  682. private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
  683. {
  684. //BASECODE,BASENAME,SORTCODE,ISVISIBLE,MNEMONIC_CODE,SEQ,FLAG
  685. //基础分类编码,基础分类名称,快速检索码,可编辑标志(1:可编辑,0:不可编辑),拼音助记码,序号(排序用),
  686. //是否允许增加子类(1:允许,0:不允许)
  687. Infragistics.Win.UltraWinGrid.UltraGridRow row = ultraGrid1.ActiveRow;
  688. if (row != null)
  689. {
  690. //基础分类编码
  691. //txtCodePart2.Text = row.Cells["BASECODE"].Value.ToString();
  692. //基础分类名称
  693. txtName.Text = row.Cells["BASENAME"].Value.ToString();
  694. //存储name,用于修改时验证重复项。
  695. VName = row.Cells["BASENAME"].Value.ToString();
  696. //快速检索码,进入Grid之前就已经进行赋值。
  697. //txtCodePart2.Text = row.Cells["SORTCODE"].Value.ToString();
  698. //可编辑标志
  699. //cmbEdit.Value = row.Cells["ISVISIBLE"].Value.ToString();
  700. //拼音助记码
  701. //txtPym.Text = row.Cells["MNEMONIC_CODE"].Value.ToString();
  702. //序号
  703. //txtSEQ.Text = row.Cells["SEQ"].Value.ToString();
  704. //是否允许增加子类
  705. if ("1".Equals(row.Cells["FLAG"].Value.ToString()))
  706. {
  707. chbxAddChild.Checked = true;
  708. }
  709. else
  710. {
  711. chbxAddChild.Checked = false;
  712. }
  713. //备注
  714. txtMemo.Text = row.Cells["MEMO"].Value.ToString();
  715. //属性A
  716. txtProA.Text = row.Cells["PROPERA"].Value.ToString();
  717. //属性B
  718. txtProB.Text = row.Cells["PROPERB"].Value.ToString();
  719. //责任部门
  720. txtDept.Text = row.Cells["DEPT"].Value.ToString();
  721. //标准
  722. txtStand.Text = row.Cells["STANDARD"].Value.ToString();
  723. }
  724. }
  725. private void treeView1_AfterActivate(object sender, NodeEventArgs e)
  726. {
  727. try
  728. {
  729. this.Cursor = Cursors.WaitCursor;
  730. //给编辑区域控件赋值。
  731. //基础分类编码
  732. //txtCodePart1.Text = e.Node.Tag.ToString();
  733. //快速检索码
  734. //txtSCode.Text = e.Node.Tag.ToString();
  735. //刷新Grid数据源,将父节点等于当前选中节点的数据全部取出来,构建数据源。
  736. parentCode = e.TreeNode.Tag.ToString();
  737. binUltraGrid(parentCode);
  738. }
  739. finally
  740. {
  741. this.Cursor = Cursors.Default;
  742. }
  743. }
  744. }
  745. }