问题标签 [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.
c# - DataTable 中的 DataRow 状态问题
我对使用 DataTable 有一个非常奇怪的要求。我有一个包含一些列的数据表。Nwo 每当数据表中的任何 DataRow 发生任何变化时;然后将 DataRow 的状态设置为已修改。那没问题。但是对于一个特殊的专栏,我不想要这种行为。我希望此特定列的任何行中的任何更改都不应更改数据行的状态。请帮我解决这个问题。
.net - 在数据源中删除的行的 DataAdapter.Fill() 行为
我正在使用DataSet
//体系结构在数据库DataTable
和DataAdapter
我的模型对象之间进行调解,这些对象有自己的支持(它们不受 DataRow 支持)。我有一个DataAdapter
with 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
即使该行相同;这是一个安全的假设吗? - 我对这一切都错了吗?
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 数据表级别回滚状态的东西。
wcf - 使用 DataContractSerializer 序列化 DataSet 时保留 DataRowState
由于各种原因,我不得不将类型化的数据集发送到 WCF 服务端点。这工作正常,除了在反序列化时,每个 DataTable 中每一行的 RowState 设置为“已添加”,无论它们在客户端上是什么。如果我将序列化流写入文件,我会看到 RowState 不是序列化数据的一部分。如何添加它以便跨服务边界保留 RowState?并不是说我认为这很重要,但是客户端进程正在运行 .net 3.5,而服务进程正在运行 .net 4.0
delete-row - 添加的DataRow不会被删除做table.Rows[i].Delete()?
这是为什么?添加数据行的状态。当我删除该行时,状态不变。为什么不删?这就是我的删除存储过程永远不会被调用的原因!
编辑:数据行是新添加的,然后我尝试将其删除。
asp.net - 如果选择了 GridViewRow 则...否则
好的,这似乎应该很容易做到,但是我似乎无法在不出错的情况下工作。我有一个 IfThen 语句,它说明是否选择了一行,然后执行,否则显示消息。如果我选择一行,代码运行良好,但是当我尝试在不选择行的情况下继续时,我得到一个错误而不是我想要显示的消息。这是我正在尝试做的一个例子:
谁能帮我解决这个问题?
c# - 如何从数据表中删除所有行
我想从数据表中删除行状态属性值已删除的所有行。
目前我正在遍历所有行并删除每一行。
有什么有效的方法吗?我不想在 SQL Server 中删除我想使用 DataTable 方法。
.net-4.0 - 使用数据适配器时与更新 CASCADE 问题一起使用的输出参数
我手动创建了一些数据适配器——由于版本不兼容,使用自动生成的适配器是不可行的,因为数据集由许多表组成,通常混合有 PK、FK 约束。到目前为止,它的大部分工作都非常顺利,但是在使用新的“添加”行更新数据库时修改适配器以使用 PK 的数据库序列(而不是分配给数据集中行的临时序列)后,我一直打击问题。
我将序列添加到插入语句中,并将 PK 参数更改为输出参数,以便它更新数据集行,从而更新所有子行(使用 UPDATE CASCADE 规则)。问题是子行,在更新具有添加的行状态之前,被更改为修改状态(我不同意这甚至应该发生,即使添加的行肯定应该保持添加状态修改的!)。因此,当我们使用子行更新子表时,它会失败,因为它的预期行具有添加的状态。
我可以解决这个问题的最干净的方法是什么?我能想到的潜在解决方案:
- 关闭 UPDATE CASCADE 并在修改后手动更新每个子行,更新父 PK 并将每行更改回添加后。
- 在开始更新之前在数据集的所有表中创建所有添加行的副本,然后在每个表更新后更新主副本,将所有正确的行标记回添加。
有更好的想法吗?
c# - 检查 CollectionViewSource 中的行是否是新行
我有一个 CollectionViewSource (cvs),它具有强类型 DataTable 作为它的源。Cvs.View 设置为 DataGrid 的 ItemsSource。我想根据 DataGrid 中的更改更新、插入和删除数据库中的数据。我已经成功完成更新,并且我有删除的想法,但是对于插入我有一些问题。我试图通过处理 cvs.View 的 CurrentChanging 事件来做到这一点,但行状态始终是分离的,应该添加它。这是我的代码:
这是正确的方法吗?我错过了什么吗?提前致谢。
编辑:DataGrid 绑定:
c# - C# - 使用 DataAdapter 从 DataTable 更新 SQL 表 - SQL 表未更新
我select * from
将 Excel 电子表格放入DataTable
dt
. 我想获取这些值并更新 SQL 表。SQL 表的存在是因为从原始 Excel 电子表格手动导入 SQL,具有主键集。用户更新了 excel 表,我需要更新 SQL 值。我正在将 设置dt.RowState
为修改以调用更新。我没有收到错误,但 SQL 表没有更新。之前的测试显示我的SQL权限和连接都很好,可以修改表。