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()方法。