我有一个页面,我动态创建一个asp.net表。在某些时候,基于用户输入我需要能够删除表中的所有行并从头开始重新创建它们。当我尝试循环遍历表行并逐个删除它时,我得到以下错误。 “集合已被修改;枚举操作可能无法执行。”
还有其他办法吗?此代码是函数中创建动态行的第一件事。
foreach (TableRow tr in ChecklistQuestionTable.Rows)
{
ChecklistQuestionTable.Rows.Remove(tr);
}
答案 0 :(得分:4)
ChecklistQuestionTable.Rows.Clear();
请参阅MSDN上的HtmlTableRowCollection.Clear
。
使用此方法从HtmlTableRowCollection集合中删除所有HtmlTableRow对象,并将Count属性重置为0.
答案 1 :(得分:0)
尝试添加Cast<TableRow>()
:
foreach (TableRow tr in ChecklistQuestionTable.Rows.Cast<TableRow>())
通常,您无法修改在foreach
中迭代的同一个集合。您可以使用Cast()
和ToList()
这样的技巧来获取反映原始状态的离散集合,然后您可以修改原始集合。