问题标签 [rowstate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1120 浏览

c# - DataTable 中的 DataRow 状态问题

我对使用 DataTable 有一个非常奇怪的要求。我有一个包含一些列的数据表。Nwo 每当数据表中的任何 DataRow 发生任何变化时;然后将 DataRow 的状态设置为已修改。那没问题。但是对于一个特殊的专栏,我不想要这种行为。我希望此特定列的任何行中的任何更改都不应更改数据行的状态。请帮我解决这个问题。

0 投票
2 回答
3356 浏览

.net - 在数据源中删除的行的 DataAdapter.Fill() 行为

我正在使用DataSet//体系结构在数据库DataTableDataAdapter我的模型对象之间进行调解,这些对象有自己的支持(它们不受 DataRow 支持)。我有一个DataAdapterwith AcceptChangesDuringFill = False, AcceptChangesDuringUpdate = False, and FillLoadOption = OverwriteChanges。以下是我DataAdapter在这些条件下对模型的理解:

DataAdapter.Update()

  • DataRowState.Added会导致InsertCommand开火
  • DataRowState.Modified会导致UpdateCommand开火
  • DataRowState.Deleted会导致DeleteCommand开火

数据适配器.Fill()

  • 返回结果集中的任何行,其主键对应于 中的现有行将DataTable用于更新该行,并且该行的状态将始终变为DataRowState.Modified即使返回的行与当前行相同
  • 返回的结果集中任何主键不对应任何现有行的行都将用于创建新行,该行的状态将变为DataRowState.Added
  • DataTable与返回结果集中的行不对应的任何行都将保留在DataRowState.Unchanged

鉴于我对这个心智模型是正确的,假设我想用它Fill()来注意数据源中已删除的行。另外,假设 的参数SelectCommand不返回整个表。我猜我有两个选择:

  • 找到所有应该由 更新Fill()但仍然存在的行DataRowState.Unchanged(依赖于我上面未经测试的斜体假设)。这些行已在数据源中删除。
  • 清除;DataTable之前的所有相关行 Fill()任何不再显示的行都已在数据源中删除。DataRowState.Added这失去了与DataRowState.Modified第一种方法保留的区别。

所以,我的问题:

  • 我的上述模型是否DataAdapter正确,取决于我在顶部记录的属性值?
  • 我应该使用哪个选项来查找已删除的行?我更喜欢第一个,但这取决于我的假设,即所有返回的行都将设置为DataRowState.Modified即使该行相同;这是一个安全的假设吗?
  • 我对这一切都错了吗?
0 投票
2 回答
1410 浏览

ado.net - 在 ADO.NET 数据集中维护 DataRowState - RejectChanges() 方法不起作用?

问题简化:

我有一个带有一些数据表的数据集...我有一个绑定到其中一个数据表的 Winforms DataGrid。用户通过DataGrid将一些行粘贴到所述数据表中,比如说3行;

所有三行现在都有它们的 RowState = DataRowState.Added。

我现在开始一个 sqlserver 事务。

然后调用 dataAdapter1.Update(dataSet1) 将行更新到 SqlServer。第 1 行 .. 行 2 .. 行 3 .. sqlserver 级别的错误(按设计,我强制执行唯一索引)

检测到此错误后,我回滚 sqlserver 事务。

我还尝试使用 Dataset1.RejectChanges() 和/或 Datatable1.RejectChanges() 来“回滚”数据表/数据集的更改。

问题不是 .RejectChanges() 工作方式我设想的方式。我的数据表现在有两行(row1,row2),其 RowState = DataRowState.Unchanged; row3 完全消失了。

我想要发生的是,当我回滚 sqlserver 事务时,数据表中的所有 3 行在调用 dataAdapter1.Update() 方法之前保持在相同的状态。

(原因是用户可以查看绑定的 DataGrid 中的错误,采取纠正措施,然后再次尝试更新)。

有什么想法吗?即我正在寻找相当于在 ADO 数据表级别回滚状态的东西。

0 投票
2 回答
1540 浏览

wcf - 使用 DataContractSerializer 序列化 DataSet 时保留 DataRowState

由于各种原因,我不得不将类型化的数据集发送到 WCF 服务端点。这工作正常,除了在反序列化时,每个 DataTable 中每一行的 RowState 设置为“已添加”,无论它们在客户端上是什么。如果我将序列化流写入文件,我会看到 RowState 不是序列化数据的一部分。如何添加它以便跨服务边界保留 RowState?并不是说我认为这很重要,但是客户端进程正在运行 .net 3.5,而服务进程正在运行 .net 4.0

0 投票
1 回答
145 浏览

delete-row - 添加的DataRow不会被删除做table.Rows[i].Delete()?

这是为什么?添加数据行的状态。当我删除该行时,状态不变。为什么不删?这就是我的删除存储过程永远不会被调用的原因!

编辑:数据行是新添加的,然后我尝试将其删除。

0 投票
2 回答
4022 浏览

asp.net - 如果选择了 GridViewRow 则...否则

好的,这似乎应该很容易做到,但是我似乎无法在不出错的情况下工作。我有一个 IfThen 语句,它说明是否选择了一行,然后执行,否则显示消息。如果我选择一行,代码运行良好,但是当我尝试在不选择行的情况下继续时,我得到一个错误而不是我想要显示的消息。这是我正在尝试做的一个例子:

谁能帮我解决这个问题?

0 投票
8 回答
39272 浏览

c# - 如何从数据表中删除所有行

我想从数据表中删除行状态属性值已删除的所有行。

目前我正在遍历所有行并删除每一行。

有什么有效的方法吗?我不想在 SQL Server 中删除我想使用 DataTable 方法。


0 投票
0 回答
107 浏览

.net-4.0 - 使用数据适配器时与更新 CASCADE 问题一起使用的输出参数

我手动创建了一些数据适配器——由于版本不兼容,使用自动生成的适配器是不可行的,因为数据集由许多表组成,通常混合有 PK、FK 约束。到目前为止,它的大部分工作都非常顺利,但是在使用新的“添加”行更新数据库时修改适配器以使用 PK 的数据库序列(而不是分配给数据集中行的临时序列)后,我一直打击问题。

我将序列添加到插入语句中,并将 PK 参数更改为输出参数,以便它更新数据集行,从而更新所有子行(使用 UPDATE CASCADE 规则)。问题是子行,在更新具有添加的行状态之前,被更改为修改状态(我不同意这甚至应该发生,即使添加的行肯定应该保持添加状态修改的!)。因此,当我们使用子行更新子表时,它会失败,因为它的预期行具有添加的状态。

我可以解决这个问题的最干净的方法是什么?我能想到的潜在解决方案:

  • 关闭 UPDATE CASCADE 并在修改后手动更新每个子行,更新父 PK 并将每行更改回添加后。
  • 在开始更新之前在数据集的所有表中创建所有添加行的副本,然后在每个表更新后更新主副本,将所有正确的行标记回添加。

有更好的想法吗?

0 投票
3 回答
1576 浏览

c# - 检查 CollectionViewSource 中的行是否是新行

我有一个 CollectionViewSource (cvs),它具有强类型 DataTable 作为它的源。Cvs.View 设置为 DataGrid 的 ItemsSource。我想根据 DataGrid 中的更改更新、插入和删除数据库中的数据。我已经成功完成更新,并且我有删除的想法,但是对于插入我有一些问题。我试图通过处理 cvs.View 的 CurrentChanging 事件来做到这一点,但行状态始终是分离的,应该添加它。这是我的代码:

这是正确的方法吗?我错过了什么吗?提前致谢。

编辑:DataGrid 绑定:

0 投票
3 回答
46830 浏览

c# - C# - 使用 DataAdapter 从 DataTable 更新 SQL 表 - SQL 表未更新

select * from将 Excel 电子表格放入DataTable dt. 我想获取这些值并更新 SQL 表。SQL 表的存在是因为从原始 Excel 电子表格手动导入 SQL,具有主键集。用户更新了 excel 表,我需要更新 SQL 值。我正在将 设置dt.RowState为修改以调用更新。我没有收到错误,但 SQL 表没有更新。之前的测试显示我的SQL权限和连接都很好,可以修改表。