C# 验证C中的第一行后填充DatagridView单元格#

C# 验证C中的第一行后填充DatagridView单元格#,c#,mysql,datagridview,C#,Mysql,Datagridview,我有一个4-5列的DataGridView。 DataGridView是可编辑的。 当我在Reference列中输入一个值时,它将立即填充mysql数据库中其他单元格中的其他值。 但是当我转到下一行时,我想在引用单元格中添加另一个值,然后它会像第一行一样填充另一行,但它没有这样做… 这就是我试过的 private void TAB_Credit_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (TAB_Credit

我有一个4-5列的DataGridView。
DataGridView是可编辑的。
当我在Reference列中输入一个值时,它将立即填充mysql数据库中其他单元格中的其他值。
但是当我转到下一行时,我想在引用单元格中添加另一个值,然后它会像第一行一样填充另一行,但它没有这样做…
这就是我试过的

private void TAB_Credit_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    if (TAB_Credit.Columns[e.ColumnIndex].Name == "Reference")
    {

         string cmdText = @"SELECT * FROM tb_ajout_articles 
                            WHERE Reference=@ref";
         MySqlDataAdapter sa = new MySqlDataAdapter(cmdText, MyConnexion);
         sa.SelectCommand.Parameters.Add("@ref", MySqlDbType.VarChar).Value =
         TAB_Credit.Rows[e.RowIndex].Cells["Reference"].Value.ToString();

         DataTable dt2 = new DataTable();
         sa.Fill(dt);

         if (dt.Rows.Count == 1)
         {
             TXT_Stock.Text = dt.Rows[0]["Quantite"].ToString();
             //double value = (double)TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value * (double)TAB_Credit.Rows[e.RowIndex].Cells["Prix_Unitaire"].Value;

             TAB_Credit.Rows[e.RowIndex].Cells["Designation"].Value = dt.Rows[0]["Designation"].ToString();
             TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value = dt.Rows[0]["Quantite"].ToString();
             TAB_Credit.Rows[e.RowIndex].Cells["Prix_Unitaire"].Value = dt.Rows[0]["Prix_Unitaire"].ToString();
             TAB_Credit["Total", e.RowIndex].Value = 
               Convert.ToString(
               Convert.ToInt32(TAB_Credit["Quantite", e.RowIndex].Value) * 
               Convert.ToInt32(TAB_Credit["Prix_Unitaire", e.RowIndex].Value));
               //TAB_Credit.Rows[e.RowIndex].Cells["Total"].Value = value.ToString();

             TXT_Brut.Text = TAB_Credit["Total", e.RowIndex].Value.ToString();

         }
     }
     if (TAB_Credit.CurrentCell.ColumnIndex == 6)
     {
         if (Convert.ToInt32(TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value) > Convert.ToInt32(TXT_Stock.Text))
         {
             MessageBox.Show("Stock finished");
             TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value = dt.Rows[0]["Quantite"].ToString();

         }
         else
         {
             TAB_Credit["Total", e.RowIndex].Value = 
                   Convert.ToString(
                   Convert.ToInt32(TAB_Credit["Quantite", e.RowIndex].Value) * 
                   Convert.ToInt32(TAB_Credit["Prix_Unitaire", e.RowIndex].Value));
             TXT_Brut.Text = TAB_Credit["Total", e.RowIndex].Value.ToString();
         }
     }
 }

我相信如果你使用调试器,你会找到原因的。您尝试过吗?使用Debugger.break()?你可以,但我总是忘了把它拿走。只要按F9键就可以了。你认为这是因为这件事吗?你改变了什么?或者我必须用CellEndEdit?我不知道。我将调试它,逐步完成代码,查看变量值并观察执行路径。我看不出代码有什么问题。