0

当我从代码创建新数据集或通过数据库中的数据适配器检索它时,将行内容结果更改为更改的行状态。这是默认行为,一切正常:

数据集 ds = new DataSet();
DataTable table = new DataTable("Cities");
table.Columns.Add("CityName", typeof(string));
table.Columns.Add("CountryName", typeof(string));
ds.Tables.Add(table);

table.Rows.Add("纽约", "美国"); // 为第 0 行添加状态
table.Rows.Add("伦敦", "UK"); // 为第 1 行添加状态

table.AcceptChanges(); // 两行的状态都是不变的

table.Rows[0][1] = "西雅图"; // 状态为第 0 行已修改

当我从数据库中检索数据集,然后通过 wcf 发送它(是的,我知道这是一个不好的做法,但那是另一回事,我使用的是标准行为)并在代理上接收它,它的数据行仍然是“状态-知道的”。数据行仍然对其值的修改作出反应。

编辑:在我进一步调试问题后,我发现数据集已正确反序列化并反映了 wcf 客户端的更改(行状态对应于单元格值的修改)。在每个 DataTable 绑定(WPF 托管的 Windows 窗体绑定)到 FarPoint 电子表格对象后,反映能力的更改似乎丢失了:

sheet = new SheetView("Sample");
DataTable table = 获得的DataSet.Tables[0]; // RowState 是正确的
sheet.DataSource = 表;// 从现在开始,RowState 是“损坏的”

因此,从将数据集的表绑定到 FarPoint 电子表格对象的角度来看,这些行是“无状态的”。我可能会更改它们的内容或显式调用 SetModified,但两个操作都不会将其行状态更改为已修改:

获得DataSet.Tables[0].Rows[0][1] = "西雅图"; // 状态不变
获得DataSet.Tabels[0].SetModified(); // 状态不变

现在有没有可能说服数据集再次变得明智并开始反映其变化,或者我需要考虑一种不同的方法?有没有人知道可能出了什么问题(绑定自身或 FarPoint 组件,错误的模式)?

4

3 回答 3

1

在调用 DataAdapter.Update() 之前尝试 DataTable 或 DataRow 对象中的 EndEdit() 方法

于 2011-03-08T12:10:25.203 回答
0

Well it seems that the problem was in the FarPoint Spread control. Version 5.0 broke the functionality and the guys at GrapeCity got the bug fixed in version 5.0.3518 which works fine now.

于 2011-03-09T13:52:51.820 回答
0

我以一种形式遇到了类似的情况,我意识到问题出在对标签 ToolTip 属性的绑定中。首先我意识到,当我将null 的值null更改为某个字符串时,问题就消失了,但是在对项目进行了一些其他更改后,问题又出现了。当我删除与 ToolTip 属性的绑定时,问题再次消失。我仍然不知道是否永远。

于 2013-10-24T13:34:22.710 回答