【问题标题】:DataRepeater displaying new items unexpectedlyDataRepeater 意外显示新项目
【发布时间】:2015-10-08 16:58:27
【问题描述】:

我有一个DataRepeater (Microsoft.VisualBasic.PowerPacks),它有 100 多条记录,由大约 5 个文本框和每个项目中的相应标签组成,因此它可以滚动。如果它很重要,它的 DataSource 是通过这一行设置的:

repeater.DataSource = myDataSet.Tables["TableName"];  

奇怪的是:当我向 DataRepeater (repeater.AddNew()) 添加新行时,底部的新字段成为焦点,但它似乎从另一个项目复制了数据。它似乎并不总是相同的项目。此外,如果我位于DataRepeater 的底部,而新项目中没有任何内容聚焦并再次滚动回来,则(可能)存在来自另一个随机项目的不同数据。

在这一点上我基本上不知所措。没有可能导致此问题的滚动事件,并且对项目的这种更改不会触发 DataRepeater 或父用户控件的单个事件/方法。
有没有人遇到过类似的问题或有什么可能导致这种行为的想法?

更新:添加多个新项目似乎会导致他们从连续的现有项目中获取数据(例如,3 个新项目可能会显示项目 100-102 中的数据,现在滚动滚动并再次返回他们可能会显示来自项目 150-152 的数据)

【问题讨论】:

    标签: c# datarepeater


    【解决方案1】:

    您可能希望将新行添加到数据集的表中,转发器将在运行时更新。

    【讨论】:

    • 您部分正确,因为这是我们在看到此问题前几分钟发现的修复程序的一部分。由于某种原因,它仍然填充垃圾。我们已将范围缩小到可能不喜欢空值的中继器。如果我们适当地显式处理空值并设置默认值(通常是""),它的行为似乎是正确的。
    • 如果您想用我上面的评论中的一些额外细节(可能还有一个简短的代码 sn-p)来详细说明您的答案,我很乐意接受这个作为答案。我可能不应该将我的发现作为答案发布,因为你在技术上击败了我。
    • 您是在谈论绑定到数据视图而不是直接绑定到您的表吗?我很难猜出你写的代码,请准确一点。
    • 绑定没有改变。我只需要按照您的建议修改表格,但还必须提供默认字段值,因为中继器显然奇怪地处理空字段值。
    • 好吧,这很奇怪......所以要么将默认值设置为 String.Empty,要么在添加新行之前检查 value != null
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    相关资源
    最近更新 更多