1

我在Winforms上使用C#從庫中的類中填充datagridview。我已經能夠使用存儲過程獲取datagridview以填充所有SQL Server數據。將複選框值傳遞給SQL Server存儲過程

我希望允許最終用戶修改datagridview中的單元格,這將通過第二個存儲過程更新SQL Server表。不過,一旦更新過程被調用,我似乎無法獲得複選框的值。

我的更新查詢如下:

public void UpdateEmployee(int empID, string initials, string firstName, string lastName, int active) 
{ 
    using (SqlConnection conn = new SqlConnection(DatabaseConnection.Database)) 
    { 
     conn.Open(); 

     using (SqlCommand cmd = conn.CreateCommand()) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.CommandText = "UpdateEmployee"; 

      cmd.Parameters.AddWithValue("@EmpID", empID); 
      cmd.Parameters.AddWithValue("@Initials", initials); 
      cmd.Parameters.AddWithValue("@FirstName", firstName); 
      cmd.Parameters.AddWithValue("@LastName", lastName); 
      cmd.Parameters.AddWithValue("@Acvite", active); 

      cmd.ExecuteNonQuery(); 
     } 
    } 
} 

創建庫類的一個實例,我試圖調用Update方法與這行代碼後:

empData.UpdateEmployee(Convert.ToInt32(dataGridView1[0, e.RowIndex].Value), // EmpID 
     dataGridView1[1, e.RowIndex].Value.ToString(), //Initials 
     dataGridView1[2, e.RowIndex].Value.ToString(), //FirstName 
     dataGridView1[3, e.RowIndex].Value.ToString(), //LastName 
     Convert.ToInt16(dataGridView1[4, e.RowIndex].EditedFormattedValue)); // Active checkbox 

我得到一個錯誤,說明@Active尚未提供。

任何人都可以幫我解決這個問題嗎?

+2

因爲拼錯'@ Active',你會看到錯誤。但更重要的是,[我們可以停止使用'AddWithValue()'了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-已經/) – Siyual

+1

@Siyual我同意,但在這種情況下,它不應該是一個大問題。數據類型在參數中指定,因爲它們正在使用存儲過程。 –

+0

使用AddWithValue()是否有缺點? – Wurm

回答

1
cmd.Parameters.AddWithValue("@Acvite", active); 

拼寫錯誤?積極而不是Acvite?

+0

這確實擺脫了那個錯誤,但更新不起作用:( – Wurm

+0

並非常感謝你的看到!我不能相信我以前沒有看到。 – Wurm

+1

我現在正在工作!謝謝大家對於快速回復!我最終調用了CellEndEdit事件的更新方法:0) – Wurm

相關問題