FrmStandardSpray.cs 51 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326
  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 System;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Drawing;
  11. using System.Windows.Forms;
  12. namespace Core.StlMes.Client.Qcm
  13. {
  14. public partial class FrmStandardSpray : FrmBase
  15. {
  16. public FrmStandardSpray()
  17. {
  18. InitializeComponent();
  19. this.IsLoadUserView = true; //平台F1功能
  20. }
  21. /// <summary>
  22. /// 重写基类方法
  23. /// </summary>
  24. /// <param name="sender"></param>
  25. /// <param name="ToolbarKey"></param>
  26. public override void ToolBar_Click(object sender, string ToolbarKey)
  27. {
  28. switch (ToolbarKey)
  29. {
  30. case "doQuery":
  31. doQuery();
  32. break;
  33. case "doSave":
  34. doSave();
  35. break;
  36. case "doDelete":
  37. this.doDeleteOrResume(true);
  38. break;
  39. case "doResume":
  40. this.doDeleteOrResume(false);
  41. break;
  42. case "Close":
  43. this.Close();
  44. break;
  45. }
  46. }
  47. private void FrmStandardSpray_Load(object sender, EventArgs e)
  48. {
  49. cmbSignSource.SelectedIndex = 0;
  50. //绑定限制规格1、2代码和描述。
  51. BindCmbSizeCode();
  52. //绑定接箍限制规格代码和描述
  53. BindCmbJg();
  54. //cmbSizeCode2.SelectedIndex = 0;
  55. }
  56. /// <summary>
  57. /// 绑定接箍限制规格代码和描述
  58. /// </summary>
  59. private void BindCmbJg()
  60. {
  61. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetJG", null, this.ob);
  62. ComboBoxHelper.FillUlcmItemsAddEmpty(cmbJG, dt);
  63. }
  64. /// <summary>
  65. /// 绑定限制规格1,代码和描述
  66. /// </summary>
  67. private void BindCmbSizeCode()
  68. {
  69. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetSizeCode", null, this.ob);
  70. ComboBoxHelper.FillUlcmItemsAddEmpty(cmbSizeCode2, dt);
  71. //限制规格2,绑定的是同样的数据源。
  72. ComboBoxHelper.FillUlcmItemsAddEmpty(cmbSizeCode, dt);
  73. }
  74. /// <summary>
  75. /// 作废或恢复
  76. /// </summary>
  77. /// <param name="isDelete">true作废 false恢复</param>
  78. private void doDeleteOrResume(bool isDelete)
  79. {
  80. ultraGrid2.UpdateData();
  81. //验证是否有勾选项。
  82. int chkCount = 0;
  83. foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows)
  84. {
  85. if (Convert.ToBoolean(row.Cells["CHK"].Value))
  86. {
  87. chkCount++;
  88. }
  89. if (row.ChildBands[0].Rows.Count > 0)
  90. {
  91. foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows)
  92. {
  93. if (Convert.ToBoolean(minrow.Cells["CHKC"].Value))
  94. {
  95. chkCount++;
  96. }
  97. }
  98. }
  99. }
  100. if (chkCount <= 0)
  101. {
  102. MessageBox.Show("请先勾选!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  103. return;
  104. }
  105. //if (isDelete)
  106. //{
  107. // //无效数据不允许删除。
  108. // //但是我选中数据中如果既有有效数据、又有无效数据呢?
  109. //}
  110. //else
  111. //{
  112. // //有效数据不允许恢复
  113. //}
  114. ArrayList param = new ArrayList();
  115. ArrayList minParam = new ArrayList();
  116. if (isDelete)
  117. {
  118. foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows)
  119. {
  120. //主表勾选了,从表跟着作废。
  121. if (Convert.ToBoolean(row.Cells["CHK"].Value))
  122. {
  123. param.Add(row.Cells["INDEX_SEQ"].Value.ToString());
  124. foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows)
  125. {
  126. minParam.Add(minrow.Cells["INDEX_SEQ_C"].Value.ToString());
  127. }
  128. }
  129. else
  130. {
  131. //主表未勾选,从表勾选了,照样作废。PSC,PSC_DESC
  132. foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows)
  133. {
  134. if (Convert.ToBoolean(minrow.Cells["CHKC"].Value))
  135. {
  136. minParam.Add(minrow.Cells["INDEX_SEQ_C"].Value.ToString());
  137. }
  138. }
  139. }
  140. }
  141. }
  142. else
  143. {
  144. //恢复操作
  145. foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows)
  146. {
  147. //主表勾选了,只恢复主表,从表不需要恢复。
  148. if (Convert.ToBoolean(row.Cells["CHK"].Value))
  149. {
  150. param.Add(row.Cells["INDEX_SEQ"].Value.ToString());
  151. }
  152. else
  153. {
  154. //主表未勾选,从表勾选了。主表跟着恢复。
  155. foreach (Infragistics.Win.UltraWinGrid.UltraGridRow minrow in row.ChildBands[0].Rows)
  156. {
  157. if (Convert.ToBoolean(minrow.Cells["CHKC"].Value))
  158. {
  159. minParam.Add(minrow.Cells["INDEX_SEQ_C"].Value.ToString());
  160. }
  161. param.Add(row.Cells["INDEX_SEQ"].Value.ToString());
  162. }
  163. }
  164. }
  165. }
  166. if (MessageBox.Show("是否确认" + (isDelete ? "作废" : "恢复") + "选中的数据!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  167. {
  168. try
  169. {
  170. int count = 0;
  171. if (param.Count > 0)
  172. {
  173. count = ServerHelper.SetData("com.steering.pss.qcm.CoreStandardSpray.deleteLineInfo", new Object[] { param, UserInfo.GetUserName(), isDelete }, this.ob);
  174. }
  175. int minCount = 0;
  176. if (minParam.Count > 0)
  177. {
  178. minCount = ServerHelper.SetData("com.steering.pss.qcm.CoreStandardSpray.deleteLineInfoC", new Object[] { minParam, UserInfo.GetUserName(), isDelete }, this.ob);
  179. }
  180. if (count > 0 || minCount > 0)
  181. {
  182. doQuery();
  183. ExpandRow();
  184. MSCCodes.Clear();
  185. }
  186. }
  187. catch (Exception ex)
  188. {
  189. MessageBox.Show(ex.Message);
  190. }
  191. }
  192. }
  193. /// <summary>
  194. /// 验证主表数据。
  195. /// </summary>
  196. private bool yz()
  197. {
  198. double max1 = 0;
  199. double min1 = 0;
  200. double max = 0;
  201. double min = 0;
  202. this.ultraGrid2.UpdateData();
  203. foreach (Infragistics.Win.UltraWinGrid.UltraGridRow row in ultraGrid2.Rows)
  204. {
  205. if (Convert.ToBoolean(row.Cells["CHK"].Value))
  206. {
  207. if (row.Cells["MODEL_DESC"].Value.ToString() == "")
  208. {
  209. MessageBox.Show("请选择扣型集合", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  210. row.Activate();
  211. return false;
  212. }
  213. if (row.Cells["SIZE_NAME2"].Value.ToString() == "" && row.Cells["SIZE_NAME"].Value.ToString() == ""
  214. && row.Cells["SIZE_JG"].Value.ToString() == "")
  215. {
  216. MessageBox.Show("请在限制规格描述或接箍规格描述中选择一项数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  217. row.Activate();
  218. return false;
  219. }
  220. //限制规格和接箍规格不能同时存在。
  221. if (row.Cells["SIZE_NAME2"].Value.ToString() != "" || row.Cells["SIZE_NAME"].Value.ToString() != "")
  222. {
  223. if (row.Cells["SIZE_NAME2"].Value.ToString() == row.Cells["SIZE_NAME"].Value.ToString())
  224. {
  225. MessageBox.Show("限制规格1描述和限制规格2描述不能一样。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  226. row.Cells["SIZE_NAME"].Value = "";
  227. row.Cells["SIZE_CODE"].Value = "";
  228. row.Activate();
  229. return false;
  230. }
  231. if (row.Cells["SIZE_NAME2"].Value.ToString() != "")
  232. {
  233. if (row.Cells["SIZE_MIN2"].Value.ToString() != "")
  234. {
  235. if (StringUtil.IsNumber(row.Cells["SIZE_MIN2"].Value.ToString()))
  236. {
  237. if (!StringUtil.Is_Below_zero(row.Cells["SIZE_MIN2"].Value.ToString()))
  238. {
  239. MessageBox.Show("限制规格1下限必须大于0", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  240. row.Activate();
  241. return false;
  242. }
  243. else
  244. {
  245. if (row.Cells["SIZE_MIN_SIGN2"].Value.ToString() != "=" ||
  246. StringUtil.IsNumber(row.Cells["SIZE_MIN2"].Value.ToString()))
  247. {
  248. min1 = Convert.ToDouble(row.Cells["SIZE_MIN2"].Value.ToString());
  249. }
  250. }
  251. }
  252. }
  253. else if (row.Cells["SIZE_MIN_SIGN2"].Value.ToString() != "=")
  254. {
  255. MessageBox.Show("限制规格1下限请输入数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  256. row.Activate();
  257. return false;
  258. }
  259. if (row.Cells["SIZE_MAX2"].Value.ToString() != "")
  260. {
  261. if (StringUtil.IsNumber(row.Cells["SIZE_MAX2"].Value.ToString()))
  262. {
  263. if (!StringUtil.Is_Below_zero(row.Cells["SIZE_MAX2"].Value.ToString()))
  264. {
  265. MessageBox.Show("限制规格1上限必须大于0。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  266. row.Activate();
  267. return false;
  268. }
  269. else
  270. {
  271. max1 = Convert.ToDouble(row.Cells["SIZE_MAX2"].Value.ToString());
  272. }
  273. }
  274. }
  275. else
  276. {
  277. MessageBox.Show("限制规格1上限必须为数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  278. row.Activate();
  279. return false;
  280. }
  281. }
  282. if (min1 > max1)
  283. {
  284. MessageBox.Show("限制规格1上限值必须大于下限值。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  285. row.Activate();
  286. return false;
  287. }
  288. if (row.Cells["SIZE_NAME"].Value.ToString() != "")
  289. {
  290. if (row.Cells["SIZE_MIN"].Value.ToString() != "")
  291. {
  292. if (StringUtil.IsNumber(row.Cells["SIZE_MIN"].Value.ToString()))
  293. {
  294. if (!StringUtil.Is_Below_zero(row.Cells["SIZE_MIN"].Value.ToString()))
  295. {
  296. MessageBox.Show("限制规格2下限必须大于0", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  297. row.Activate();
  298. return false;
  299. }
  300. else
  301. {
  302. if (row.Cells["SIZE_MIN_SIGN"].Value.ToString() != "=" ||
  303. StringUtil.IsNumber(row.Cells["SIZE_MIN"].Value.ToString()))
  304. {
  305. min = Convert.ToDouble(row.Cells["SIZE_MIN"].Value.ToString());
  306. }
  307. }
  308. }
  309. }
  310. else if (row.Cells["SIZE_MIN_SIGN"].Value.ToString() != "=")
  311. {
  312. MessageBox.Show("限制规格2下限必须为数字。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  313. return false;
  314. }
  315. if (row.Cells["SIZE_MAX"].Value.ToString() != "")
  316. {
  317. if (StringUtil.IsNumber(row.Cells["SIZE_MAX"].Value.ToString()))
  318. {
  319. if (!StringUtil.Is_Below_zero(row.Cells["SIZE_MAX"].Value.ToString()))
  320. {
  321. MessageBox.Show("限制规格2上限值必须大于0。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  322. row.Activate();
  323. return false;
  324. }
  325. else
  326. {
  327. max = Convert.ToDouble(row.Cells["SIZE_MAX"].Value.ToString());
  328. }
  329. }
  330. }
  331. else
  332. {
  333. MessageBox.Show("限制规格2上限必须为数字", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  334. row.Activate();
  335. return false;
  336. }
  337. if (max < min)
  338. {
  339. MessageBox.Show("限制规格2上限值必须大于下限值", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  340. row.Activate();
  341. return false;
  342. }
  343. }
  344. if (row.Cells["SIZE_JG"].Value.ToString() != "")
  345. {
  346. MessageBox.Show("限制规格和接箍规格不能同时存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  347. row.Cells["SIZE_JG"].Value = "";
  348. row.Activate();
  349. return false;
  350. }
  351. }
  352. else
  353. {
  354. if ((row.Cells["SIZE_NAME2"].Value.ToString() == "" && (row.Cells["SIZE_MIN_SIGN2"].Value.ToString() != "" || row.Cells["SIZE_MAX_SIGN2"].Value.ToString() != ""))
  355. || (row.Cells["SIZE_NAME"].Value.ToString() == "" && (row.Cells["SIZE_MIN_SIGN"].Value.ToString() != "" || row.Cells["SIZE_MAX_SIGN"].Value.ToString() != "")))
  356. {
  357. MessageBox.Show("规格描述没有选择的情况下,不允许选择符号", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  358. row.Activate();
  359. return false; //不允许未选规格描述,就有符号选择。
  360. }
  361. }
  362. //验证,当描述信息为空的情况下,符号和值都必须清空。
  363. if ("".Equals(row.Cells["SIZE_NAME2"].Value.ToString()))
  364. {
  365. row.Cells["SIZE_MIN_SIGN2"].Value = "";
  366. row.Cells["SIZE_MIN2"].Value = "";
  367. row.Cells["SIZE_MAX_SIGN2"].Value = "";
  368. row.Cells["SIZE_MAX2"].Value = "";
  369. }
  370. else
  371. {
  372. //当描述信息不为空的情况下,符号和值,都不允许为空。
  373. if ("".Equals(row.Cells["SIZE_MIN_SIGN2"].Value.ToString()))
  374. {
  375. MessageBox.Show("下限符号不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  376. row.Activate();
  377. return false;
  378. }
  379. if ("".Equals(row.Cells["SIZE_MIN2"].Value.ToString()))
  380. {
  381. MessageBox.Show("下限不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  382. row.Activate();
  383. return false;
  384. }
  385. if ("".Equals(row.Cells["SIZE_MAX_SIGN2"].Value.ToString()))
  386. {
  387. MessageBox.Show("上限符号不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  388. row.Activate();
  389. return false;
  390. }
  391. if ("".Equals(row.Cells["SIZE_MAX2"].Value.ToString()))
  392. {
  393. MessageBox.Show("上限不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  394. row.Activate();
  395. return false;
  396. }
  397. }
  398. //验证,当描述信息为空的情况下,符号和值都必须清空。
  399. if ("".Equals(row.Cells["SIZE_NAME"].Value.ToString()))
  400. {
  401. row.Cells["SIZE_MIN_SIGN"].Value = "";
  402. row.Cells["SIZE_MIN"].Value = "";
  403. row.Cells["SIZE_MAX_SIGN"].Value = "";
  404. row.Cells["SIZE_MAX"].Value = "";
  405. }
  406. else
  407. {
  408. //当描述信息不为空的情况下,符号和值,都不允许为空。
  409. if ("".Equals(row.Cells["SIZE_MIN_SIGN"].Value.ToString()))
  410. {
  411. MessageBox.Show("下限符号不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  412. row.Activate();
  413. return false;
  414. }
  415. if ("".Equals(row.Cells["SIZE_MIN"].Value.ToString()))
  416. {
  417. MessageBox.Show("下限不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  418. row.Activate();
  419. return false;
  420. }
  421. if ("".Equals(row.Cells["SIZE_MAX_SIGN"].Value.ToString()))
  422. {
  423. MessageBox.Show("上限符号不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  424. row.Activate();
  425. return false;
  426. }
  427. if ("".Equals(row.Cells["SIZE_MAX"].Value.ToString()))
  428. {
  429. MessageBox.Show("上限不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  430. row.Activate();
  431. return false;
  432. }
  433. }
  434. }
  435. }
  436. return true;
  437. }
  438. /// <summary>
  439. /// 保存,包含主表从表的新增和修改
  440. /// </summary>
  441. private void doSave()
  442. {
  443. if (!yz())
  444. {
  445. return;
  446. }
  447. //更新数据源。
  448. ultraGrid2.UpdateData();
  449. //判断是否有勾选项,没有则提示。
  450. int chkbool = 0;
  451. for (int i = 0; i < this.SprayTable.Rows.Count; i++)
  452. {
  453. DataRow dr = SprayTable.Rows[i];
  454. if ("".Equals(dr.ToString()))
  455. {
  456. }
  457. else if (Convert.ToBoolean(dr["CHK"]))
  458. {
  459. chkbool += 1;
  460. }
  461. }
  462. for (int i = 0; i < this.SprayCTable.Rows.Count; i++)
  463. {
  464. DataRow dr = SprayCTable.Rows[i];
  465. if ("".Equals(dr.ToString()))
  466. {
  467. }
  468. else if (Convert.ToBoolean(dr["CHKC"]))
  469. {
  470. chkbool += 1;
  471. }
  472. }
  473. if (chkbool <= 0)
  474. {
  475. MessageBox.Show("请先勾选!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  476. return;
  477. }
  478. //确定保存吗?
  479. if (MessageBox.Show("是否确认保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
  480. {
  481. return;
  482. }
  483. //主表新增组ArrayList
  484. ArrayList spbAddParams = new ArrayList();
  485. //主表修改组ArrayList
  486. ArrayList spbUpdateParams = new ArrayList();
  487. //从表新增组ArrayList
  488. ArrayList spbSupplementAddParams = new ArrayList();
  489. //从表修改组ArrayList
  490. ArrayList spbSupplementUpdateParams = new ArrayList();
  491. //冶金规范码
  492. string mscCode = ultraGrid1.ActiveRow.Cells["MSC"].Value.ToString();
  493. //遍历主表,判定是否有勾选项。
  494. for (int i = 0; i < this.SprayTable.Rows.Count; i++)
  495. {
  496. //Infragistics.Win.UltraWinGrid.UltraGridRow row = ultraGrid2.Rows[i];
  497. DataRow dr = SprayTable.Rows[i];
  498. if (Convert.ToBoolean(dr["CHK"]))
  499. {
  500. //判定勾选项是新增行,还是修改行。
  501. if (dr.RowState == DataRowState.Added)
  502. {
  503. //新增行
  504. //MSC,INDEX_SEQ,MODEL_CODE,MODEL_DESC,SIZE_CODE2,SIZE_NAME2,
  505. //SIZE_MIN_SIGN2 ,SIZE_MIN2,SIZE_MAX_SIGN2,SIZE_MAX2,SIZE_CODE,
  506. //IZE_NAME ,SIZE_MIN_SIGN,SIZE_MIN ,IZE_MAX_SIGN,SIZE_MAX,SIZE_JG
  507. //冶金规范码,序号,扣型代码(集合),扣型描述(集合),限制规格代码(外径、壁厚等),限制规格描述,
  508. //限制规格下限符号,限制规格下限,限制规格上限符号,限制规格上限,限制规格代码(外径、壁厚等),
  509. //限制规格描述,限制规格下限符号,限制规格下限,限制规格上限符号,限制规格上限,
  510. //接箍限制规格(接箍专用,与外径壁厚只允许存在其一)
  511. ArrayList parm = new ArrayList();
  512. //冶金规范码
  513. parm.Add(mscCode);
  514. //序号,由服务端,数据库序列xl.nextval,自动生成
  515. //因为考虑到批量新增,当你加第二条的时候,数据库中并没有第二条数据信息。
  516. parm.Add(dr["INDEX_SEQ"].ToString());
  517. //扣型代码(集合),这个功能有点复杂,因为有多条记录选择功能需要实现。暂时空着。
  518. parm.Add(dr["MODEL_CODE"].ToString());
  519. //扣型描述(集合)
  520. parm.Add(dr["MODEL_DESC"].ToString());
  521. //限制规格代码(外径、壁厚、径壁比,写死的)SIZE_CODE2
  522. parm.Add(dr["SIZE_CODE2"].ToString());
  523. //限制规格描述是冗余数据,因此只插入上面一个即可。
  524. parm.Add(dr["SIZE_NAME2"].ToString());
  525. //限制规格下限符号> >= =,写死的,直接插入数据库即可。SIZE_MIN_SIGN2
  526. parm.Add(dr["SIZE_MIN_SIGN2"].ToString());
  527. //限制规格下限,必须限制只允许输入数字。
  528. parm.Add(dr["SIZE_MIN2"].ToString());
  529. //限制规格上限符号< <= cmbSizeMaxSign2
  530. parm.Add(dr["SIZE_MAX_SIGN2"].ToString());
  531. //限制规格上限SIZE_MAX2
  532. parm.Add(dr["SIZE_MAX2"].ToString());
  533. //限制规格代码(外径、壁厚等)SIZE_CODE,如果之前选择的是外径,这里就不能再选外径了。cmbSizeCode
  534. parm.Add(dr["SIZE_CODE"].ToString());
  535. //限制规格描述SIZE_NAME
  536. parm.Add(dr["SIZE_NAME"].ToString());
  537. //限制规格下限符号SIZE_MIN_SIGN,cmbSizeMinSign
  538. parm.Add(dr["SIZE_MIN_SIGN"].ToString());
  539. //限制规格下限SIZE_MIN
  540. parm.Add(dr["SIZE_MIN"].ToString());
  541. //限制规格上限符号SIZE_MAX_SIGN
  542. parm.Add(dr["SIZE_MAX_SIGN"].ToString());
  543. //限制规格上限SIZE_MAX
  544. parm.Add(dr["SIZE_MAX"].ToString());
  545. //接箍限制规格(接箍专用,与外径壁厚只允许存在其一)SIZE_JG
  546. parm.Add(dr["SIZE_JG"].ToString());
  547. parm.Add(this.UserInfo.GetUserName());
  548. parm.Add(dr["MEMO"].ToString());
  549. spbAddParams.Add(parm);
  550. }
  551. else if (this.SprayTable.Rows[i].RowState == DataRowState.Modified)
  552. {
  553. //主表修改
  554. ArrayList parm = new ArrayList();
  555. //序号,由服务端,数据库序列xl.nextval,自动生成
  556. string xl = dr["INDEX_SEQ"].ToString();
  557. //扣型代码(集合),这个功能有点复杂,因为有多条记录选择功能需要实现。暂时空着。
  558. parm.Add(dr["MODEL_CODE"].ToString());
  559. //扣型描述(集合)
  560. parm.Add(dr["MODEL_DESC"].ToString());
  561. //限制规格代码(外径、壁厚、径壁比,写死的)SIZE_CODE2
  562. parm.Add(dr["SIZE_CODE2"].ToString());
  563. //限制规格描述是冗余数据,因此只插入上面一个即可。
  564. parm.Add(dr["SIZE_NAME2"].ToString());
  565. //限制规格下限符号> >= =,写死的,直接插入数据库即可。SIZE_MIN_SIGN2
  566. parm.Add(dr["SIZE_MIN_SIGN2"].ToString());
  567. //限制规格下限,必须限制只允许输入数字。
  568. parm.Add(dr["SIZE_MIN2"].ToString());
  569. //限制规格上限符号< <= cmbSizeMaxSign2
  570. parm.Add(dr["SIZE_MAX_SIGN2"].ToString());
  571. //限制规格上限SIZE_MAX2
  572. parm.Add(dr["SIZE_MAX2"].ToString());
  573. //限制规格代码(外径、壁厚等)SIZE_CODE,如果之前选择的是外径,这里就不能再选外径了。cmbSizeCode
  574. parm.Add(dr["SIZE_CODE"].ToString());
  575. //限制规格描述SIZE_NAME
  576. parm.Add(dr["SIZE_NAME"].ToString());
  577. //限制规格下限符号SIZE_MIN_SIGN,cmbSizeMinSign
  578. parm.Add(dr["SIZE_MIN_SIGN"].ToString());
  579. //限制规格下限SIZE_MIN
  580. parm.Add(dr["SIZE_MIN"].ToString());
  581. //限制规格上限符号SIZE_MAX_SIGN
  582. parm.Add(dr["SIZE_MAX_SIGN"].ToString());
  583. //限制规格上限SIZE_MAX
  584. parm.Add(dr["SIZE_MAX"].ToString());
  585. //接箍限制规格(接箍专用,与外径壁厚只允许存在其一)SIZE_JG
  586. parm.Add(dr["SIZE_JG"].ToString());
  587. parm.Add(this.UserInfo.GetUserName());
  588. parm.Add(dr["MEMO"].ToString());
  589. //冶金规范码是不能修改的where msc='' and xl=''
  590. parm.Add(mscCode);
  591. parm.Add(xl);
  592. spbUpdateParams.Add(parm);
  593. }
  594. }
  595. }
  596. //ArrayList repeatList = new ArrayList();
  597. //HashSet<Object> repeatHashSet = new HashSet<Object>();
  598. //直接遍历从表所有行,判定是否有选中项。
  599. for (int j = 0; j < SprayCTable.Rows.Count; j++)
  600. {
  601. DataRow minrow = SprayCTable.Rows[j];
  602. if (Convert.ToBoolean(minrow["CHKC"]))
  603. {
  604. if (minrow.RowState == DataRowState.Added)
  605. {
  606. ArrayList minParm = new ArrayList();
  607. //冶金规范码MSC,可以公用出来。
  608. minParm.Add(mscCode);
  609. //序号INDEX_SEQ,父类序列,如果成功建立关联关系,可以直接获取主表主键。
  610. string indexSeq = minrow["INDEX_SEQ"].ToString();
  611. minParm.Add(indexSeq);
  612. //喷标项目序号INDEX_SEQ_C,自身序号由数据库中序列生成。
  613. minParm.Add(minrow["INDEX_SEQ_C"].ToString());
  614. //喷标项目描述SIGN_ITEM,不允许为空。
  615. string signItem = minrow["SIGN_ITEM"].ToString();
  616. if ("".Equals(signItem))
  617. {
  618. MessageBox.Show("喷标项目描述不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  619. return;
  620. }
  621. //还要判断项目描述是否重复。。。。。。。。。。。
  622. //Object[] obj = new Object[] { signItem, indexSeq };
  623. //repeatList.Add(obj);
  624. //repeatHashSet.Add(obj);
  625. minParm.Add(signItem);
  626. //喷标项目内容来源(A:手工录入,B:动态配置)SIGN_SOURCE,cmbSignSource
  627. string signSource = minrow["SIGN_SOURCE"].ToString();
  628. if ("".Equals(signSource))
  629. {
  630. return;
  631. }
  632. minParm.Add(signSource);
  633. //手工录入内容(SIGN_SOURCE等于A)SIGN_NOTE
  634. minParm.Add(minrow["SIGN_NOTE"].ToString());
  635. //数据表名.字段名(SIGN_SOURCE等于B)SIGN_FIELD
  636. minParm.Add(minrow["SIGN_FIELD"].ToString());
  637. minParm.Add(this.UserInfo.GetUserName());
  638. minParm.Add(minrow["MEMO"].ToString());
  639. spbSupplementAddParams.Add(minParm);
  640. }
  641. else if (minrow.RowState == DataRowState.Modified)
  642. {
  643. ArrayList minParm = new ArrayList();
  644. //喷标项目序号INDEX_SEQ_C,自身序号由数据库中序列生成。
  645. //喷标项目描述SIGN_ITEM,不允许为空。
  646. string signItem = minrow["SIGN_ITEM"].ToString();
  647. if ("".Equals(signItem))
  648. {
  649. MessageBox.Show("喷标项目描述不允许为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  650. return;
  651. }
  652. minParm.Add(signItem);
  653. //喷标项目内容来源(A:手工录入,B:动态配置)SIGN_SOURCE,cmbSignSource
  654. string signSource = minrow["SIGN_SOURCE"].ToString();
  655. if ("".Equals(signSource))
  656. {
  657. return;
  658. }
  659. minParm.Add(signSource);
  660. //手工录入内容(SIGN_SOURCE等于A)SIGN_NOTE
  661. minParm.Add(minrow["SIGN_NOTE"].ToString());
  662. //数据表名.字段名(SIGN_SOURCE等于B)SIGN_FIELD
  663. minParm.Add(minrow["SIGN_FIELD"].ToString());
  664. minParm.Add(this.UserInfo.GetUserName());
  665. minParm.Add(minrow["MEMO"].ToString());
  666. //冶金规范码MSC,可以公用出来。
  667. minParm.Add(mscCode);
  668. //序号INDEX_SEQ,父类序列,如果成功建立关联关系,可以直接获取主表主键。
  669. minParm.Add(minrow["INDEX_SEQ"].ToString());
  670. minParm.Add(minrow["INDEX_SEQ_C"].ToString());
  671. spbSupplementUpdateParams.Add(minParm);
  672. }
  673. }
  674. }
  675. //if (isRepeat(repeatHashSet,repeatList))
  676. //{
  677. // MessageBox.Show("喷标项目描述信息重复!", "提示");
  678. // return;
  679. //}
  680. //执行数据库相关操作
  681. CoreClientParam ccp = new CoreClientParam();
  682. //服务端的包名+类名
  683. ccp.ServerName = "com.steering.pss.qcm.CoreStandardSpray";
  684. //类里的方法名
  685. ccp.MethodName = "doSave";
  686. ccp.ServerParams = new object[] { spbAddParams, spbUpdateParams, spbSupplementAddParams, spbSupplementUpdateParams };
  687. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  688. if (ccp.ReturnCode == -1)
  689. {
  690. return;
  691. }
  692. else
  693. {
  694. MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  695. bindSpray();
  696. ExpandRow();
  697. MSCCodes.Clear();
  698. }
  699. }
  700. /// <summary>
  701. /// 验证描述信息是否重复。
  702. /// </summary>
  703. /// <param name="repeatHashSet"></param>
  704. /// <param name="repeatList"></param>
  705. /// <returns></returns>
  706. //private bool isRepeat(HashSet<Object> repeatHashSet, ArrayList repeatList)
  707. //{
  708. // repeatHashSet.Contains();
  709. // if (repeatHashSet.Count == repeatList.Count)
  710. // {
  711. // return true;
  712. // }
  713. // else
  714. // {
  715. // return false;
  716. // }
  717. //}
  718. /// <summary>
  719. /// 绑定冶金规范码
  720. /// </summary>
  721. private void InitMSC()
  722. {
  723. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetMSC", null, this.ob);
  724. GridHelper.CopyDataToDatatable(ref dt, ref this.MSCTable, true);
  725. //内容自适应
  726. GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid1, new UltraGridColumn[] {
  727. //ultraGrid1.DisplayLayout.Bands[0].Columns["MEMO"]
  728. });
  729. }
  730. /// <summary>
  731. /// 将冶金规范码的记录查询出来
  732. /// </summary>
  733. private void doQuery()
  734. {
  735. InitMSC();
  736. }
  737. /// <summary>
  738. /// 根据冶金规范码将喷标数据显示出来
  739. /// </summary>
  740. /// <param name="sender"></param>
  741. /// <param name="e"></param>
  742. private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
  743. {
  744. bindSpray();
  745. maxIndexSeq = 0;
  746. maxIndexSeqC = 0;
  747. }
  748. /// <summary>
  749. /// 绑定主表从表数据。
  750. /// </summary>
  751. private void bindSpray()
  752. {
  753. SprayCTable.Clear();
  754. SprayTable.Clear();
  755. string pscCode = ultraGrid1.ActiveRow.Cells["MSC"].Value.ToString();
  756. //根据冶金规范码查询出喷标要求主表数据
  757. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.getLineList", new Object[] { pscCode }, this.ob);
  758. GridHelper.CopyDataToDatatable(ref dt, ref this.SprayTable, true);
  759. SprayTable.AcceptChanges();
  760. //根据冶金规范码查询出喷标要求从表数据
  761. DataTable dtC = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetSprayC", new Object[] { pscCode }, this.ob);
  762. GridHelper.CopyDataToDatatable(ref dtC, ref this.SprayCTable, true);
  763. SprayCTable.AcceptChanges();
  764. //聚焦第一行
  765. //不同颜色区分是否有效数据
  766. Infragistics.Win.UltraWinGrid.UltraGridRow row = null;
  767. Infragistics.Win.UltraWinGrid.UltraGridRow minrow = null;
  768. for (int i = 0; i < ultraGrid2.Rows.Count; i++)
  769. {
  770. row = ultraGrid2.Rows[i];
  771. if (row.ChildBands[0].Rows.Count > 0)
  772. {
  773. for (int j = 0; j < row.ChildBands[0].Rows.Count; j++)
  774. {
  775. minrow = row.ChildBands[0].Rows[j];
  776. if (!minrow.Cells["VALIDFLAG"].Value.ToString().Equals("1"))
  777. {
  778. minrow.Appearance.ForeColor = Color.Red;
  779. }
  780. else
  781. {
  782. minrow.Appearance.ForeColor = Color.Black;
  783. }
  784. }
  785. }
  786. if (!row.Cells["VALIDFLAG"].Value.ToString().Equals("1"))
  787. {
  788. row.Appearance.ForeColor = Color.Red;
  789. }
  790. else
  791. {
  792. row.Appearance.ForeColor = Color.Black;
  793. }
  794. }
  795. //列自适应宽度
  796. GridHelper.RefreshAndAutoSizeExceptRows(ultraGrid2, new UltraGridColumn[] {
  797. ultraGrid2.DisplayLayout.Bands[0].Columns["CHK"],
  798. ultraGrid2.DisplayLayout.Bands[0].Columns["MEMO"]
  799. });
  800. //主表、从表没有勾选不允许编辑
  801. for (int i = 0; i < ultraGrid2.Rows.Count; i++)
  802. {
  803. for (int j = 1; j < ultraGrid2.Rows[i].Cells.Count; j++)
  804. {
  805. ultraGrid2.Rows[i].Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
  806. }
  807. if (ultraGrid2.Rows[i].ChildBands[0].Rows.Count > 0)
  808. {
  809. for (int k = 0; k < ultraGrid2.Rows[i].ChildBands[0].Rows.Count; k++)
  810. {
  811. for (int f = 1; f < ultraGrid2.Rows[i].ChildBands[0].Rows[k].Cells.Count; f++)
  812. {
  813. ultraGrid2.Rows[i].ChildBands[0].Rows[k].Cells[f].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
  814. }
  815. }
  816. }
  817. }
  818. }
  819. private void ultraGrid2_AfterRowInsert(object sender, RowEventArgs e)
  820. {
  821. //给新增行chk赋值false。假设不这样做,他将为"",而空,在转换为Boolean时会报错。
  822. //获取该行记录,如果有父级则是从表。
  823. //不选中,就不让他编辑好吗?
  824. for (int j = 1; j < e.Row.Cells.Count; j++)
  825. {
  826. e.Row.Cells[j].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
  827. }
  828. if (e.Row.HasParent())
  829. {
  830. ultraGrid2.ActiveRow.Cells["CHKC"].Value = false;
  831. //应该从数据库中获取最大序号,从1开始累加,不要用序列。
  832. int maxIndexSeqC = GetMaxIndexSeqC();
  833. ultraGrid2.ActiveRow.Cells["INDEX_SEQ_C"].Value = maxIndexSeqC;
  834. }
  835. else
  836. {
  837. ultraGrid2.ActiveRow.Cells["CHK"].Value = false;
  838. int maxIndexSeq = GetMaxIndexSeq();
  839. ultraGrid2.ActiveRow.Cells["INDEX_SEQ"].Value = maxIndexSeq;
  840. }
  841. }
  842. private static int maxIndexSeq = 0;
  843. /// <summary>
  844. /// 从数据库中获取主表最大序号值+1返回。
  845. /// </summary>
  846. /// <returns></returns>
  847. private int GetMaxIndexSeq()
  848. {
  849. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetMaxIndexSeq", null, this.ob);
  850. int maxCode = 1;
  851. if (dt.Rows.Count > 0)
  852. {
  853. if (!"".Equals(dt.Rows[0][0].ToString()))
  854. {
  855. maxCode = Convert.ToInt32(dt.Rows[0][0]) + 1;
  856. }
  857. }
  858. if (maxIndexSeq == 0)
  859. {
  860. maxIndexSeq = maxCode;
  861. }
  862. else
  863. {
  864. maxIndexSeq++;
  865. }
  866. return maxIndexSeq;
  867. //另外切换数据源的时候让maxIndexSeq等于0
  868. }
  869. private static int maxIndexSeqC = 0;
  870. /// <summary>
  871. /// 从数据库中获取从表最大序号值+1返回。
  872. /// </summary>
  873. /// <returns></returns>
  874. private int GetMaxIndexSeqC()
  875. {
  876. DataTable dt = ServerHelper.GetData("com.steering.pss.qcm.CoreStandardSpray.GetMaxIndexSeqC", null, this.ob);
  877. int maxCode = 1;
  878. if (dt.Rows.Count > 0)
  879. {
  880. if (!"".Equals(dt.Rows[0][0].ToString()))
  881. {
  882. maxCode = Convert.ToInt32(dt.Rows[0][0]) + 1;
  883. }
  884. }
  885. if (maxIndexSeqC == 0)
  886. {
  887. maxIndexSeqC = maxCode;
  888. }
  889. else
  890. {
  891. maxIndexSeqC++;
  892. }
  893. return maxIndexSeqC;
  894. //另外切换数据源的时候让maxIndexSeqC等于0
  895. }
  896. /// <summary>
  897. /// 用于扣型选择弹出对话框。
  898. /// </summary>
  899. public UltraGridRow rowparm;
  900. /// <summary>
  901. /// 触发扣型事件。
  902. /// </summary>
  903. /// <param name="sender"></param>
  904. /// <param name="e"></param>
  905. private void ultraGrid2_ClickCellButton(object sender, CellEventArgs e)
  906. {
  907. //单击表格按钮时间(有一列格子设为按钮)
  908. UltraGridRow ugr = this.ultraGrid2.ActiveRow;
  909. if (e.Cell.Column.Key.Equals("MODEL_DESC") && ugr.Cells["CHK"].Value.ToString() == "True")
  910. {//这一按钮列被点击,同时被点击的这一行被勾选了。
  911. this.rowparm = this.ultraGrid2.ActiveRow;
  912. FrmModel fms = new FrmModel();
  913. fms.FrmOb = this.ob; //ob对象传到扣型选择界面
  914. fms.Desc = rowparm.Cells["MODEL_DESC"].Value.ToString(); //激活行的扣型描述
  915. fms.ShowDialog();
  916. rowparm.Cells["MODEL_CODE"].Value = fms.Code; //选择的扣型集合代码
  917. rowparm.Cells["MODEL_DESC"].Value = fms.Desc; //选择的扣型集合描述 //返回到点击界面。
  918. }
  919. }
  920. private void ultraGrid2_CellChange(object sender, CellEventArgs e)
  921. {
  922. ultraGrid2.UpdateData();
  923. //从表
  924. if (e.Cell.Column.Key.Equals("CHKC"))
  925. {
  926. if (e.Cell.Value != null && !string.IsNullOrEmpty(e.Cell.Value.ToString()) && Convert.ToBoolean(e.Cell.Value))
  927. {
  928. for (int i = 1; i < e.Cell.Row.Cells.Count; i++)
  929. {
  930. //16 17 18 19 20 21 24
  931. if (i != 8 && i != 9 && i != 10 && i != 11 && i != 12 && i != 13 && i != 16)
  932. {
  933. e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit;
  934. }
  935. }
  936. }
  937. else
  938. {
  939. for (int i = 1; i < e.Cell.Row.Cells.Count; i++)
  940. {
  941. e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
  942. }
  943. }
  944. }
  945. //主表
  946. if (e.Cell.Column.Key.Equals("CHK"))
  947. {
  948. //选中状态
  949. if (e.Cell.Value != null && !string.IsNullOrEmpty(e.Cell.Value.ToString()) && Convert.ToBoolean(e.Cell.Value))
  950. {
  951. for (int i = 1; i < e.Cell.Row.Cells.Count; i++)
  952. {
  953. if (i != 16 && i != 17 && i != 18 && i != 19 && i != 20 && i != 21 && i != 24)
  954. {
  955. e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit;
  956. }
  957. }
  958. }
  959. else
  960. {
  961. for (int i = 1; i < e.Cell.Row.Cells.Count; i++)
  962. {
  963. e.Cell.Row.Cells[i].Activation = Infragistics.Win.UltraWinGrid.Activation.ActivateOnly;
  964. }
  965. }
  966. }
  967. //当限制规格描述为空的时候,清空他后面的4列。25、26
  968. if (e.Cell.Column.Key.Equals("SIZE_NAME2"))
  969. {
  970. if ("".Equals(ultraGrid2.ActiveRow.Cells["SIZE_NAME2"].Value.ToString()))
  971. {
  972. ultraGrid2.ActiveRow.Cells["SIZE_MIN_SIGN2"].Value = "";
  973. ultraGrid2.ActiveRow.Cells["SIZE_MIN2"].Value = "";
  974. ultraGrid2.ActiveRow.Cells["SIZE_MAX_SIGN2"].Value = "";
  975. ultraGrid2.ActiveRow.Cells["SIZE_MAX2"].Value = "";
  976. }
  977. }
  978. if (e.Cell.Column.Key.Equals("SIZE_NAME"))
  979. {
  980. if ("".Equals(ultraGrid2.ActiveRow.Cells["SIZE_NAME"].Value.ToString()))
  981. {
  982. ultraGrid2.ActiveRow.Cells["SIZE_MIN_SIGN"].Value = "";
  983. ultraGrid2.ActiveRow.Cells["SIZE_MIN"].Value = "";
  984. ultraGrid2.ActiveRow.Cells["SIZE_MAX_SIGN"].Value = "";
  985. ultraGrid2.ActiveRow.Cells["SIZE_MAX"].Value = "";
  986. }
  987. }
  988. //复选框相关选中事件
  989. //勾选主表(或者取消勾选)
  990. //if (e.Cell.Column.Key.Equals("CHK") && !e.Cell.Row.HasParent())
  991. //{
  992. // foreach (UltraGridRow row in e.Cell.Row.ChildBands[0].Rows)
  993. // {
  994. // row.Cells["CHKC"].Value = e.Cell.Value; //从表值勾选为主表勾选值
  995. // }
  996. //}
  997. //else
  998. //{
  999. // //勾选从表(或者取消勾选),按理说点击其他位置,也会触发该段代码。
  1000. // int flag = 0;
  1001. // foreach (UltraGridRow row in e.Cell.Row.ParentRow.ChildBands[0].Rows)
  1002. // {
  1003. // if (Convert.ToBoolean(row.Cells["CHKC"].Value))
  1004. // {
  1005. // //从表勾选了 状态参数+1
  1006. // flag += 1;
  1007. // }
  1008. // }
  1009. // //状态参数小于从表的行数,说明未全勾选,主表未半选状态
  1010. // if (flag < e.Cell.Row.ParentRow.ChildBands[0].Rows.Count && flag != 0)
  1011. // {
  1012. // e.Cell.Row.ParentRow.Cells["CHK"].Value = null;
  1013. // }
  1014. // else if (flag == 0)
  1015. // {
  1016. // //从表取消全部勾选,主表不勾选
  1017. // e.Cell.Row.ParentRow.Cells["CHK"].Value = false;
  1018. // }
  1019. // else
  1020. // {
  1021. // //否则主表为全选状态
  1022. // e.Cell.Row.ParentRow.Cells["CHK"].Value = true;
  1023. // }
  1024. //}
  1025. SaveMSCCode(e);
  1026. }
  1027. private List<string> MSCCodes = new List<string>(); //做过操作的冶金规范码和序号
  1028. /// <summary>
  1029. /// 保存操作的冶金规范码+序号
  1030. /// </summary>
  1031. /// <param name="e"></param>
  1032. private void SaveMSCCode(CellEventArgs e)
  1033. {
  1034. if (e.Cell.Row.HasParent())
  1035. {
  1036. if (Convert.ToBoolean(e.Cell.Row.Cells["CHKC"].Value)
  1037. && !MSCCodes.Contains(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString()))
  1038. {
  1039. MSCCodes.Add(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString());
  1040. }
  1041. }
  1042. else if (e.Cell.Row.ChildBands[0].Rows.Count > 0)
  1043. {
  1044. if (Convert.ToBoolean(e.Cell.Row.Cells["CHK"].Value)
  1045. && !MSCCodes.Contains(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString()))
  1046. {
  1047. MSCCodes.Add(e.Cell.Row.Cells["MSC"].Value.ToString() + "," + e.Cell.Row.Cells["INDEX_SEQ"].Value.ToString());
  1048. }
  1049. }
  1050. }
  1051. /// <summary>
  1052. /// 展开某一行
  1053. /// </summary>
  1054. private void ExpandRow()
  1055. {
  1056. foreach (UltraGridRow row in ultraGrid2.Rows)
  1057. {
  1058. if (MSCCodes.Contains(row.Cells["MSC"].Value.ToString() + "," + row.Cells["INDEX_SEQ"].Value.ToString()))
  1059. {
  1060. row.ExpandAll();
  1061. row.Activate();
  1062. }
  1063. }
  1064. }
  1065. }
  1066. }