我有一个100页的网格和每页10个项目。(网格的大小是动态的) 我有一个删除命令。一切正常。现在我需要添加recursive delete命令,这是gonig从网格中删除所有行。
我正在尝试这样做:
foreach (GridDataItem item in RadGrid1.Items)
{
}
但它只计算单个页面上的行数(一次删除10条记录)
如何为整个网格中的每一行运行相同的东西?
gv.Items.count
也提供10
答案 0 :(得分:4)
我假设这是针对ASP.NET AJAX的RadGrid,但如果我错了,请随时纠正我。
RadGrid只包含当前显示的项目。因此,如果您的页面大小为10,则RadGrid.Items集合中只包含10个项目。
如果您想要访问RadGrid的所有项目,最好的方法是回到原始数据源。因此,如果这是一个DataSet,我只需使用一些服务器端逻辑从该数据中删除项目,然后调用.Rebind()到RadGrid,它将更新Grid以显示当前项目。
但是,如果转到原始数据源不是一个选项,您可以始终将AllowPaging设置为false(在RadGrid的MasterTableView上),调用.Rebind(),执行所有逻辑(RadGrid.Items现在将具有所有项目)然后将AllowPaging设置为true并再次调用.Rebind()。但这样效率会低一些,但可以很好地工作。
最有意义的是返回基础数据。如果您尝试从RadGrid中删除所有数据,为什么不将数据源设置为空数组并调用.Databind()或.Rebind()?比一次删除RadGrid中的所有项目快得多。
答案 1 :(得分:0)
carlbergenhem提出的解决方案很有意义。但是,如果您要从数据库中清除数据,可以通过运行SQL DELETE命令然后重新绑定网格来删除它。
DELETE FROM <<YOUR TABLE NAME>> WHERE <<CONDITION>>