PublicUltraGridDetail.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using Infragistics.Win.UltraWinGrid;
  10. using System.Collections;
  11. using CoreFS.CA06;
  12. using Core.Mes.Client.Comm.Control;
  13. using Core.Mes.Client.Comm.Server;
  14. using Core.Mes.Client.Comm.Tool;
  15. //详细信息显示Grid
  16. namespace Core.StlMes.Client.Lims.Data.Mat
  17. {
  18. public partial class PublicUltraGridDetail : UserControl
  19. {
  20. public event EventHandler PublicUltraGridDetailActive;
  21. //private DataTable dataTable;
  22. public DataTable DataTable
  23. {
  24. get { return dataTable1; }
  25. set { dataTable1 = value; }
  26. }
  27. //private UltraGrid ug;
  28. public UltraGrid Ug
  29. {
  30. get { return ultraGrid1; }
  31. set { ultraGrid1 = value; }
  32. }
  33. private UltraGridRow ur;
  34. public UltraGridRow Ur
  35. {
  36. get { return ur; }
  37. set { ur = value; }
  38. }
  39. public PublicUltraGridDetail()
  40. {
  41. InitializeComponent();
  42. }
  43. private void PublicUltraGridDetail_Load(object sender, EventArgs e)
  44. {
  45. }
  46. //初始化基础明细数据列
  47. public void InitColumnsBaseDetail(string[] show, bool isShow, string[] ope)
  48. {
  49. string[] arrColumns = new string[] { "CHK", "FLAG", "FLAG_DESC", "CHECK_NO", "BATCH_NO", "SAMPLE_NO", "ITEM_NAME", "SAMPLE_WEIGHT", "PRODUCT_STD", "GRADE", "WEIGHT", "CHECK_COUNT", "CHECK_COUNT_DESC", "CONSIGN_DEPT", "CONSIGN_NAME", "CONSIGN_TIME", "DEPT_ID", "DEPT_ID_DESC", "MAT_CODE", "MAT_NAME", "MAT_UNIT", "LAB_RECEIVE_NAME", "LAB_RECEIVE_TIME", "CHECK_NAME", "CHECK_TIME", "AUDIT_NAME", "AUDIT_TIME", "MAT_VALUE", "SAMPLE_REMARK", "REMARK" };//"ISPRODUCER",
  50. string[] arrCaption = new string[] { "选择", "状态", "状态", "检验编号", "批次号", "试样号", "试样名称", "试样重量", "技术标准", "牌号", "重量", "初复检", "初复检", "委托单位", "委托人", "委托时间", "试验室", "试验室", "检验项编码", "检验项", "单位", "试验室收样人", "试验室收样时间", "试验人", "试验时间", "审核人", "审核时间", "试验结果", "来样备注", "备注" };//"是否监制",
  51. InitColumns(arrColumns, arrCaption);
  52. setColumnShowOrHidden(show, isShow);
  53. setOtherColumnReadOnly(ope);//可编辑列
  54. }
  55. //初始化明细数据列
  56. public void InitColumnsDetail(string[] show, bool isShow, string[] ope)
  57. {
  58. string[] arrColumns = new string[] { "CHK", "FLAG", "FLAG_DESC", "CHECK_NO", "BATCH_NO", "SAMPLE_NO", "MAT_CODE", "MAT_NAME", "MAT_UNIT", "LAB_RECEIVE_NAME", "LAB_RECEIVE_TIME", "CHECK_NAME", "CHECK_TIME", "AUDIT_NAME", "AUDIT_TIME", "MAT_VALUEE", "REMARK" };//"ISPRODUCER",
  59. string[] arrCaption = new string[] { "选择", "状态", "状态", "检验编号", "批次号", "试样号", "检验项编码", "检验项", "单位", "试验室收样人", "试验室收样时间", "试验人", "试验时间", "审核人", "审核时间", "试验结果", "备注" };//"是否监制",
  60. InitColumns(arrColumns, arrCaption);
  61. setColumnShowOrHidden(show, isShow);
  62. setOtherColumnReadOnly(ope);//可编辑列
  63. }
  64. //初始化列
  65. public void InitColumns(string[] arrColumns, string[] arrCaption)
  66. {
  67. PublicMat.InitColumns(arrColumns, arrCaption, dataTable1);
  68. }
  69. //设置列是否隐藏
  70. public void setColumnShowOrHidden(string[] keys, bool isShow)
  71. {
  72. PublicMat.setColumnShowOrHidden(ultraGrid1, keys, isShow);
  73. }
  74. //可编辑列
  75. public void setOtherColumnReadOnly(string[] keys)
  76. {
  77. PublicMat.setOtherColumnReadOnly(ultraGrid1, keys);
  78. }
  79. //自适应
  80. private void RefreshAutoSize(int num)
  81. {
  82. if (num < 0)
  83. {
  84. return;
  85. }
  86. for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
  87. {
  88. if (i < num)
  89. {
  90. ultraGrid1.DisplayLayout.Bands[0].Columns[i].PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand);//其他自适应
  91. }
  92. else
  93. {
  94. ultraGrid1.DisplayLayout.Bands[0].Columns[i].Width = 100;//设置列宽
  95. }
  96. }
  97. }
  98. //自适应
  99. private void RefreshAutoSize()
  100. {
  101. for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
  102. {
  103. if (ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key == "SAMPLE_NO")
  104. {
  105. ultraGrid1.DisplayLayout.Bands[0].Columns[i].Width = 90;
  106. }
  107. else
  108. {
  109. ultraGrid1.DisplayLayout.Bands[0].Columns[i].Width = 60;
  110. }//设置列宽
  111. }
  112. }
  113. private void ultraGrid1_AfterRowActivate(object sender, EventArgs e)
  114. {
  115. ur = ultraGrid1.ActiveRow;
  116. if (PublicUltraGridDetailActive != null)
  117. {
  118. //ur = ultraGrid1.ActiveRow;
  119. PublicUltraGridDetailActive(sender, e);//调用委托事件
  120. }
  121. }
  122. private void ultraGrid1_AfterSelectChange(object sender, AfterSelectChangeEventArgs e)
  123. {
  124. PublicMat.SelectRow(ultraGrid1);
  125. }
  126. /// <summary>
  127. /// 显示列
  128. /// </summary>
  129. /// <param name="dt"></param>源DataTable
  130. /// <param name="dataTable"></param>需要增加的DataTable
  131. public void ShowColumns(int startNum, DataTable dt, DataTable dataTable)
  132. {
  133. if (dt != null && dataTable != null)
  134. {
  135. int dcNum = dataTable.Columns.Count;//清除列
  136. if (dcNum > startNum)
  137. {
  138. for (int i = 0; i < dcNum - startNum; i++)
  139. {
  140. dataTable.Columns.RemoveAt(startNum);
  141. }
  142. }
  143. foreach (DataRow dr in dt.Rows)//增加列
  144. {
  145. try
  146. {
  147. DataColumn dc = new DataColumn(dr["MAT_CODE"].ToString());
  148. dc.Caption = dr["MAT_NAME"].ToString();
  149. dataTable.Columns.Add(dc);
  150. }
  151. catch
  152. {
  153. continue;
  154. }
  155. }
  156. }
  157. }
  158. /// <summary>
  159. /// 显示取样明细列
  160. /// </summary>
  161. /// <param name="dt"></param>源DataTable
  162. /// <param name="dataTable"></param>需要增加的DataTable
  163. public void AddColumns(int startNum, DataTable dt, DataTable dataTable)
  164. {
  165. //dt != null &&
  166. if (dataTable != null)
  167. {
  168. dataTable1.Rows.Clear();
  169. int dcNum = dataTable.Columns.Count;//清除列
  170. if (dcNum > startNum)
  171. {
  172. for (int i = 0; i < dcNum - startNum; i++)
  173. {
  174. dataTable.Columns.RemoveAt(startNum);
  175. }
  176. }
  177. DataColumn dc;
  178. dc = new DataColumn("SAMPLE_NO");
  179. dc.Caption = "试样号";
  180. dataTable.Columns.Add(dc);
  181. if (dt != null)
  182. {
  183. foreach (DataRow dr in dt.Rows)//增加列
  184. {
  185. try
  186. {
  187. dc = new DataColumn(dr["MAT_CODE"].ToString());
  188. dc.Caption = dr["MAT_NAME"].ToString();
  189. dataTable.Columns.Add(dc);
  190. }
  191. catch
  192. {
  193. continue;
  194. }
  195. }
  196. }
  197. dc = new DataColumn("GET_SAMPLE_NAME");
  198. dc.Caption = "取样人";
  199. dataTable.Columns.Add(dc);
  200. dc = new DataColumn("GET_SAMPLE_TIME");
  201. dc.Caption = "取样时间";
  202. dataTable.Columns.Add(dc);
  203. dc = new DataColumn("GET_SAMPLE_SHIFT");
  204. dc.Caption = "取样班次";
  205. dataTable.Columns.Add(dc);
  206. dc = new DataColumn("GET_SAMPLE_CLASS");
  207. dc.Caption = "取样班组";
  208. dataTable.Columns.Add(dc);
  209. dc = new DataColumn("GET_SAMPLE_WEIGHT");
  210. dc.Caption = "取样重量";
  211. dataTable.Columns.Add(dc);
  212. dc = new DataColumn("GET_SMALL_COUNT");
  213. dc.Caption = "份样数量";
  214. dataTable.Columns.Add(dc);
  215. dc = new DataColumn("GET_SAMPLE_DEPT");
  216. dc.Caption = "取样部门";
  217. dataTable.Columns.Add(dc);
  218. dc = new DataColumn("GET_SAMPLE_AREA");
  219. dc.Caption = "取样地点";
  220. dataTable.Columns.Add(dc);
  221. dc = new DataColumn("GET_SAMPLE_REMARK");
  222. dc.Caption = "取样备注";
  223. dataTable.Columns.Add(dc);
  224. }
  225. }
  226. //查询检验委托明细信息
  227. public void QueryCheckConsignDetail(ArrayList arrayList, OpeBase ob, int startNum)
  228. {
  229. DataTable dt = PublicServer.GetData("com.steering.lims.data.mat.PublicMatBase.QueryCheckConsignDetail",
  230. new Object[] { arrayList }, ob);
  231. if (dt == null || dt.Rows.Count == 0)
  232. {
  233. dataTable1.Rows.Clear();
  234. return;
  235. }
  236. if (startNum == -1)
  237. {
  238. GridHelper.CopyDataToDatatable(dt, dataTable1, true);//把dt复制给dataTable4
  239. //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid
  240. return;
  241. }
  242. ShowColumns(startNum, dt, dataTable1);
  243. string row = "";//存放所有样管号判断是否有重复样管号
  244. string mat_code = "";//存放所有样管号判断是否有重复检验项
  245. dataTable1.Rows.Clear();//清除行
  246. DataRow newDr = dataTable1.NewRow();
  247. DataRow newDrUnit = dataTable1.NewRow();//增加单位行
  248. foreach (DataRow dr in dt.Rows)
  249. {
  250. if (mat_code.IndexOf(dr["MAT_CODE"].ToString()) < 0)//判断是否有重复检验项
  251. {
  252. mat_code += dr["MAT_CODE"].ToString() + " ";
  253. newDrUnit[dr["MAT_CODE"].ToString()] = dr["MAT_UNIT"].ToString();
  254. }
  255. if (row.IndexOf(dr["SAMPLE_NO"].ToString()) < 0)//判断是否有重复样管号,有则不增加行只增加对应的列
  256. {
  257. row += dr["SAMPLE_NO"].ToString() + " ";
  258. newDr = dataTable1.NewRow();
  259. newDr["SAMPLE_NO"] = dr["SAMPLE_NO"].ToString();
  260. //newDr[dr["MAT_CODE"].ToString()] = "√";
  261. dataTable1.Rows.Add(newDr);
  262. }
  263. }
  264. dataTable1.Rows.InsertAt(newDrUnit, 0);
  265. //if (ultraGrid1.Rows.Count > 0)
  266. //{
  267. // ultraGrid1.Rows[0].Activation = Activation.ActivateOnly;//第一行单位不可编辑
  268. //}
  269. //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid
  270. ultraGrid1.DataBind();//dataTable发生变化提交给ultraGrid
  271. RefreshAutoSize();
  272. }
  273. //查询检验委托明细信息
  274. public void QueryCheckConsignDetail(DataTable dt, int startNum, string strCheck_No, int sample_count)
  275. {
  276. if (dt == null || dt.Rows.Count == 0)
  277. {
  278. return;
  279. }
  280. if (startNum == -1)
  281. {
  282. GridHelper.CopyDataToDatatable(dt, dataTable1, true);//把dt复制给dataTable4
  283. //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid
  284. return;
  285. }
  286. ShowColumns(startNum, dt, dataTable1);
  287. //string row = "";//存放所有样管号判断是否有重复样管号
  288. string mat_code = "";//存放所有样管号判断是否有重复检验项
  289. dataTable1.Rows.Clear();//清除行
  290. DataRow newDr = dataTable1.NewRow();
  291. DataRow newDrUnit = dataTable1.NewRow();//增加单位行
  292. foreach (DataRow dr in dt.Rows)
  293. {
  294. if (mat_code.IndexOf(dr["MAT_CODE"].ToString()) < 0)//判断是否有重复检验项
  295. {
  296. mat_code += dr["MAT_CODE"].ToString() + " ";
  297. newDrUnit[dr["MAT_CODE"].ToString()] = dr["MAT_UNIT"].ToString();
  298. }
  299. //if (row.IndexOf(dr["SAMPLE_NO"].ToString()) < 0)//判断是否有重复样管号,有则不增加行只增加对应的列
  300. //{
  301. // row += dr["SAMPLE_NO"].ToString() + " ";
  302. // newDr = dataTable1.NewRow();
  303. // newDr["SAMPLE_NO"] = dr["SAMPLE_NO"].ToString();
  304. // //newDr[dr["MAT_CODE"].ToString()] = "√";
  305. // dataTable1.Rows.Add(newDr);
  306. //}
  307. }
  308. for (int i = 1; i <= sample_count; i++)
  309. {
  310. newDr = dataTable1.NewRow();
  311. newDr["SAMPLE_NO"] = strCheck_No + "-" + i.ToString();
  312. //newDr[dr["MAT_CODE"].ToString()] = "√";
  313. dataTable1.Rows.Add(newDr);
  314. }
  315. dataTable1.Rows.InsertAt(newDrUnit, 0);
  316. //if (ultraGrid1.Rows.Count > 0)
  317. //{
  318. // ultraGrid1.Rows[0].Activation = Activation.ActivateOnly;//第一行单位不可编辑
  319. //}
  320. //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid
  321. ultraGrid1.DataBind();//dataTable发生变化提交给ultraGrid
  322. RefreshAutoSize();
  323. }
  324. //查询检验委托明细信息
  325. public void QueryCheckConsignDetail_Dept(string path, ArrayList arrayList, OpeBase ob, int startNum, string[] arrId)
  326. {
  327. DataTable dt = PublicServer.GetData("com.steering.lims.data." + path + ".QueryCheckConsignDetail_Dept",
  328. arrId == null ? new Object[] { arrayList } : new Object[] { arrayList, arrId }, ob);
  329. if (dt == null || dt.Rows.Count == 0)
  330. {
  331. dataTable1.Rows.Clear();
  332. int dcNum = dataTable1.Columns.Count;//清除列
  333. if (dcNum > startNum)
  334. {
  335. for (int i = 0; i < dcNum - startNum; i++)
  336. {
  337. dataTable1.Columns.RemoveAt(startNum);
  338. }
  339. }
  340. return;
  341. }
  342. if (startNum == -1)
  343. {
  344. GridHelper.CopyDataToDatatable(dt, dataTable1, true);//把dt复制给dataTable4
  345. //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid
  346. return;
  347. }
  348. ShowColumns(startNum, dt, dataTable1);
  349. string row = "";//存放所有样管号判断是否有重复样管号
  350. string mat_code = "";//存放所有样管号判断是否有重复检验项
  351. dataTable1.Rows.Clear();//清除行
  352. DataRow newDr = dataTable1.NewRow();
  353. DataRow newDrUnit = dataTable1.NewRow();//增加单位行
  354. foreach (DataRow dr in dt.Rows)
  355. {
  356. if (mat_code.IndexOf(dr["MAT_CODE"].ToString()) < 0 && dataTable1.Columns.Contains(dr["MAT_CODE"].ToString()))//判断是否有重复检验项
  357. {
  358. mat_code += dr["MAT_CODE"].ToString() + " ";
  359. newDrUnit[dr["MAT_CODE"].ToString()] = dr["MAT_UNIT"].ToString();
  360. }
  361. if (row.IndexOf(dr["SAMPLE_NO"].ToString()) < 0)//判断是否有重复样管号,有则不增加行只增加对应的列
  362. {
  363. row += dr["SAMPLE_NO"].ToString() + " ";
  364. newDr = dataTable1.NewRow();
  365. newDr["SAMPLE_NO"] = dr["SAMPLE_NO"].ToString();
  366. if (dataTable1.Columns.Contains(dr["MAT_CODE"].ToString().ToUpper()))
  367. {
  368. newDr[dr["MAT_CODE"].ToString()] = dr["MAT_VALUE"].ToString();
  369. }
  370. dataTable1.Rows.Add(newDr);
  371. }
  372. else
  373. {
  374. if (dataTable1.Columns.Contains(dr["MAT_CODE"].ToString().ToUpper()))
  375. {
  376. newDr[dr["MAT_CODE"].ToString()] = dr["MAT_VALUE"].ToString();
  377. }
  378. }
  379. }
  380. dataTable1.Rows.InsertAt(newDrUnit, 0);
  381. if (ultraGrid1.Rows.Count > 0)
  382. {
  383. ultraGrid1.Rows[0].Activation = Activation.ActivateOnly;//第一行单位不可编辑
  384. }
  385. //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid
  386. ultraGrid1.DataBind();//dataTable发生变化提交给ultraGrid
  387. RefreshAutoSize();
  388. }
  389. private void ultraGrid1_CellChange(object sender, CellEventArgs e)
  390. {
  391. //ultraGrid1.Update();
  392. //ultraGrid1.UpdateData();
  393. //if (e.Cell.Text.Trim() == "" || e.Cell.Column.Key != "SAMPLE_NO")
  394. //{
  395. // return;
  396. //}
  397. //if (ultraGrid1.DisplayLayout.Bands[0].Columns.Exists("SAMPLE_NO"))
  398. //{
  399. // foreach (UltraGridRow ur in ultraGrid1.Rows)
  400. // {
  401. // if (ur != e.Cell.Row && ur.Cells["SAMPLE_NO"].Text.Trim() == e.Cell.Text.Trim())
  402. // {
  403. // MessageUtil.ShowWarning("存在相同的试样号请重新输入!");
  404. // e.Cell.Value = "";
  405. // return;
  406. // }
  407. // }
  408. //}
  409. }
  410. }
  411. }