请教个问题,我们下方的工时单价(dayprice),计算公式是:总薪资(totalsalary)/工时*8,得到的计算结果,其中这个总薪资(totalsalary),是“产量薪资+出成奖励+ 包材奖励”,是在下面的datagridview表格计算出来的(滞后计算),这样的话,导致前一步的总薪资(totalsalary),没有计算结果,从而导致工时单价(dayprice),也没办法计算(我注释掉的部分),相关截图,和代码如下,请问怎么解决呢;

foreach (DataRow row in resultTable.Rows)
{
// 计算考核数量
decimal instock = Convert.ToDecimal(row["instock"]);
decimal sample = Convert.ToDecimal(row["sample"]);
decimal checkNum = instock + sample;
row["考核数量"] = checkNum;
// 计算产量薪资
decimal price = Convert.ToDecimal(row["price"]);
decimal salary = checkNum * price;
row["产量薪资"] = salary;
//将考核数量与产品单价,做序列的调换
decimal temp = (decimal)row["考核数量"];
row["考核数量"] = row["price"];
row["price"] = temp;
//万盒工时计算
decimal workhour = Convert.ToDecimal(row["ulh"]);
decimal unitworkhour = (workhour / checkNum) * 10000;
row["万盒工时"] = unitworkhour;
//工日单价计算
//decimal totalsalary = Convert.IsDBNull(row["总薪资"]) ? 0 : Convert.ToDecimal(row["总薪资"]);
//decimal totalsalary;
//decimal dayprice = workhour / totalsalary * 8;
//row["工日单价"] = dayprice;
}
dataGridView1.DataSource = resultTable;
this.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView1.Columns[0].HeaderText = "日期";
dataGridView1.Columns[1].HeaderText = "批号";
dataGridView1.Columns[2].HeaderText = "产品批号";
dataGridView1.Columns[3].HeaderText = "产品名称";
dataGridView1.Columns[4].HeaderText = "规格";
dataGridView1.Columns[5].HeaderText = "班组";
dataGridView1.Columns[6].HeaderText = "工序";
dataGridView1.Columns[7].HeaderText = "单位";
dataGridView1.Columns[8].HeaderText = "工时";
dataGridView1.Columns[9].HeaderText = "入库数量";
dataGridView1.Columns[10].HeaderText = "取样数量";
dataGridView1.Columns[11].HeaderText = "考核数量";
dataGridView1.Columns[12].HeaderText = "产品单价";
dataGridView1.Columns[13].HeaderText = "产量薪资";
dataGridView1.Columns[14].HeaderText = "出成奖励";
dataGridView1.Columns[15].HeaderText = "包材奖励";
dataGridView1.Columns[16].HeaderText = "总薪资";
dataGridView1.Columns[17].HeaderText = "工日单价";
dataGridView1.Columns[18].HeaderText = "万盒工时";
// 将合计值赋值给最后一行的该列单元格,并在相邻单元格上,加上标识;
dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[8].Value = workhourtotal.ToString();
dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[7].Value = "合计工时";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally { conn.Close(); }
}
//以下,是针对计算总薪资的计算,等于产量薪资,与出成和包材奖励之和;
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
decimal a,b, c;
if (dataGridView1.Rows[e.RowIndex].Cells[13].Value == DBNull.Value)
{
a = 0;
}
else
{
a = Convert.ToDecimal(dataGridView1.Rows[e.RowIndex].Cells[13].Value);
}
if (dataGridView1.Rows[e.RowIndex].Cells[14].Value == DBNull.Value)
{
b = 0;
}
else
{
b = Convert.ToDecimal(dataGridView1.Rows[e.RowIndex].Cells[14].Value);
}
if (dataGridView1.Rows[e.RowIndex].Cells[15].Value == DBNull.Value)
{
c = 0;
}
else
{
c = Convert.ToDecimal(dataGridView1.Rows[e.RowIndex].Cells[15].Value);
}
decimal totalsalary = a + b + c;
dataGridView1.Rows[e.RowIndex].Cells[16].Value = totalsalary;
}