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;
// }
// }
//}
}
}
}