[英]Update single cell in datagrid WPF
我的 WPF 應用程序中有一個數據網格。 在一個列中,我有一個 int(列名 = Amount)。
例如,單元格中會有一個數字“4”。 我可以將 DataGrid 中的“4”編輯為“3”。
編輯后,我將按下“更新”按鈕,以便我的數據庫列金額將被更新。
它正在工作,但它將 Amount 列中的所有單元格更新為所選行的 Id 號。
這是我在 de xaml.cs 文件中的代碼:
private void Update(object sender, RoutedEventArgs e)
{
DataRowView o = (DataRowView)g2.SelectedItem;
int Amount= Convert.ToInt32(o.Row.ItemArray[0]);
try
{
const string query = @"UPDATE [Stock] SET [STOCK].Amount = @Aantal;";
using (SqlConnection con = new SqlConnection("Data Source=(LocalDB)\\MSSQLLocalDB;AttachDbFilename=\"...."))
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.Add("@Amount", SqlDbType.Int).Value = Amount;
con.Open();
cmd.ExecuteNonQuery();
}
MessageBox.Show("Update complete");
binddatagrid();
}
catch (Exception ex)
{
MessageBox.Show("Error occurred:\r\n" + ex.Message);
}
}
我究竟做錯了什么?
您的數據庫查詢正在更新[Stock]
表中每一行的Amount
列。 您需要在數據庫查詢中添加WHERE
子句,以便僅更新數據庫中與DataGrid
中選定行相對應的[Stock]
行。
我不知道您的數據庫架構是什么樣的,但我假設[Stock]
表有一個Id
列。 如果是這樣,查詢可能如下所示:
UPDATE [Stock] SET [Stock].Amount = @Anatal WHERE [Stock].Id = @Id
請注意,查詢現在有第二個參數@Id
。 這意味着您需要以與當前獲取Amount
相同的方式從所選行獲取Id
。
int id = Convert.ToInt32(o.Row.ItemArray[1]);
我使用o.Row.ItemArray[1]
,但我不知道Id
實際存儲在哪個索引處。 您必須使用該索引來獲取正確的Id
。
由於您的查詢有第二個參數,因此您還需要將其添加到SqlCommand
實例的Parameters
集合中。 就像您對 Am Amount
所做的那樣。
cmd.Parameters.Add("@Id", SqlDbType.Int).Value = id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.