C# 验证C中的第一行后填充DatagridView单元格#
我有一个4-5列的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
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?我不知道。我将调试它,逐步完成代码,查看变量值并观察执行路径。我看不出代码有什么问题。