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