using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using Core.Mes.Client.Comm;
using Core.Mes.Client.Comm.Server;
using Core.StlMes.Client.LgClassModel;
using CoreFS.CA06;
using Infragistics.Win;
using Infragistics.Win.Misc;
using Infragistics.Win.UltraWinGrid;
namespace Core.StlMes.Client.LgCommon
{
public delegate void SetResHopperHandler(); //设置料仓后调用控件的SetHopperInfo
public partial class ucResAdditiveBase : UserControl
{
///
/// 物料编码集合
///
private Hashtable _ITEMS;
private MaterialCategory _MtrlCategory = MaterialCategory.FL;
private HopperCategory _HpprCategory = HopperCategory.Automatic;
private Hashtable _htValueInitial = null; //初始值
private Hashtable _htValueChanged = null; //修改后的值
private Hashtable _htMaterialtypeChanged = null; //加料类型
private Hashtable _htCaptionChanged = null; //修改字段中文名
private OpeBase ob;
private string _DEVICE_POSITION = ""; //设备位置
public string _HeatProcessNo = "";
public SetResHopperHandler SetHopper = null; //设置料仓后调用控件的SetHopperInfo
#region 属性
///
/// 设备位置
///
[Description("设备位置")]
public string DEVICE_POSITION
{
get { return _DEVICE_POSITION; }
set { if (value != _DEVICE_POSITION) _DEVICE_POSITION = value; }
}
///
/// 物料类别
///
[Description("物料类别")]
public MaterialCategory MtrlCategory
{
get { return _MtrlCategory; }
set { if (value != _MtrlCategory) _MtrlCategory = value; }
}
///
/// 投料分类
///
[Description("投料分类")]
public HopperCategory HpprCategory
{
get { return _HpprCategory; }
set { if (value != _HpprCategory) _HpprCategory = value; }
}
///
/// 初始值
///
public Hashtable htValueInitial
{
get { return _htValueInitial; }
}
///
/// 值发生变化列表
///
public Hashtable htValueChanged
{
get
{
ultraGrid1.UpdateData();
return _htValueChanged;
}
}
///
/// 修改字段数据类型
///
public Hashtable htMaterialtypeChanged
{
get
{
ultraGrid1.UpdateData();
return _htMaterialtypeChanged;
}
}
///
/// 值发生变化的字段名
///
public Hashtable htCaptionChanged
{
get
{
ultraGrid1.UpdateData();
return _htCaptionChanged;
}
}
///
/// 有值发生变化
///
public bool HasChanged
{
get
{
ultraGrid1.UpdateData();
return (_htValueChanged != null && _htValueChanged.Count > 0);
}
}
#endregion
#region 构造函数
public ucResAdditiveBase()
{
InitializeComponent();
ClsControlPack.SetUltraGridStyle(ultraGrid1, 1);
ClsControlPack.InitUserControl(this.ultraDataSource1, ultraGrid1);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.InitControl();
//this.SetDelegate();
}
#endregion
#region 私用方法
private void InitControl()
{
InitItems(ref _ITEMS);
this.InitMaterialArea();
}
private void InitItems(ref Hashtable alist)
{
if (alist == null) alist = new Hashtable();
else alist.Clear();
}
protected void InitHashtable(ref Hashtable htbl)
{
if (htbl == null) htbl = new Hashtable();
}
private void InitMaterialArea()
{
for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
try
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key;
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = "";
ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = "";
}
catch { }
}
}
#endregion
#region 窗体调用
public void SetOpeBase(OpeBase ob)
{
this.ob = ob;
}
///
/// 读取并设置仓对应物料
///
/// 设置表
/// 物料基础表
public void SetHopperInfo(DataTable tblConfig, DataTable tblMaterial)
{
this.InitControl();
try
{
string Filter = "";
DataRow[] rows = null;
if (_HpprCategory == HopperCategory.Automatic)
{
if (_MtrlCategory == MaterialCategory.FL) Filter = "MATERIELTYPE = 'FL'";
else if (_MtrlCategory == MaterialCategory.HJ) Filter = "MATERIELTYPE = 'HJ'";
else if (_MtrlCategory == MaterialCategory.WS) Filter = "MATERIELTYPE = 'WS'";
else if (_MtrlCategory == MaterialCategory.FL_HJ) Filter = "MATERIELTYPE = 'FL' or MATERIELTYPE = 'HJ'";
else if (_MtrlCategory == MaterialCategory.FL_WS) Filter = "MATERIELTYPE = 'FL' or MATERIELTYPE = 'WS'";
else if (_MtrlCategory == MaterialCategory.HJ_WS) Filter = "MATERIELTYPE = 'HJ' or MATERIELTYPE = 'WS'";
else if (_MtrlCategory == MaterialCategory.FL_HJ_WS) Filter = "MATERIELTYPE = 'FL' or MATERIELTYPE = 'HJ' or MATERIELTYPE = 'WS'";
else Filter = "MATERIELTYPE = '?'";
Filter = "(" + Filter + ") and JMTYPE = '1'";
rows = tblConfig.Select(Filter);
int iPos = 1; //位置序号
string strCode = ""; //物料编码
for (int idx = 0; idx < rows.Length; idx++)
{
if (iPos >= ultraDataSource1.Band.Columns.Count) break; //大于设置物料总数则退出
strCode = Convert.ToString(rows[idx]["MATERIELCODE"]);
if (_ITEMS.Contains(strCode)) continue; //已经加载此物料编码
_ITEMS.Add(strCode, iPos.ToString());
ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Tag = strCode; //保存物料编码
ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Header.Caption = Convert.ToString(rows[idx]["ITEM_NAME"]); //保存物料简称
ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Header.Tag = Convert.ToString(rows[idx]["MATERIELTYPE"]); //保存物料类别
iPos++;
}
}
else if (_HpprCategory == HopperCategory.Manual)
{
if (tblConfig == null || tblConfig.Rows.Count == 0 || tblMaterial == null) return;
string strConfig = Convert.ToString(tblConfig.Rows[0]["CONFGCODE"]).Trim();
string[] strItems = strConfig.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
int iPos = 1; //位置序号
string strCode = ""; //物料编码
for (int idx = 0; idx < strItems.Length; idx++)
{
if (iPos >= ultraDataSource1.Band.Columns.Count) break; //大于设置物料总数则退出
strCode = Convert.ToString(strItems[idx]);
if (_ITEMS.Contains(strCode)) continue; //已经加载此物料编码
rows = tblMaterial.Select("ITEM_CODE = '" + strCode + "'");
if (rows.Length <= 0) continue; //基础表不存在此物料
_ITEMS.Add(strCode, iPos.ToString());
ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Tag = Convert.ToString(rows[0]["ITEM_CODE"]); //保存物料编码
ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Header.Caption = Convert.ToString(rows[0]["ITEM_NAME"]); //保存物料简称
ultraGrid1.DisplayLayout.Bands[0].Columns[iPos.ToString()].Header.Tag = Convert.ToString(rows[0]["ARC_CODE"]); //保存物料类别
iPos++;
}
}
}
catch { }
finally
{
try
{
for (int i = 0; i < ultraDataSource1.Band.Columns.Count; i++)
{
if (ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption.Trim() == "")
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].CellActivation = Infragistics.Win.UltraWinGrid.Activation.NoEdit;
}
else
{
ultraGrid1.DisplayLayout.Bands[0].Columns[i].CellActivation = Infragistics.Win.UltraWinGrid.Activation.AllowEdit;
}
}
}
catch { }
ResetAdditiveData();
}
}
///
/// 加料数据填充
///
/// 加料数据集
public void SetAdditiveData(CommonAdditive additiveBuffer)
{
try
{
if (additiveBuffer == null || additiveBuffer.hList.Count == 0)
{
ResetAdditiveData();
return;
}
InitHashtable(ref _htValueInitial);
string strKey = ""; //料仓ID
string strCode = ""; //某个料仓配置的物料编码
string strType = ""; //某个料仓配置的物料类别
bool Added = false; //表示某个料仓是否有加料
for (int idx = 0; idx < ultraDataSource1.Band.Columns.Count; idx++)
{
try
{
strKey = ultraDataSource1.Band.Columns[idx].Key;
strCode = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Tag);
strType = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Header.Tag);
if (strKey.Equals(strCode)) //料斗没有设置物料
{
ultraDataSource1.Rows[0][strKey] = "";
ultraGrid1.Rows[0].Cells[strKey].Appearance.ResetBackColor();
if (_htValueInitial.Contains(strCode)) _htValueInitial.Remove(strCode);
continue;
}
if (!_htValueInitial.Contains(strCode)) _htValueInitial.Add(strCode, DBNull.Value);
else _htValueInitial[strCode] = DBNull.Value;
for (int i = 0; i < additiveBuffer.hList.Count; i++)
{
STL_COMMON_ADDITIVES addt = (STL_COMMON_ADDITIVES)additiveBuffer.hList[i];
if (_HpprCategory == HopperCategory.Automatic) //自动加料才判断物料类别
{
if (addt == null || addt.JMTYPE != "1") continue; //加料类型为1表示自动加料
if (addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode) continue; //物料类别、物料编码匹配
if (_MtrlCategory == MaterialCategory.FL && addt.MATERIELTYPE != "FL") continue;
if (_MtrlCategory == MaterialCategory.HJ && addt.MATERIELTYPE != "HJ") continue;
if (_MtrlCategory == MaterialCategory.WS && addt.MATERIELTYPE != "WS") continue;
if (_MtrlCategory == MaterialCategory.FL_HJ && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ") continue;
if (_MtrlCategory == MaterialCategory.FL_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "WS") continue;
if (_MtrlCategory == MaterialCategory.HJ_WS && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
if (_MtrlCategory == MaterialCategory.FL_HJ_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
}
else if (_HpprCategory == HopperCategory.Manual)
{
if (addt == null || addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode || addt.JMTYPE != "2") continue;
}
try
{
ultraDataSource1.Rows[0][strKey] = addt.JMWGT;
if (!_htValueInitial.Contains(strCode)) _htValueInitial.Add(strCode, addt.JMWGT);
else _htValueInitial[strCode] = addt.JMWGT;
Added = true;
break;
}
catch { }
}
}
catch { }
if (!Added) ultraDataSource1.Rows[0][strKey] = ""; //没有加料
else if (Added) Added = false; //清除加料标志,跳转到下一料仓
ultraGrid1.Rows[0].Cells[strKey].Appearance.ResetBackColor();
}
}
catch { }
finally
{
ultraGrid1.UpdateData();
if (_htValueChanged != null) _htValueChanged.Clear();
if (_htMaterialtypeChanged != null) _htMaterialtypeChanged.Clear();
if (_htCaptionChanged != null) _htCaptionChanged.Clear();
}
}
///
/// 加料数据填充
///
/// 加料数据集
public void RefreshAdditiveData(CommonAdditive additiveBuffer)
{
try
{
if (additiveBuffer == null || additiveBuffer.hList.Count == 0)
{
ResetAdditiveData();
return;
}
InitHashtable(ref _htValueInitial);
string strKey = ""; //料仓ID
string strCode = ""; //某个料仓配置的物料编码
string strType = ""; //某个料仓配置的物料类别
bool Added = false; //表示某个料仓是否有加料
for (int idx = 0; idx < ultraDataSource1.Band.Columns.Count; idx++)
{
try
{
strKey = ultraDataSource1.Band.Columns[idx].Key;
strCode = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Tag);
strType = Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[strKey].Header.Tag);
if (strKey.Equals(strCode)) //料斗没有设置物料
{
ultraDataSource1.Rows[0][strKey] = "";
ultraGrid1.Rows[0].Cells[strKey].Appearance.ResetBackColor();
if (_htValueInitial.Contains(strCode)) _htValueInitial.Remove(strCode);
continue;
}
if (!_htValueInitial.Contains(strCode)) _htValueInitial.Add(strCode, DBNull.Value);
else _htValueInitial[strCode] = DBNull.Value;
for (int i = 0; i < additiveBuffer.hList.Count; i++)
{
STL_COMMON_ADDITIVES addt = (STL_COMMON_ADDITIVES)additiveBuffer.hList[i];
if (_HpprCategory == HopperCategory.Automatic) //自动加料才判断物料类别
{
if (addt == null || addt.JMTYPE != "1") continue; //加料类型为1表示自动加料
if (addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode) continue; //物料类别、物料编码匹配
if (_MtrlCategory == MaterialCategory.FL && addt.MATERIELTYPE != "FL") continue;
if (_MtrlCategory == MaterialCategory.HJ && addt.MATERIELTYPE != "HJ") continue;
if (_MtrlCategory == MaterialCategory.WS && addt.MATERIELTYPE != "WS") continue;
if (_MtrlCategory == MaterialCategory.FL_HJ && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ") continue;
if (_MtrlCategory == MaterialCategory.FL_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "WS") continue;
if (_MtrlCategory == MaterialCategory.HJ_WS && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
if (_MtrlCategory == MaterialCategory.FL_HJ_WS && addt.MATERIELTYPE != "FL" && addt.MATERIELTYPE != "HJ" && addt.MATERIELTYPE != "WS") continue;
}
else if (_HpprCategory == HopperCategory.Manual)
{
if (addt == null || addt.MATERIELTYPE != strType || addt.MATERIELCODE != strCode || addt.JMTYPE != "2") continue;
}
try
{
ultraDataSource1.Rows[0][strKey] = addt.JMWGT;
if (!_htValueInitial.Contains(strCode)) _htValueInitial.Add(strCode, addt.JMWGT);
else _htValueInitial[strCode] = addt.JMWGT;
Added = true;
break;
}
catch { }
}
}
catch { }
if (!Added) ultraDataSource1.Rows[0][strKey] = ""; //没有加料
else if (Added) Added = false; //清除加料标志,跳转到下一料仓
ultraGrid1.Rows[0].Cells[strKey].Appearance.ResetBackColor();
}
}
catch { }
finally
{
ultraGrid1.UpdateData();
if (_htValueChanged != null) _htValueChanged.Clear();
if (_htMaterialtypeChanged != null) _htMaterialtypeChanged.Clear();
if (_htCaptionChanged != null) _htCaptionChanged.Clear();
}
}
public void ResetAdditiveData()
{
ClsControlPack.ResetUltraDataSource(this.ultraDataSource1, ultraGrid1);
try
{
InitHashtable(ref _htValueInitial);
string strKey = "";
UltraGridColumn column;
for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
{
column = ultraGrid1.DisplayLayout.Bands[0].Columns[i];
try
{
strKey = column.Key;
if (column.Tag != null && !string.IsNullOrEmpty(Convert.ToString(column.Tag)) && !Convert.ToString(column.Tag).Equals(strKey))
{
_htValueInitial.Add(Convert.ToString(column.Tag), DBNull.Value);
}
}
catch { }
finally
{
try
{
ultraGrid1.Rows[0].Cells[column.Key].Appearance.ResetBackColor();
}
catch { }
}
}
}
catch { }
finally
{
if (_htValueChanged != null) _htValueChanged.Clear();
if (_htMaterialtypeChanged != null) _htMaterialtypeChanged.Clear();
if (_htCaptionChanged != null) _htCaptionChanged.Clear();
}
}
#endregion
#region 事件
protected virtual void SetDelegate()
{
this.ultraGrid1.DoubleClickHeader += new DoubleClickHeaderEventHandler(ultraGrid1_DoubleClickHeader);
ultraGrid1.ClickCellButton += new CellEventHandler(ultraGrid1_ClickCellButton);
ultraGrid1.KeyDown += new KeyEventHandler(ultraGrid1_KeyDown);
ultraGrid1.AfterCellUpdate += new CellEventHandler(ultraGrid1_AfterCellUpdate);
ultraGrid1.CellChange += new CellEventHandler(ultraGrid1_CellChange);
}
protected virtual void ultraGrid1_DoubleClickHeader(object sender, DoubleClickHeaderEventArgs e)
{
try
{
if (_HpprCategory == HopperCategory.Automatic)
{
frmSetHopper frm = new frmSetHopper(_DEVICE_POSITION, ob);
frm.ShowDialog();
if (this.SetHopper != null)
this.Invoke(this.SetHopper);
}
else if (_HpprCategory == HopperCategory.Manual)
{
string strOriginal = ""; //原始物料编码
if (Convert.ToString(e.Header.Column.Tag) != e.Header.Column.Key)
strOriginal = Convert.ToString(e.Header.Column.Tag);
string strName = Convert.ToString(e.Header.Caption); //物料名称
frmSetMaterialName frm = new frmSetMaterialName(strName, "1", ob);
frm.ShowDialog();
if (frm.bChange)
{
string strMaterielCode = frm.m_szWLBM;
try
{
ServerHelper.SetData("Core.LgMes.Server.LgDeviceManager.StlAdditive.UpdateInterFaceConfig",
new object[]
{
new object[]
{
_DEVICE_POSITION, strOriginal, strMaterielCode
}
}, ob);
if (this.SetHopper != null)
this.Invoke(this.SetHopper);
}
catch (Exception ex)
{
if (ex is MESException)
{
}
else
MessageBox.Show("手投料物料配置失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
//string strPurposeCode = "手投料";
//string strMsg = "";
//bool bSuccess = ClsBusinessPack.SaveManulAdditiveConfig(_DEVICE_POSITION, strOriginal, strMaterielCode, strPurposeCode, out strMsg, ob);
//if (!bSuccess)
//{
// MessageBox.Show("手投料物料配置失败!\n" + strMsg, "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
// return;
//}
//if (this.SetHopper != null)
// this.Invoke(this.SetHopper);
}
}
}
catch { }
//try
//{
// if (e.Header.Column.Tag != null && e.Header.Tag != null &&
// !Convert.ToString(e.Header.Column.Tag).Equals(e.Header.Column.Key) &&
// !string.IsNullOrEmpty(Convert.ToString(e.Header.Tag)))
// {
// string strCaption = e.Header.Caption.Trim();
// MessageBox.Show("设定物料[" + strCaption + "]不能更改!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
// return;
// }
// frmMaterial frm = new frmMaterial(_HpprCategory, _MtrlCategory, this.ob);
// if (frm.ShowDialog() == DialogResult.OK)
// {
// UltraGridRow row = frm.SelectedRow;
// if (row != null)
// {
// string strCode = Convert.ToString(row.Cells["MATERIELCODE"].Value);
// string strName = Convert.ToString(row.Cells["MATERIELFORSHORT"].Value);
// string strType = Convert.ToString(row.Cells["MATERIELTYPE"].Value);
// if (_ITEMS != null && _ITEMS.Contains(strCode))
// {
// MessageBox.Show("物料[" + strName + "]已经存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
// return;
// }
// InitHashtable(ref _htValueInitial);
// for (int i = 0; i < ultraGrid1.DisplayLayout.Bands[0].Columns.Count; i++)
// {
// if (ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag == null || Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag) == "" ||
// Convert.ToString(ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag).Equals(ultraGrid1.DisplayLayout.Bands[0].Columns[i].Key))
// {
// _ITEMS.Add(strCode, Convert.ToString(i + 1));
// if (!_htValueInitial.Contains(strCode))
// _htValueInitial.Add(strCode, DBNull.Value);
// ultraGrid1.DisplayLayout.Bands[0].Columns[i].Tag = strCode; //保存物料编码
// ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Caption = strName; //保存物料简称
// ultraGrid1.DisplayLayout.Bands[0].Columns[i].Header.Tag = strType; //保存物料类别
// break;
// }
// }
// }
// }
//}
//catch { }
}
protected virtual void ultraGrid1_ClickCellButton(object sender, CellEventArgs e)
{
try
{
if (e.Cell.Column.Tag == null || Convert.ToString(e.Cell.Column.Tag) == "" || Convert.ToString(e.Cell.Column.Tag).Equals(e.Cell.Column.Key))
return;
if (e.Cell.Column.DataType != typeof(DateTime))
{
if (e.Cell.Column.Tag.ToString() == "2050010002" || e.Cell.Column.Tag.ToString() == "2050010001")
{
frmSelectWeight frm = new frmSelectWeight(ob);
frm.vProcessNo = _HeatProcessNo;
frm.MaterName = e.Cell.Column.Header.Caption.ToString();
frm.sWeight = e.Cell.Value.ToString();
frm.isResult = true;
frm.ShowDialog();
if (frm.flag)
{
if (!frm.isCancel)
{
e.Cell.Value = frm.Weight;
}
else
{
e.Cell.Value = "";
}
ultraGrid1.UpdateData();
}
else
{
return;
}
}
else
{
frmInputDecimal frm = new frmInputDecimal(Convert.ToString(e.Cell.Text));
frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size);
if (frm.ShowDialog() == DialogResult.OK)
{
if (!frm.ValueChanged) return;
e.Cell.Value = frm.Value;
ultraGrid1.UpdateData();
}
}
}
}
catch { }
}
protected virtual void ultraGrid1_KeyDown(object sender, KeyEventArgs e)
{
try
{
UltraGridCell cell = ultraGrid1.ActiveCell;
if (cell.Column.Tag == null || Convert.ToString(cell.Column.Tag) == "" || Convert.ToString(cell.Column.Tag).Equals(cell.Column.Key))
{
e.SuppressKeyPress = true;
return;
}
if (e.KeyCode != Keys.Enter || cell.Column.CellActivation != Activation.AllowEdit) return;
ultraGrid1.UpdateData();
}
catch { }
}
protected virtual void ultraGrid1_CellChange(object sender, CellEventArgs e)
{
try
{
if (e.Cell.Column.Tag == null || Convert.ToString(e.Cell.Column.Tag) == "" || Convert.ToString(e.Cell.Column.Tag).Equals(e.Cell.Column.Key))
{
if (!string.IsNullOrEmpty(Convert.ToString(e.Cell.Text)))
{
e.Cell.Value = "";
ultraGrid1.UpdateData();
}
}
else
{
if (!string.IsNullOrEmpty(Convert.ToString(e.Cell.Text)))
{
decimal dValue = 0;
if (!decimal.TryParse(Convert.ToString(e.Cell.Text), out dValue))
{
MessageBox.Show("加料量必须是数字,请重新输入!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
e.Cell.Value = DBNull.Value;
ultraGrid1.UpdateData();
ultraGrid1.PerformAction(UltraGridAction.ExitEditMode);
ultraGrid1.PerformAction(UltraGridAction.EnterEditMode);
}
else
{
ultraGrid1.UpdateData();
}
}
else
{
ultraGrid1.UpdateData();
ultraGrid1.PerformAction(UltraGridAction.ExitEditMode);
ultraGrid1.PerformAction(UltraGridAction.EnterEditMode);
}
}
}
catch { }
}
protected virtual void ultraGrid1_AfterCellUpdate(object sender, CellEventArgs e)
{
try
{
if (e.Cell.Column.Tag == null || Convert.ToString(e.Cell.Column.Tag) == "" || Convert.ToString(e.Cell.Column.Tag).Equals(e.Cell.Column.Key))
{
if (!string.IsNullOrEmpty(Convert.ToString(e.Cell.Value)))
{
e.Cell.Value = "";
ultraGrid1.UpdateData();
}
return;
}
if (!e.Cell.Column.Hidden && e.Cell.Column.CellActivation == Activation.AllowEdit)
{
InitHashtable(ref _htValueChanged);
InitHashtable(ref _htMaterialtypeChanged);
InitHashtable(ref _htCaptionChanged);
string strKey = Convert.ToString(e.Cell.Column.Tag).ToUpper();
string strType = Convert.ToString(e.Cell.Column.Header.Tag).ToUpper();
string strCaption = e.Cell.Column.Header.Caption;
object value = e.Cell.Value;
object valueInitial = null;
if (_htValueInitial != null && _htValueInitial.Contains(strKey)) valueInitial = _htValueInitial[strKey];
if (value.Equals(valueInitial))
{
if (_htValueChanged.Contains(strKey)) _htValueChanged.Remove(strKey);
if (_htMaterialtypeChanged.Contains(strKey)) _htMaterialtypeChanged.Remove(strKey);
if (_htCaptionChanged.Contains(strKey)) _htCaptionChanged.Remove(strKey);
try
{
e.Cell.Appearance.ResetBackColor();
}
catch { }
return;
}
try
{
e.Cell.Appearance.BackColor = Color.Orange;
}
catch { }
if (!_htValueChanged.Contains(strKey))
_htValueChanged.Add(strKey, value);
else _htValueChanged[strKey] = value;
if (!_htMaterialtypeChanged.Contains(strKey))
_htMaterialtypeChanged.Add(strKey, strType);
else _htMaterialtypeChanged[strKey] = strType;
if (!_htCaptionChanged.Contains(strKey))
_htCaptionChanged.Add(strKey, strCaption);
else _htCaptionChanged[strKey] = strCaption;
}
}
catch { }
}
#endregion
}
}