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.

706 lines
31 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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.Qingquan.SynchroData;
namespace Mesnac.Action.Feeding.Qingquan.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});
ToolStripMenuItem ToolStripMenuItem1 = new ToolStripMenuItem();
ToolStripMenuItem1.Name = "ToolStripMenuItem5";
ToolStripMenuItem1.Size = new System.Drawing.Size(98, 22);
ToolStripMenuItem1.Text = "上移";
ToolStripMenuItem1.Click += toolStripMenuItem_Click;
Result.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
ToolStripMenuItem1});
ToolStripMenuItem ToolStripMenuItem2 = new ToolStripMenuItem();
ToolStripMenuItem2.Name = "ToolStripMenuItem6";
ToolStripMenuItem2.Size = new System.Drawing.Size(98, 22);
ToolStripMenuItem2.Text = "下移";
ToolStripMenuItem2.Click += toolStripMenuItem_Click;
Result.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
ToolStripMenuItem2});
ToolStripMenuItem ToolStripMenuItem3 = new ToolStripMenuItem();
ToolStripMenuItem3.Name = "ToolStripMenuItem7";
ToolStripMenuItem3.Size = new System.Drawing.Size(98, 22);
ToolStripMenuItem3.Text = "插入";
ToolStripMenuItem3.Click += toolStripMenuItem_Click;
Result.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
ToolStripMenuItem3});
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'";
string sqlstr = "select '-1' as ssKey,'' as ssValue union all 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'";
string sqlstr2 = "select '-1' as ssKey,'' as ssValue union all 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="grid"></param>
private void toolStripMenuItem5_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 toolStripMenuItem6_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); //密炼步骤【下移】
}
if (ss.Equals("ToolStripMenuItem5", StringComparison.CurrentCultureIgnoreCase))
{
toolStripMenuItem5_Click(grid); //称量【下移】
}
if (ss.Equals("ToolStripMenuItem6", StringComparison.CurrentCultureIgnoreCase))
{
toolStripMenuItem6_Click(grid); //称量【下移】
}
if (ss.Equals("ToolStripMenuItem7", StringComparison.CurrentCultureIgnoreCase))
{
toolStripMenuItem1_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);
}
}
}