2011-09-07 38 views
1

我有一个网格,每页有100个页面和10个项目(网格的大小是动态的) 我有一个删除命令。一切正常。现在我需要添加递归删除命令,它是gonig从网格中删除所有行。网格中的每一行

我试图做到这一点:

foreach (GridDataItem item in RadGrid1.Items) 
{ 

} 

,但只计算单页上的行(除去10只记录一次)

如何运行,他同样的事情每一行在整个电网?

gv.Items.count也给出了10

+0

我想你正在遍历一个循环,其中一些元素在前一遍循环中已经被删除。我怀疑它只能每页删除。 – Arun

+0

它的确如此,但是如果我将RadGrid1.Databind()放入循环中,它可能会解决这个问题,但会稍微慢一些。 – user194076

回答

4

我假设这是对radgrid控件的ASP.NET AJAX,但随时纠正我,如果我错了。

RadGrid将只包含当前显示的项目。因此,如果您的页面大小为10,它将只包含RadGrid.Items集合中的10个项目。

如果您想访问RadGrid的所有项目,最好的方法是返回到原始数据源。因此,如果这是一个DataSet,我只需使用一些服务器端逻辑从数据中删除项目,然后调用.Rebind()到RadGrid,它将更新网格以显示当前项目。但是,如果转到原始数据源不是一个选项,则可以始终将AllowPaging设置为false(在RadGrid的MasterTableView上),调用.Rebind(),执行所有逻辑(RadGrid.Items将立即包含所有项目),然后将AllowPaging设置为true并再次调用.Rebind()。虽然这样效率稍低,但可以很好地工作。

尽管最重要的是回到底层数据。如果您试图从RadGrid中删除所有数据,为什么不将数据源设置为空数组并调用.Databind()或.Rebind()?比一次删除RadGrid中的所有项目快得多。

0

carlbergenhem建议的解决方案是有意义的。但是,如果您希望从数据库中清除数据,则可以通过运行SQL DELETE命令将其删除,然后重新绑定网格。

DELETE FROM <<YOUR TABLE NAME>> WHERE <<CONDITION>> 
相关问题