簡體   English   中英

如何從C#中的datagridview中刪除所選行,以及如何從數據庫中刪除該記錄?

[英]How to delete selected row from datagridview in C# and also delete that record from database?

大家好,我想通過在C#Windows窗體的datagridview中選擇一行來刪除一行,但是我也希望該記錄也應該從數據庫中刪除。我嘗試了以下代碼,但它不起作用。請幫忙解決此問題問題。

碼:

  using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["CS"].ConnectionString))
            {
                SqlCommand delcmd = new SqlCommand();

                foreach (DataGridViewRow row in dg.Rows)
                {
                    if (row.Selected)
                    {
                        dg.Rows.RemoveAt(row.Index);
                        try
                        {
                            delcmd.CommandText = "Delete From ITEM_DETAILS Where ITEM_MODEL=" + row + "";
                            con.Open();
                            delcmd.Connection = con;
                            delcmd.ExecuteNonQuery();
                        }
                        catch(Exception ex)
                        {
                            MessageBox.Show(ex.ToString());
                        }
                    }

                }
            }
        }

您應該為ITEM_MODEL傳遞一個值,以將其從行中提取出來。
您不能為此使用整行。 並且在任何情況下都應使用參數化查詢。

假設您的網格在名為“ ITEM_MODEL”的列中顯示了ITEM_MODEL的值

try
{
    delcmd.CommandText = "Delete From ITEM_DETAILS Where ITEM_MODEL=@item";
    con.Open();
    delcmd.Connection = con;
    delcmd.Parameters.AddWithValue("@item", row.Cells["ITEM_MODEL"].Value.ToString());
    delcmd.ExecuteNonQuery();
}

請注意,我不知道數據庫表中ITEM_MODEL列的數據類型。 我假設它是一個字符串,所以創建了字符串類型的參數。 如果此假設不成立,則應使用網格列中存儲的值進行適當的轉換來創建參數

我還建議更改網格行上的循環。 您正在從Rows集合中刪除項目,並且不能通過foreach安全地使用row.Index值。 最好使用傳統的循環從末尾移到第一行

for(int x = dg.Rows.Count - 1; x >= 0; x--)
{
    DataGridRow row = dg.Rows[x];
    if (row.Selected)
    {
        dg.Rows.RemoveAt(row.Index);
        .....

您的SQL字符串可能是錯誤的。 我假設您不想為row.ToString()調用row.ToString() ,其中row is DataGridViewRow
如果要與之比較的ITEM_MODEL位於該行的Tag ,則可以使用row.Tag而不是row

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM