You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

641 lines
28 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Mesnac.Action.Base;
using Mesnac.Controls.Base;
using Mesnac.Controls.Default;
using System.Windows.Forms;
using Mesnac.Codd.Session;
using Mesnac.Action.Feeding.SynchroData;
namespace Mesnac.Action.Feeding.Technology
{
/// <summary>
/// 初始化加载配方数据
/// </summary>
public class IniRecipe : FeedingAction, IAction
{
private static bool IsFirstRun = true; //是否首次执行
private static object oldSender = null;
/// <summary>
/// 配方界面初始化
/// </summary>
/// <param name="runtime"></param>
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime); //必须调用
List<MCDataGridView> gridList = GetTControls<MCDataGridView>();
if (IsFirstRun && gridList.Count > 0)
{
InitGridData(gridList);
oldSender = runtime.Sender;
IsFirstRun = false;
}
if (oldSender != runtime.Sender && gridList.Count > 0)
{
InitGridData(gridList);
oldSender = runtime.Sender;
}
}
/// <summary>
/// 初始化配方的网格控件
/// </summary>
/// <param name="gridList"></param>
private void InitGridData(List<MCDataGridView> gridList)
{
foreach (MCDataGridView grid in gridList)
{
if (grid.MCKey != null && grid.MCKey.ToLower().StartsWith("PmtWeight.".ToLower()))
{
grid.ContextMenuStrip = IniDelMenu();
int iType = 0;
if (int.TryParse(grid.MCKey.Substring("PmtWeight.".Length).Trim(), out iType))
{
IniWeightHead(grid, iType);
}
}
if (grid.MCKey != null && grid.MCKey.ToLower() == "PmtMixing".ToLower())
{
grid.ContextMenuStrip = IniMoveMenu();
IniPmtMixingHead(grid);
}
}
}
private ContextMenuStrip IniDelMenu()
{
ContextMenuStrip Result = new ContextMenuStrip();
Result.ResumeLayout(false);
ToolStripMenuItem ToolStripMenuItem0 = new ToolStripMenuItem();
ToolStripMenuItem0.Name = "ToolStripMenuItem0";
ToolStripMenuItem0.Size = new System.Drawing.Size(98, 22);
ToolStripMenuItem0.Text = Language(200);
ToolStripMenuItem0.Click += toolStripMenuItem_Click;
Result.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
ToolStripMenuItem0});
Result.Name = "WeightMenu";
return Result;
}
private ContextMenuStrip IniMoveMenu()
{
ContextMenuStrip Result = new ContextMenuStrip();
Result.ResumeLayout(false);
ToolStripMenuItem ToolStripMenuItem1 = new ToolStripMenuItem();
ToolStripMenuItem1.Name = "ToolStripMenuItem1";
ToolStripMenuItem1.Size = new System.Drawing.Size(98, 22);
ToolStripMenuItem1.Text = Language(201); //201插入
ToolStripMenuItem1.Click += toolStripMenuItem_Click;
ToolStripMenuItem ToolStripMenuItem2 = new ToolStripMenuItem();
ToolStripMenuItem2.Name = "ToolStripMenuItem2";
ToolStripMenuItem2.Size = new System.Drawing.Size(98, 22);
ToolStripMenuItem2.Text = Language(200); //200删除
ToolStripMenuItem2.Click += toolStripMenuItem_Click;
ToolStripMenuItem ToolStripMenuItem3 = new ToolStripMenuItem();
ToolStripMenuItem3.Name = "ToolStripMenuItem3";
ToolStripMenuItem3.Size = new System.Drawing.Size(98, 22);
ToolStripMenuItem3.Text = Language(202); //202上移
ToolStripMenuItem3.Click += toolStripMenuItem_Click;
ToolStripMenuItem ToolStripMenuItem4 = new ToolStripMenuItem();
ToolStripMenuItem4.Name = "ToolStripMenuItem4";
ToolStripMenuItem4.Size = new System.Drawing.Size(98, 22);
ToolStripMenuItem4.Text = Language(203); //203下移
ToolStripMenuItem4.Click += toolStripMenuItem_Click;
Result.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
ToolStripMenuItem1,
ToolStripMenuItem2,
ToolStripMenuItem3,
ToolStripMenuItem4});
Result.Name = "MixingMenu";
return Result;
}
private void IniDataGridEvent(DataGridView grid)
{
grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None;
grid.DataError += dataGridView_DataError;
grid.CellValueChanged += dataGridView_CellValueChanged;
grid.CellValidating += dataGridView_CellValidating;
grid.CellMouseDown += dataGridView_CellMouseDown;
grid.SortCompare += dataGridView_SortCompare;
grid.AllowUserToAddRows = false;
grid.ReadOnly = false;
grid.AutoGenerateColumns = false;
grid.AllowUserToResizeRows = false;
grid.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter;
}
#region 初始化称量信息网格表头炭黑、油、胶料小料、油2
/// <summary>
/// 初始化称量信息网格表头炭黑、油、胶料小料、油2
/// </summary>
/// <param name="grid">称量信息网格控件</param>
/// <param name="id">称量类型0-炭黑、1-油1、2-胶料、3-</param>
private void IniWeightHead(DataGridView grid, int id)
{
IniDataGridEvent(grid);
#region 初始化表头字段
DataGridViewTextBoxColumn a1 = new DataGridViewTextBoxColumn();
a1.SortMode = DataGridViewColumnSortMode.NotSortable;
a1.DataPropertyName = "SeqInx";
a1.HeaderText = "a" + id.ToString();
a1.Width = 40;
grid.Columns.Add(a1);
DataGridViewComboBoxColumn a2 = new DataGridViewComboBoxColumn();
a2.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
a2.SortMode = DataGridViewColumnSortMode.NotSortable;
a2.DataPropertyName = "act_code";
a2.HeaderText = Language(210);
a2.ValueMember = "ssKey";
a2.DisplayMember = "ssValue";
a2.Width = 80;
grid.Columns.Add(a2);
DataGridViewComboBoxColumn a3 = new DataGridViewComboBoxColumn();
a3.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
a3.SortMode = DataGridViewColumnSortMode.NotSortable;
a3.DataPropertyName = "child_code";
a3.HeaderText = Language(211);
a3.ValueMember = "mater_code";
a3.DisplayMember = "mater_name";
a3.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
grid.Columns.Add(a3);
DataGridViewTextBoxColumn a4 = new DataGridViewTextBoxColumn();
a4.SortMode = DataGridViewColumnSortMode.NotSortable;
a4.DataPropertyName = "child_code";
a4.HeaderText = Language(212);
a4.Width = 100;
grid.Columns.Add(a4);
DataGridViewTextBoxColumn a5 = new DataGridViewTextBoxColumn();
a5.ValueType = typeof(double);
a5.SortMode = DataGridViewColumnSortMode.NotSortable;
a5.DataPropertyName = "set_weight";
a5.HeaderText = Language(213);
a5.Width = 60;
grid.Columns.Add(a5);
DataGridViewTextBoxColumn a6 = new DataGridViewTextBoxColumn();
a6.ValueType = typeof(double);
a6.SortMode = DataGridViewColumnSortMode.NotSortable;
a6.DataPropertyName = "error_allow";
a6.HeaderText = Language(214);
a6.Width = 60;
grid.Columns.Add(a6);
if (id == 2 && base.GetConfigValue("IsAutoPloy", "0") == "1")
{
DataGridViewComboBoxColumn a7 = new DataGridViewComboBoxColumn();
a7.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
a7.SortMode = DataGridViewColumnSortMode.NotSortable;
a7.DataPropertyName = "Auto_ploy";
a7.HeaderText = Language(305);
a7.ValueMember = "ssKey";
a7.DisplayMember = "ssValue";
a7.Width = 80;
grid.Columns.Add(a7);
string sqlstr = "SELECT ItemCode AS ssKey,ItemName AS ssValue FROM SysCode WHERE TypeID='AutoPloy'";
DbHelper dbHelper = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
dbHelper.CommandType = CommandType.Text;
dbHelper.ClearParameter();
dbHelper.CommandText = sqlstr;
DataTable dt_ploy = dbHelper.ToDataTable();
a7.DataSource = dt_ploy;
#region 增加下拉时自动刷新数据
a7.DataGridView.CellBeginEdit += delegate(object sender, DataGridViewCellCancelEventArgs e)
{
if (e.ColumnIndex == a7.Index)
{
string sqlstr7 = "SELECT ItemCode AS ssKey,ItemName AS ssValue FROM SysCode WHERE TypeID='AutoPloy'";
DbHelper dbHelper7 = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
dbHelper7.CommandType = CommandType.Text;
dbHelper7.ClearParameter();
dbHelper7.CommandText = sqlstr7;
DataTable dt_ploy7 = dbHelper7.ToDataTable();
a7.DataSource = dt_ploy7;
}
};
#endregion
}
#endregion
#region 初始化称量动作
if (true) //初始化称量动作
{
string sqlstr = "SELECT ItemCode AS ssKey,ItemName AS ssValue FROM SysCode WHERE TypeID='WeightAction'";
DbHelper dbHelper = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
dbHelper.CommandType = CommandType.Text;
dbHelper.ClearParameter();
dbHelper.CommandText = sqlstr;
DataTable dt_act = dbHelper.ToDataTable();
a2.DataSource = dt_act;
#region 增加下拉时自动刷新称量动作数据
a2.DataGridView.CellBeginEdit += delegate(object sender, DataGridViewCellCancelEventArgs e)
{
if (e.ColumnIndex == a2.Index)
{
string sqlstr2 = "SELECT ItemCode AS ssKey,ItemName AS ssValue FROM SysCode WHERE TypeID='WeightAction'";
DbHelper dbHelper2 = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
dbHelper2.CommandType = CommandType.Text;
dbHelper2.ClearParameter();
dbHelper2.CommandText = sqlstr2;
DataTable dt_act2 = dbHelper2.ToDataTable();
a2.DataSource = dt_act2;
}
};
#endregion
}
#endregion
#region 初始化称量物料
if (true) //初始化称量物料
{
string sqlstr = "SELECT * FROM PmtConfig WHERE TypeCode='WeightMaterial' AND ItemCode='" + id.ToString() + "'";
DbHelper dbHelper = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
dbHelper.CommandType = CommandType.Text;
dbHelper.ClearParameter();
dbHelper.CommandText = sqlstr;
DataTable dtconfig = dbHelper.ToDataTable();
foreach (DataRow row in dtconfig.Rows)
{
a1.HeaderText = row["ItemName"].ToString();
sqlstr = row["ItemInfo"].ToString();
dbHelper.CommandText = sqlstr;
DataTable dt = dbHelper.ToDataTable();
DataRow dr_0 = dt.NewRow();
dr_0["ObjID"] = 0;
dr_0["mater_code"] = string.Empty;
dr_0["mater_name"] = string.Empty;
dt.Rows.InsertAt(dr_0, 0);
a3.DataSource = dt;
break;
}
a3.DataGridView.CellBeginEdit += delegate(object sender, DataGridViewCellCancelEventArgs e) {
if (e.ColumnIndex == a3.Index)
{
string sqlstr3 = "SELECT * FROM PmtConfig WHERE TypeCode='WeightMaterial' AND ItemCode='" + id.ToString() + "'";
DbHelper dbHelper3 = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
dbHelper3.CommandType = CommandType.Text;
dbHelper3.ClearParameter();
dbHelper3.CommandText = sqlstr3;
DataTable dtconfig3 = dbHelper3.ToDataTable();
foreach (DataRow row in dtconfig3.Rows)
{
a1.HeaderText = row["ItemName"].ToString();
sqlstr = row["ItemInfo"].ToString();
dbHelper3.CommandText = sqlstr;
DataTable dt3 = dbHelper3.ToDataTable();
DataRow dr_03 = dt3.NewRow();
dr_03["ObjID"] = 0;
dr_03["mater_code"] = string.Empty;
dr_03["mater_name"] = string.Empty;
dt3.Rows.InsertAt(dr_03, 0);
a3.DataSource = dt3;
break;
}
}
};
#region 物料更新后,刷新称量组件中的物料信息
MaterialSynchronous.MaterialSynchronousComplete += delegate(object sender, System.EventArgs e)
{
string sqlstr3 = "SELECT * FROM PmtConfig WHERE TypeCode='WeightMaterial' AND ItemCode='" + id.ToString() + "'";
DbHelper dbHelper3 = NewDbHelper(Mesnac.Basic.DataSourceFactory.MCDbType.Local);
dbHelper3.CommandType = CommandType.Text;
dbHelper3.ClearParameter();
dbHelper3.CommandText = sqlstr3;
DataTable dtconfig3 = dbHelper3.ToDataTable();
foreach (DataRow row in dtconfig3.Rows)
{
a1.HeaderText = row["ItemName"].ToString();
sqlstr = row["ItemInfo"].ToString();
dbHelper3.CommandText = sqlstr;
DataTable dt3 = dbHelper3.ToDataTable();
DataRow dr_03 = dt3.NewRow();
dr_03["ObjID"] = 0;
dr_03["mater_code"] = string.Empty;
dr_03["mater_name"] = string.Empty;
dt3.Rows.InsertAt(dr_03, 0);
a3.DataSource = dt3;
break;
}
};
#endregion
}
#endregion
}
#endregion
#region 初始化密炼信息网格表头
/// <summary>
/// 初始化密炼信息网格表头
/// </summary>
/// <param name="grid"></param>
private void IniPmtMixingHead(DataGridView grid)
{
IniDataGridEvent(grid);
#region 初始化表头字段
DataGridViewTextBoxColumn a1 = new DataGridViewTextBoxColumn();
a1.SortMode = DataGridViewColumnSortMode.NotSortable;
a1.DataPropertyName = "SeqInx";
a1.HeaderText = Language(216);
a1.Width = 30;
grid.Columns.Add(a1);
DataGridViewComboBoxColumn a2 = new DataGridViewComboBoxColumn();
a2.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
a2.SortMode = DataGridViewColumnSortMode.NotSortable;
a2.MaxDropDownItems = 20;
a2.DataPropertyName = "term_code";
a2.HeaderText = Language(217);
a2.ValueMember = "TermCode";
a2.DisplayMember = "ShowName";
a2.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
grid.Columns.Add(a2);
DataGridViewTextBoxColumn a3 = new DataGridViewTextBoxColumn();
a3.ValueType = typeof(int);
a3.SortMode = DataGridViewColumnSortMode.NotSortable;
a3.DataPropertyName = "set_time";
a3.HeaderText = Language(218);
a3.Width = 40;
grid.Columns.Add(a3);
DataGridViewTextBoxColumn a4 = new DataGridViewTextBoxColumn();
a4.ValueType = typeof(double);
a4.SortMode = DataGridViewColumnSortMode.NotSortable;
a4.DataPropertyName = "set_temp";
a4.HeaderText = Language(219);
a4.Width = 40;
grid.Columns.Add(a4);
DataGridViewTextBoxColumn a5 = new DataGridViewTextBoxColumn();
a5.ValueType = typeof(double);
a5.SortMode = DataGridViewColumnSortMode.NotSortable;
a5.DataPropertyName = "set_power";
a5.HeaderText = Language(220);
a5.Width = 40;
grid.Columns.Add(a5);
DataGridViewTextBoxColumn a6 = new DataGridViewTextBoxColumn();
a5.ValueType = typeof(double);
a6.SortMode = DataGridViewColumnSortMode.NotSortable;
a6.DataPropertyName = "set_ener";
a6.HeaderText = Language(221);
a6.Width = 40;
grid.Columns.Add(a6);
DataGridViewComboBoxColumn a7 = new DataGridViewComboBoxColumn();
a7.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
a7.SortMode = DataGridViewColumnSortMode.NotSortable;
a7.MaxDropDownItems = 20;
a7.DataPropertyName = "act_code";
a7.HeaderText = Language(222);
a7.ValueMember = "ActionCode";
a7.DisplayMember = "ShowName";
a7.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
grid.Columns.Add(a7);
DataGridViewTextBoxColumn a8 = new DataGridViewTextBoxColumn();
a8.ValueType = typeof(double);
a8.SortMode = DataGridViewColumnSortMode.NotSortable;
a8.DataPropertyName = "set_pres";
a8.HeaderText = Language(223);
a8.Width = 40;
grid.Columns.Add(a8);
DataGridViewTextBoxColumn a9 = new DataGridViewTextBoxColumn();
a9.ValueType = typeof(double);
a9.SortMode = DataGridViewColumnSortMode.NotSortable;
a9.DataPropertyName = "set_rota";
a9.HeaderText = Language(224);
a9.Width = 40;
grid.Columns.Add(a9);
#endregion
DbMCSource dbsource = base.GetAllDbMCSources().FirstOrDefault();
DbHelper dbHelper = NewDbHelper(dbsource.DesignSource);
if (dbHelper == null)
{
return;
}
#region 初始化动作
if (true) //初始化称量动作
{
string sqlstr = "SELECT * FROM PmtAction";
dbHelper.CommandType = CommandType.Text;
dbHelper.ClearParameter();
dbHelper.CommandText = sqlstr;
DataTable dt = dbHelper.ToDataTable();
DataRow dr_0 = dt.NewRow();
dr_0["ObjID"] = 0;
dr_0["ActionCode"] = string.Empty;
dr_0["ShowName"] = string.Empty;
dt.Rows.InsertAt(dr_0, 0);
a7.DataSource = dt;
}
#endregion
#region 初始化配方条件
if (true) //初始化配方条件
{
string sqlstr = "SELECT * FROM PmtTerm";
dbHelper.CommandType = CommandType.Text;
dbHelper.ClearParameter();
dbHelper.CommandText = sqlstr;
DataTable dt = dbHelper.ToDataTable();
DataRow dr_0 = dt.NewRow();
dr_0["ObjID"] = 0;
dr_0["TermCode"] = string.Empty;
dr_0["ShowName"] = string.Empty;
dt.Rows.InsertAt(dr_0, 0);
a2.DataSource = dt;
}
#endregion
}
#endregion
/// <summary>
/// 密炼步骤【删除】菜单事件实际处理程序
/// </summary>
/// <param name="grid"></param>
private void toolStripMenuItem0_Click(MCDataGridView grid)
{
DataGridViewRow row = grid.SelectedRows[0];
for (int i = row.Index; i < grid.Rows.Count; i++)
{
grid.Rows[i].Cells[0].Value = i + 1;
}
for (int i = 1; i < grid.ColumnCount; i++)
{
grid.Rows[row.Index].Cells[i].Value = DBNull.Value;
}
grid.Rows[row.Index].Cells[0].Value = grid.Rows.Count;
}
/// <summary>
/// 密炼步骤【插入】菜单事件处理程序
/// </summary>
/// <param name="grid"></param>
private void toolStripMenuItem1_Click(MCDataGridView grid)
{
DataGridViewRow row = grid.SelectedRows[0];
#region 取当前行的上一行,目的是在当前行的上一行添加新行
if (row.Index > 0)
{
row = grid.Rows[row.Index - 1];
}
#endregion
for (int i = row.Index + 1; i < grid.Rows.Count; i++)
{
grid.Rows[i].Cells[0].Value = i + 2;
}
for (int i = 1; i < grid.ColumnCount; i++)
{
grid.Rows[grid.Rows.Count - 1].Cells[i].Value = DBNull.Value;
}
grid.Rows[grid.Rows.Count - 1].Cells[0].Value = row.Index + 2;
}
/// <summary>
/// 密炼步骤【删除】菜单事件处理程序
/// </summary>
/// <param name="grid"></param>
private void toolStripMenuItem2_Click(MCDataGridView grid)
{
toolStripMenuItem0_Click(grid);
}
/// <summary>
/// 密炼步骤【上移】菜单事件处理程序
/// </summary>
/// <param name="grid"></param>
private void toolStripMenuItem3_Click(MCDataGridView grid)
{
DataGridViewRow row = grid.SelectedRows[0];
if (row.Index == 0)
{
return;
}
grid.Rows[row.Index].Cells[0].Value = row.Index;
grid.Rows[row.Index - 1].Cells[0].Value = row.Index + 1;
}
/// <summary>
/// 密炼步骤【下移】菜单事件处理程序
/// </summary>
/// <param name="grid"></param>
private void toolStripMenuItem4_Click(MCDataGridView grid)
{
DataGridViewRow row = grid.SelectedRows[0];
if (row.Index == grid.Rows.Count - 1)
{
return;
}
grid.Rows[row.Index].Cells[0].Value = row.Index + 2;
grid.Rows[row.Index + 1].Cells[0].Value = row.Index + 1;
}
/// <summary>
/// 密炼步骤插入、删除、上移、下移处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void toolStripMenuItem_Click(object sender, EventArgs e)
{
MCDataGridView grid = (MCDataGridView)((ContextMenuStrip)(((ToolStripItem)(sender)).Owner)).SourceControl;
string ss = ((ToolStripItem)(sender)).Name;
if (ss.Equals("ToolStripMenuItem0", StringComparison.CurrentCultureIgnoreCase))
{
toolStripMenuItem0_Click(grid);
}
if (ss.Equals("ToolStripMenuItem1", StringComparison.CurrentCultureIgnoreCase))
{
toolStripMenuItem1_Click(grid); //密炼步骤【插入】
}
if (ss.Equals("ToolStripMenuItem2", StringComparison.CurrentCultureIgnoreCase))
{
toolStripMenuItem2_Click(grid); //密炼步骤【删除】
}
if (ss.Equals("ToolStripMenuItem3", StringComparison.CurrentCultureIgnoreCase))
{
toolStripMenuItem3_Click(grid); //密炼步骤【上移】
}
if (ss.Equals("ToolStripMenuItem4", StringComparison.CurrentCultureIgnoreCase))
{
toolStripMenuItem4_Click(grid); //密炼步骤【下移】
}
grid.Sort(grid.Columns[0], System.ComponentModel.ListSortDirection.Ascending);
#region 重置序号
for (int i = 0; i < grid.Rows.Count; i++)
{
grid.Rows[i].Cells[0].Value = i + 1;
}
grid.AutoScrollOffset = new System.Drawing.Point(0, 0);
#endregion
}
void dataGridView_SortCompare(object sender, DataGridViewSortCompareEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
e.SortResult = Convert.ToInt32(dgv.Rows[e.RowIndex1].Cells[0].Value.ToString()) -
Convert.ToInt32(dgv.Rows[e.RowIndex2].Cells[0].Value.ToString());
e.Handled = true;
}
void dataGridView_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (e.RowIndex >= 0)
{
DataGridView dgv = (DataGridView)sender;
dgv.ClearSelection();
dgv.Rows[e.RowIndex].Selected = true;
dgv.CurrentCell = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
}
}
}
private void Is0ToNull(DataGridView dgv, int rowInx, int colInx)
{
if (rowInx >= 0 && colInx >= 0 && (dgv.Columns[colInx] is DataGridViewTextBoxColumn) && (
((DataGridViewTextBoxColumn)dgv.Columns[colInx]).ValueType == typeof(double) ||
((DataGridViewTextBoxColumn)dgv.Columns[colInx]).ValueType == typeof(decimal) ||
((DataGridViewTextBoxColumn)dgv.Columns[colInx]).ValueType == typeof(int)))
{
if (dgv.Rows[rowInx].Cells[colInx].Value != null
&& dgv.Rows[rowInx].Cells[colInx].Value != DBNull.Value)
{
double d = 0.0;
if (!double.TryParse(dgv.Rows[rowInx].Cells[colInx].Value.ToString(), out d))
{
dgv.CancelEdit();
}
else if (d == 0)
{
dgv.Rows[rowInx].Cells[colInx].Value = DBNull.Value;
}
}
}
}
void dataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
if (dgv.Columns[e.ColumnIndex].DataPropertyName == "child_name")
{
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex + 1].Value = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;
}
Is0ToNull(dgv, e.RowIndex, e.ColumnIndex);
}
void dataGridView_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
dgv.CancelEdit();
e.Cancel = true;
}
void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (string.IsNullOrWhiteSpace(e.FormattedValue.ToString()))
{
return;
}
DataGridView dgv = (DataGridView)sender;
Is0ToNull(dgv, e.RowIndex, e.ColumnIndex);
}
}
}