У меня есть панель обновления, и мне нужно удалить все элементы управления, которые я динамически добавил, поэтому я могу повторно добавить их в AsyncPostBack. Каждый раз, когда я пытаюсь это сделать, я получаю сообщение об ошибке: «Коллекция была изменена, операция перечисления не может выполняться». Ниже приведен код, который я использую, чтобы попытаться удалить LiteralControls; как только я выясню проблему, мне придется удалить другие типы. Кто-нибудь есть какие-либоДинамическое удаление элементов управления из панели обновления.
foreach(Control xxl in UpdatePanel1.ContentTemplateContainer.Controls.OfType<Control>())
{
Label2.Text = Label2.Text + xxl.GetType();
foreach (LiteralControl lc in UpdatePanel1.ContentTemplateContainer.Controls.OfType<LiteralControl>())
{
LiteralControl myLit = (LiteralControl)lc;
UpdatePanel1.ContentTemplateContainer.Controls.Remove(myLit);
UpdatePanel1.Update();
}
}
Не делайте foreach, делайте a, с индексом и считайте назад –
Если вы удалите элементы во время перечисления цикла, вы получите исключение. – Greg