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