[英]How to fill DataGridView Cells in MYSQL C#?
我有一個4-5列的DataGridView。
DataGridView是可編輯的。
當我在“參考列”中輸入一個值時,它將立即填充其他值
在mysql數據庫的其他單元格中。
這就是我嘗試過的...
private void TAB_Credit_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
try
{
if (TAB_Credit.CurrentCell.ColumnIndex == 0)
{
MySqlDataAdapter sa = new MySqlDataAdapter("SELECT * FROM table WHERE Reference='" + TAB_Credit.Rows[e.RowIndex].Cells["Reference"].Value + "'", MyConnexion);
DataTable dt2 = new DataTable();
sa.Fill(dt2);
double value = (double)TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value * (double)TAB_Credit.Rows[e.RowIndex].Cells["PU"].Value;
TAB_Credit.Rows[e.RowIndex].Cells["Designation"].Value = dt2.Rows[0]["Designation"].ToString();
TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value = dt2.Rows[0]["Quantite"].ToString();
TAB_Credit.Rows[e.RowIndex].Cells["PU"].Value = dt2.Rows[0]["Prix_Unitaire"].ToString();
TAB_Credit.Rows[e.RowIndex].Cells["Total"].Value = value.ToString();
}
}
catch
{ }
}
因此,在數據網格中,當我在參考單元格中插入其他單元格時,什么也沒有出現。 謝謝。
您的代碼中至少有兩個直接的問題:
現在,在刪除空捕獲之后,我們可以看到問題是由試圖乘以值(數量* PU)引起的無效強制轉換異常引起的。 應該通過正確轉換來自單元格的兩個對象值來解決此問題。
double qty = Convert.ToDouble(TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value);
double pu = Convert.ToDouble(TAB_Credit.Rows[e.RowIndex].Cells["PU"].Value);
double value = qty * pu;
但是,如果直接從您的用戶鍵入這些單元格,那么Convert.ToDouble也有其缺點。 如果輸入類似“ ABC”,則會引發異常。 在這種情況下,您使用double.TryParse並在輸入不是有效的double時向用戶發送消息
double qty;
if(!double.TryParse(TAB_Credit.Rows[e.RowIndex].Cells["Quantite"].Value.ToString, out qty))
{
MessageBox.Show("Invalid input for quantity");
return;
}
最后,我們需要使用參數化查詢來修復sql注入漏洞
string cmdText = @"SELECT * FROM table
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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.