从数据集中删除旧记录并重新加载视图 c#
Delete old records from DataSet and reload view c#
在 ADO.NET 中,我的 DataSet 对象有 class。在 Window 表单应用程序中,我有 3 个链接的列表框。 1. 显示 nr,2. table 中的 "name" 值和 3. table 中的 "description" 值。当我向数据集中添加一个新行时,我可以将其删除,但问题是当我试图从一开始就删除数据集中的行时。
正在删除:
int licznik = 0;
foreach(DataRow datarow in bez.dset.Tables["typ"].Rows)
{
if(datarow["nazwa"].ToString() == listBox2.SelectedItem.ToString())
{
break;
}
licznik++;
}
bez.dset.Tables["typ"].Rows[licznik].Delete();
baz 是一个 class 的 DataSet 对象。
当我刷新 listBoxes 时出现错误,无法访问已删除的信息。我做错了什么?
Delete 方法不会从数据集中删除行 table。它只是标记 DataRow.RowState with the enum DataRowState.Deleted。如果您尝试使用 RowState = DataRowState.Deleted 引用 DataRow,则会引发上述错误。
如果您想将更改保存回数据库,则需要这种方法。如果您考虑一下,如果删除的行在 DataSet table 中不再存在,您如何设法从数据库 table 中删除该行?
如果你想从内存数据中删除删除的行table那么你需要调用
bez.dset.Tables["typ"].AcceptChanges();
此调用将您的更改应用于内存中的 DataTable,将每一行 RowState 更改为 DataRowState.Unchanged 并删除已删除的行。当然,在此调用之后 ADO.NET 类 之类的 DbDataAdapter 不再能够将您的更改保存回数据库。
如果您在 Datatable 中将 RowState 设置为 DataRowState.Deleted 的 DataRow,那么您需要在尝试使用它之前检查每个 RowState
foreach (DataRow drow in bez.dset.Tables["typ"].Rows)
{
if(drow.RowState != DataRowState.Deleted)
{
string value = drow.Field<string>("NameOfYourColumnOfStringType");
..... whatever you want to do with it....
}
}
在 ADO.NET 中,我的 DataSet 对象有 class。在 Window 表单应用程序中,我有 3 个链接的列表框。 1. 显示 nr,2. table 中的 "name" 值和 3. table 中的 "description" 值。当我向数据集中添加一个新行时,我可以将其删除,但问题是当我试图从一开始就删除数据集中的行时。 正在删除:
int licznik = 0;
foreach(DataRow datarow in bez.dset.Tables["typ"].Rows)
{
if(datarow["nazwa"].ToString() == listBox2.SelectedItem.ToString())
{
break;
}
licznik++;
}
bez.dset.Tables["typ"].Rows[licznik].Delete();
baz 是一个 class 的 DataSet 对象。 当我刷新 listBoxes 时出现错误,无法访问已删除的信息。我做错了什么?
Delete 方法不会从数据集中删除行 table。它只是标记 DataRow.RowState with the enum DataRowState.Deleted。如果您尝试使用 RowState = DataRowState.Deleted 引用 DataRow,则会引发上述错误。
如果您想将更改保存回数据库,则需要这种方法。如果您考虑一下,如果删除的行在 DataSet table 中不再存在,您如何设法从数据库 table 中删除该行?
如果你想从内存数据中删除删除的行table那么你需要调用
bez.dset.Tables["typ"].AcceptChanges();
此调用将您的更改应用于内存中的 DataTable,将每一行 RowState 更改为 DataRowState.Unchanged 并删除已删除的行。当然,在此调用之后 ADO.NET 类 之类的 DbDataAdapter 不再能够将您的更改保存回数据库。
如果您在 Datatable 中将 RowState 设置为 DataRowState.Deleted 的 DataRow,那么您需要在尝试使用它之前检查每个 RowState
foreach (DataRow drow in bez.dset.Tables["typ"].Rows)
{
if(drow.RowState != DataRowState.Deleted)
{
string value = drow.Field<string>("NameOfYourColumnOfStringType");
..... whatever you want to do with it....
}
}