using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using Infragistics.Win.UltraWinGrid; using System.Collections; using CoreFS.CA06; using Core.Mes.Client.Comm.Control; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; //详细信息显示Grid namespace Core.StlMes.Client.Lims.Data.Mat { public partial class PublicUltraGridDetail : UserControl { public event EventHandler PublicUltraGridDetailActive; //private DataTable dataTable; public DataTable DataTable { get { return dataTable1; } set { dataTable1 = value; } } //private UltraGrid ug; public UltraGrid Ug { get { return ultraGrid1; } set { ultraGrid1 = value; } } private UltraGridRow ur; public UltraGridRow Ur { get { return ur; } set { ur = value; } } public PublicUltraGridDetail() { InitializeComponent(); } private void PublicUltraGridDetail_Load(object sender, EventArgs e) { } //初始化基础明细数据列 public void InitColumnsBaseDetail(string[] show, bool isShow, string[] ope) { 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", string[] arrCaption = new string[] { "选择", "状态", "状态", "检验编号", "批次号", "试样号", "试样名称", "试样重量", "技术标准", "牌号", "重量", "初复检", "初复检", "委托单位", "委托人", "委托时间", "试验室", "试验室", "检验项编码", "检验项", "单位", "试验室收样人", "试验室收样时间", "试验人", "试验时间", "审核人", "审核时间", "试验结果", "来样备注", "备注" };//"是否监制", InitColumns(arrColumns, arrCaption); setColumnShowOrHidden(show, isShow); setOtherColumnReadOnly(ope);//可编辑列 } //初始化明细数据列 public void InitColumnsDetail(string[] show, bool isShow, string[] ope) { 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", string[] arrCaption = new string[] { "选择", "状态", "状态", "检验编号", "批次号", "试样号", "检验项编码", "检验项", "单位", "试验室收样人", "试验室收样时间", "试验人", "试验时间", "审核人", "审核时间", "试验结果", "备注" };//"是否监制", InitColumns(arrColumns, arrCaption); setColumnShowOrHidden(show, isShow); setOtherColumnReadOnly(ope);//可编辑列 } //初始化列 public void InitColumns(string[] arrColumns, string[] arrCaption) { PublicMat.InitColumns(arrColumns, arrCaption, dataTable1); } //设置列是否隐藏 public void setColumnShowOrHidden(string[] keys, bool isShow) { PublicMat.setColumnShowOrHidden(ultraGrid1, keys, isShow); } //可编辑列 public void setOtherColumnReadOnly(string[] keys) { PublicMat.setOtherColumnReadOnly(ultraGrid1, keys); } //自适应 private void RefreshAutoSize(int num) { if (num < 0) { return; } for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++) { if (i < num) { ultraGrid1.DisplayLayout.Bands[0].Columns[i].PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand);//其他自适应 } else { ultraGrid1.DisplayLayout.Bands[0].Columns[i].Width = 100;//设置列宽 } } } //自适应 private void RefreshAutoSize() { for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++) { if (ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key == "SAMPLE_NO") { ultraGrid1.DisplayLayout.Bands[0].Columns[i].Width = 90; } else { ultraGrid1.DisplayLayout.Bands[0].Columns[i].Width = 60; }//设置列宽 } } private void ultraGrid1_AfterRowActivate(object sender, EventArgs e) { ur = ultraGrid1.ActiveRow; if (PublicUltraGridDetailActive != null) { //ur = ultraGrid1.ActiveRow; PublicUltraGridDetailActive(sender, e);//调用委托事件 } } private void ultraGrid1_AfterSelectChange(object sender, AfterSelectChangeEventArgs e) { PublicMat.SelectRow(ultraGrid1); } /// /// 显示列 /// /// 源DataTable /// 需要增加的DataTable public void ShowColumns(int startNum, DataTable dt, DataTable dataTable) { if (dt != null && dataTable != null) { int dcNum = dataTable.Columns.Count;//清除列 if (dcNum > startNum) { for (int i = 0; i < dcNum - startNum; i++) { dataTable.Columns.RemoveAt(startNum); } } foreach (DataRow dr in dt.Rows)//增加列 { try { DataColumn dc = new DataColumn(dr["MAT_CODE"].ToString()); dc.Caption = dr["MAT_NAME"].ToString(); dataTable.Columns.Add(dc); } catch { continue; } } } } /// /// 显示取样明细列 /// /// 源DataTable /// 需要增加的DataTable public void AddColumns(int startNum, DataTable dt, DataTable dataTable) { //dt != null && if (dataTable != null) { dataTable1.Rows.Clear(); int dcNum = dataTable.Columns.Count;//清除列 if (dcNum > startNum) { for (int i = 0; i < dcNum - startNum; i++) { dataTable.Columns.RemoveAt(startNum); } } DataColumn dc; dc = new DataColumn("SAMPLE_NO"); dc.Caption = "试样号"; dataTable.Columns.Add(dc); if (dt != null) { foreach (DataRow dr in dt.Rows)//增加列 { try { dc = new DataColumn(dr["MAT_CODE"].ToString()); dc.Caption = dr["MAT_NAME"].ToString(); dataTable.Columns.Add(dc); } catch { continue; } } } dc = new DataColumn("GET_SAMPLE_NAME"); dc.Caption = "取样人"; dataTable.Columns.Add(dc); dc = new DataColumn("GET_SAMPLE_TIME"); dc.Caption = "取样时间"; dataTable.Columns.Add(dc); dc = new DataColumn("GET_SAMPLE_SHIFT"); dc.Caption = "取样班次"; dataTable.Columns.Add(dc); dc = new DataColumn("GET_SAMPLE_CLASS"); dc.Caption = "取样班组"; dataTable.Columns.Add(dc); dc = new DataColumn("GET_SAMPLE_WEIGHT"); dc.Caption = "取样重量"; dataTable.Columns.Add(dc); dc = new DataColumn("GET_SMALL_COUNT"); dc.Caption = "份样数量"; dataTable.Columns.Add(dc); dc = new DataColumn("GET_SAMPLE_DEPT"); dc.Caption = "取样部门"; dataTable.Columns.Add(dc); dc = new DataColumn("GET_SAMPLE_AREA"); dc.Caption = "取样地点"; dataTable.Columns.Add(dc); dc = new DataColumn("GET_SAMPLE_REMARK"); dc.Caption = "取样备注"; dataTable.Columns.Add(dc); } } //查询检验委托明细信息 public void QueryCheckConsignDetail(ArrayList arrayList, OpeBase ob, int startNum) { DataTable dt = PublicServer.GetData("com.steering.lims.data.mat.PublicMatBase.QueryCheckConsignDetail", new Object[] { arrayList }, ob); if (dt == null || dt.Rows.Count == 0) { dataTable1.Rows.Clear(); return; } if (startNum == -1) { GridHelper.CopyDataToDatatable(dt, dataTable1, true);//把dt复制给dataTable4 //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid return; } ShowColumns(startNum, dt, dataTable1); string row = "";//存放所有样管号判断是否有重复样管号 string mat_code = "";//存放所有样管号判断是否有重复检验项 dataTable1.Rows.Clear();//清除行 DataRow newDr = dataTable1.NewRow(); DataRow newDrUnit = dataTable1.NewRow();//增加单位行 foreach (DataRow dr in dt.Rows) { if (mat_code.IndexOf(dr["MAT_CODE"].ToString()) < 0)//判断是否有重复检验项 { mat_code += dr["MAT_CODE"].ToString() + " "; newDrUnit[dr["MAT_CODE"].ToString()] = dr["MAT_UNIT"].ToString(); } if (row.IndexOf(dr["SAMPLE_NO"].ToString()) < 0)//判断是否有重复样管号,有则不增加行只增加对应的列 { row += dr["SAMPLE_NO"].ToString() + " "; newDr = dataTable1.NewRow(); newDr["SAMPLE_NO"] = dr["SAMPLE_NO"].ToString(); //newDr[dr["MAT_CODE"].ToString()] = "√"; dataTable1.Rows.Add(newDr); } } dataTable1.Rows.InsertAt(newDrUnit, 0); //if (ultraGrid1.Rows.Count > 0) //{ // ultraGrid1.Rows[0].Activation = Activation.ActivateOnly;//第一行单位不可编辑 //} //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid ultraGrid1.DataBind();//dataTable发生变化提交给ultraGrid RefreshAutoSize(); } //查询检验委托明细信息 public void QueryCheckConsignDetail(DataTable dt, int startNum, string strCheck_No, int sample_count) { if (dt == null || dt.Rows.Count == 0) { return; } if (startNum == -1) { GridHelper.CopyDataToDatatable(dt, dataTable1, true);//把dt复制给dataTable4 //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid return; } ShowColumns(startNum, dt, dataTable1); //string row = "";//存放所有样管号判断是否有重复样管号 string mat_code = "";//存放所有样管号判断是否有重复检验项 dataTable1.Rows.Clear();//清除行 DataRow newDr = dataTable1.NewRow(); DataRow newDrUnit = dataTable1.NewRow();//增加单位行 foreach (DataRow dr in dt.Rows) { if (mat_code.IndexOf(dr["MAT_CODE"].ToString()) < 0)//判断是否有重复检验项 { mat_code += dr["MAT_CODE"].ToString() + " "; newDrUnit[dr["MAT_CODE"].ToString()] = dr["MAT_UNIT"].ToString(); } //if (row.IndexOf(dr["SAMPLE_NO"].ToString()) < 0)//判断是否有重复样管号,有则不增加行只增加对应的列 //{ // row += dr["SAMPLE_NO"].ToString() + " "; // newDr = dataTable1.NewRow(); // newDr["SAMPLE_NO"] = dr["SAMPLE_NO"].ToString(); // //newDr[dr["MAT_CODE"].ToString()] = "√"; // dataTable1.Rows.Add(newDr); //} } for (int i = 1; i <= sample_count; i++) { newDr = dataTable1.NewRow(); newDr["SAMPLE_NO"] = strCheck_No + "-" + i.ToString(); //newDr[dr["MAT_CODE"].ToString()] = "√"; dataTable1.Rows.Add(newDr); } dataTable1.Rows.InsertAt(newDrUnit, 0); //if (ultraGrid1.Rows.Count > 0) //{ // ultraGrid1.Rows[0].Activation = Activation.ActivateOnly;//第一行单位不可编辑 //} //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid ultraGrid1.DataBind();//dataTable发生变化提交给ultraGrid RefreshAutoSize(); } //查询检验委托明细信息 public void QueryCheckConsignDetail_Dept(string path, ArrayList arrayList, OpeBase ob, int startNum, string[] arrId) { DataTable dt = PublicServer.GetData("com.steering.lims.data." + path + ".QueryCheckConsignDetail_Dept", arrId == null ? new Object[] { arrayList } : new Object[] { arrayList, arrId }, ob); if (dt == null || dt.Rows.Count == 0) { dataTable1.Rows.Clear(); int dcNum = dataTable1.Columns.Count;//清除列 if (dcNum > startNum) { for (int i = 0; i < dcNum - startNum; i++) { dataTable1.Columns.RemoveAt(startNum); } } return; } if (startNum == -1) { GridHelper.CopyDataToDatatable(dt, dataTable1, true);//把dt复制给dataTable4 //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid return; } ShowColumns(startNum, dt, dataTable1); string row = "";//存放所有样管号判断是否有重复样管号 string mat_code = "";//存放所有样管号判断是否有重复检验项 dataTable1.Rows.Clear();//清除行 DataRow newDr = dataTable1.NewRow(); DataRow newDrUnit = dataTable1.NewRow();//增加单位行 foreach (DataRow dr in dt.Rows) { if (mat_code.IndexOf(dr["MAT_CODE"].ToString()) < 0 && dataTable1.Columns.Contains(dr["MAT_CODE"].ToString()))//判断是否有重复检验项 { mat_code += dr["MAT_CODE"].ToString() + " "; newDrUnit[dr["MAT_CODE"].ToString()] = dr["MAT_UNIT"].ToString(); } if (row.IndexOf(dr["SAMPLE_NO"].ToString()) < 0)//判断是否有重复样管号,有则不增加行只增加对应的列 { row += dr["SAMPLE_NO"].ToString() + " "; newDr = dataTable1.NewRow(); newDr["SAMPLE_NO"] = dr["SAMPLE_NO"].ToString(); if (dataTable1.Columns.Contains(dr["MAT_CODE"].ToString().ToUpper())) { newDr[dr["MAT_CODE"].ToString()] = dr["MAT_VALUE"].ToString(); } dataTable1.Rows.Add(newDr); } else { if (dataTable1.Columns.Contains(dr["MAT_CODE"].ToString().ToUpper())) { newDr[dr["MAT_CODE"].ToString()] = dr["MAT_VALUE"].ToString(); } } } dataTable1.Rows.InsertAt(newDrUnit, 0); if (ultraGrid1.Rows.Count > 0) { ultraGrid1.Rows[0].Activation = Activation.ActivateOnly;//第一行单位不可编辑 } //GridHelper.RefreshAndAutoSize(ultraGrid1);//刷新Grid ultraGrid1.DataBind();//dataTable发生变化提交给ultraGrid RefreshAutoSize(); } private void ultraGrid1_CellChange(object sender, CellEventArgs e) { //ultraGrid1.Update(); //ultraGrid1.UpdateData(); //if (e.Cell.Text.Trim() == "" || e.Cell.Column.Key != "SAMPLE_NO") //{ // return; //} //if (ultraGrid1.DisplayLayout.Bands[0].Columns.Exists("SAMPLE_NO")) //{ // foreach (UltraGridRow ur in ultraGrid1.Rows) // { // if (ur != e.Cell.Row && ur.Cells["SAMPLE_NO"].Text.Trim() == e.Cell.Text.Trim()) // { // MessageUtil.ShowWarning("存在相同的试样号请重新输入!"); // e.Cell.Value = ""; // return; // } // } //} } } }