[英]How do I save info from an unbound datagridview to SQL database
我已經嘗試了好幾個小時才能在我的datagridview中獲取信息以保存到數據表中。 從進行選擇的組合框中填充datagridview。 我不知道是如何將qty_Ordered
轉換為int
。 我相信一旦有了,它就會起作用。
另外,是否可以使用datagridview的列名而不是Cells[]
?
foreach (DataGridViewRow row in purchase_Order_ItemsDataGridView.Rows)
{
if (!row.IsNewRow)
{
SQL = @"INSERT INTO Purchase_Order_Items (Purchase_Order_ID, Part_Number, Qty_Ordered, Work_Order_Number)
VALUES(@purchase_Order_Id, @part_Number, @qty_Ordered, @work_Order_Number)";
sqlCommand = new SqlCommand(SQL, DataAccessClass.sql_Connection);
sqlCommand.Parameters.AddWithValue("@purchase_Order_ID", purchase_Order_Id);
sqlCommand.Parameters.AddWithValue("@part_Number", row.Cells[1].Value);
sqlCommand.Parameters.AddWithValue("@qty_Ordered", row.Cells[2].Value);
sqlCommand.Parameters.AddWithValue("@work_Order_Number", row.Cells[3].Value);
sqlCommand.ExecuteNonQuery();
}
}
你有嘗試過嗎? 公認的權宜之計,但確實將其轉換為int。
sqlCommand.Parameters.AddWithValue("@qty_Ordered", int.parse(row.Cells[2].Value.ToString()));
編輯:此鏈接可能會為您提供更多幫助- 從DataGridViewCell獲取數值?
它處理的方法比上面的解決方案具有更強的魯棒性,當您的值為null時,它將嚴重失敗。
編輯2:看起來上述解決方案還不夠健壯。 下面的代碼更加健壯。
int qtyordered;
if (!int.TryParse(row.Cells[2].Value.ToString(), out qtyordered)
qtyordered = 0;
sqlCommand.Parameters.AddWithValue("@qty_Ordered", qtyordered);
厭惡的答案將是最好的,因為它可以與您當前的代碼透明地一起工作,但這有點棘手。 您需要公開數據表的列,以便您可以修改類型。 並且,在創建列之后/之后以及開始添加數據之前,您需要執行此操作。
purchase_Order_ItemsDataGridView.Columns[2].ValueType = typeof(int);
您需要在開始填充表格之前但在創建列之后,將其放置在較早的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.