C# DataRepeater意外显示新项目
我有一个C# DataRepeater意外显示新项目,c#,datarepeater,C#,Datarepeater,我有一个DataRepeater(Microsoft.VisualBasic.PowerPacks),它有100多条记录,每个记录中包含大约5个文本框和相应的标签,因此可以滚动。如果有问题,则通过以下行设置其数据源: repeater.DataSource = myDataSet.Tables["TableName"]; 奇怪的是:当我向这个DataRepeater(repeater.AddNew())添加新行时,它将底部的新字段置于焦点位置,但它似乎从另一个项目复制了数据。它似乎并不总是
DataRepeater
(Microsoft.VisualBasic.PowerPacks),它有100多条记录,每个记录中包含大约5个文本框和相应的标签,因此可以滚动。如果有问题,则通过以下行设置其数据源:
repeater.DataSource = myDataSet.Tables["TableName"];
奇怪的是:当我向这个DataRepeater
(repeater.AddNew()
)添加新行时,它将底部的新字段置于焦点位置,但它似乎从另一个项目复制了数据。它似乎并不总是同一个项目。此外,如果我在DataRepeater
的底部,在新项目中没有任何内容,并来回滚动,则(可能)存在与另一个随机项目不同的数据
我现在基本上不知所措。没有可能导致此问题的滚动事件,并且此项更改不会触发DataRepeater
或父用户控件的单个事件/方法。是否有人经历过类似的问题,或者对可能导致这种行为的原因有明确的认识
更新:添加多个新项目似乎会导致它们从连续的现有项目中获取数据(例如,3个新项目可能会显示项目100-102中的数据,然后来回滚动,现在它们可能会显示项目150-152中的数据)您可能需要将新行添加到数据集的表中,repeater将在运行时更新。您可能希望将新行添加到数据集的表中,repeater将在运行时更新。您部分正确,因为这是我们在看到此内容前几分钟发现的修复的一部分。由于某种原因,它仍然在填充垃圾。我们已经将范围缩小到可能不喜欢空值的中继器。如果我们明确地适当地处理空值并设置默认值(通常是
”
),它的行为似乎是正确的。如果您想从我上面的评论(可能还有一个简短的代码片段)中详细说明您的答案,我很乐意接受这一回答。我可能不应该把我的发现作为答案,因为你在技术上比我强。你是说绑定到dataview而不是直接绑定到表吗?我很难猜出你写的代码,请更精确一些。绑定没有改变。我只是按照你的建议修改了表,但也必须提供默认字段值,因为中继器显然处理空字段值很奇怪。。。因此,要么将默认值设置为String.Empty,要么检查值!=在添加新行之前为null您部分正确,因为这是我们在看到这一点之前几分钟发现的修复的一部分。由于某种原因,它仍然在填充垃圾。我们已经将范围缩小到可能不喜欢空值的中继器。如果我们明确地适当地处理空值并设置默认值(通常是”
),它的行为似乎是正确的。如果您想从我上面的评论(可能还有一个简短的代码片段)中详细说明您的答案,我很乐意接受这一回答。我可能不应该把我的发现作为答案,因为你在技术上比我强。你是说绑定到dataview而不是直接绑定到表吗?我很难猜出你写的代码,请更精确一些。绑定没有改变。我只是按照你的建议修改了表,但也必须提供默认字段值,因为中继器显然处理空字段值很奇怪。。。因此,要么将默认值设置为String.Empty,要么检查值!=添加新行前为null