清除数据绑定asp.net Listview时抛出System.IndexOutOfRangeException

时间:2012-07-26 15:11:32

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

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

这是抛出此异常的唯一时间,如果清除ListView而不进行排序,则所有内容都是hunky dory。

感谢任何帮助

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

我认为最简单的两个修复方法是在清除它时删除sort列,或者确保ListView始终知道它至少包含哪些列。