C# Datagridview赢得';从数据库中删除记录后不刷新
为什么它不会刷新C# Datagridview赢得';从数据库中删除记录后不刷新,c#,winforms,C#,Winforms,为什么它不会刷新 private void deleteRecord() { if (BooksGrid.SelectedRows.Count > 0) { int selectedIndex = BooksGrid.SelectedRows[0].Index; int rowID = int.Parse(BooksGrid[0, selectedIndex].
private void deleteRecord()
{
if (BooksGrid.SelectedRows.Count > 0)
{
int selectedIndex = BooksGrid.SelectedRows[0].Index;
int rowID = int.Parse(BooksGrid[0, selectedIndex].Value.ToString());
string sql = "DELETE FROM Books WHERE BookID = @RowID";
SqlCommand deleteRecord = new SqlCommand();
deleteRecord.Connection = Booksconnection;
deleteRecord.CommandType = CommandType.Text;
deleteRecord.CommandText = sql;
SqlParameter RowParameter = new SqlParameter();
RowParameter.ParameterName = "@RowID";
RowParameter.SqlDbType = SqlDbType.Int;
RowParameter.IsNullable = false;
RowParameter.Value = rowID;
deleteRecord.Parameters.Add(RowParameter);
deleteRecord.Connection.Open();
deleteRecord.ExecuteNonQuery();
deleteRecord.Connection.Close();
}
}
Dataset.GetChanges()
只有在您通过数据集进行更改时才起作用-在这种情况下,您是在数据集无法控制的情况下进行更改的,因此您必须自己实际重新加载数据集(或者更好的是,调用首先填充数据集的方法)-这样,您也将从其他用户那里获取更改…而不确切知道您的DataGridView
数据源是什么(并且假设记录实际上已从数据库中删除),我认为您需要重置数据源,不管它是什么
例如,在我的代码中,我通常将一个DataTable
作为我的DataSource
,然后调用DataTable.Clear()
将其清除。之后,我用数据库将其重新填充。这确保了我的DataGridView
有一个完全更新的DataTable
,因为它的DataSource
您确认该记录实际上已从数据库中删除了吗?它为什么要刷新?那里没有代码来重新加载数据,也没有更新您的DataGridView
的现有数据源,如果我重新启动程序,记录就会消失。所以它肯定会从数据库中删除记录。@Rowland我尝试使用Dataset的GetChanges(),然后用Dataset.table作为参数重新填充sqldataadapter,但没有做任何更改。我对add按钮做了同样的操作,但添加记录后它会正确刷新。使用GetChanges()和SqlAdapeter.Fill(dataset.table),即。@用户您必须做了一些不同的操作,就像您做了相同的操作一样,尝试删除记录。我怀疑“add”做了一些完全不同的事情,因为它需要额外的信息我没有DataTable我有这个:BooksGrid.DataSource=booksDataset1.Books;sqlDataAdapter1.Fill(booksDataset1.Books)@用户数据集仍然具有Clear()方法。