【问题标题】:System.IndexOutOfRangeException thrown when clearing a databound asp.net Listview清除数据绑定的 asp.net Listview 时引发 System.IndexOutOfRangeException
【发布时间】:2012-07-26 15:11:31
【问题描述】:

我有一个当前绑定到 ObjectDataSource 的 asp ListView。 ObjectDataSource 的 select 方法有一个与隐藏标签相关联的参数。因此,要清除我的 ListView,我只需将隐藏标签的文本属性设置为 string.Empty 并绑定 ListView 的数据。这很好用,但是如果用户单击我的 ListView <th> 标签之一,它对 ListView 进行排序,然后单击“清除”按钮,它会抛出 System.IndexOutOfRangeException: Cannot find column name

这是唯一一次抛出这个异常,如果 ListView 没有被排序就被清除了,那么一切都是 hunky dory。

感谢任何帮助

【问题讨论】:

    标签: asp.net c#-4.0 listview objectdatasource


    【解决方案1】:

    我认为当标签为空白时,您的数据源不会返回任何内容,甚至不会返回表模式。这将意味着您的 ListView 将没有数据,包括不知道列可能是什么。因此,当您告诉它对某个列进行排序时,它会抱怨它找不到该列。

    我想两个最简单的修复方法是在清除排序列时删除它,或者确保 ListView 始终知道它至少有哪些列。

    【讨论】:

    • 这很接近,空白标签导致数据服务返回一个空的DataSet,当然它没有列。感谢您的建议,现在我可以尝试其他方法。
    【解决方案2】:

    在您的 Clear() 方法中,您是迭代还是使用特定的列名来删除项目?

    【讨论】:

      猜你喜欢
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 2010-12-10
      • 1970-01-01
      • 2011-04-16
      相关资源
      最近更新 更多