Коллекция была изменена, операция перечисления может не выполняться в списке данных

Я получаю сообщение об ошибке, когда пытаюсь запустить событие после нажатия кнопки, которая находится за пределами списка данных.

Ошибка отображается для каждого оператора: коллекция была изменена, операция перечисления может не выполняться.

protected void btnSaveGrid_Click(object sender, EventArgs e)
    {
        foreach (DataListItem item in dlPl.Items)
        {            

                CommandEventArgs commandArgs = new CommandEventArgs("SaveGrid", btnSaveGrid);
                DataListCommandEventArgs repeaterArgs = new DataListCommandEventArgs(item,btnSaveGrid, commandArgs);
                dlPl_ItemCommand(btnSaveGrid, repeaterArgs);

       }



      protected void dlPl_ItemCommand(object source, DataListCommandEventArgs e)
            {
                if (e.CommandName == "SaveGrid")
                {
    //Some work
    }

}

Может кто-нибудь помочь мне?


person Satish Devadiga    schedule 01.03.2013    source источник


Ответы (1)


Вы не можете изменять коллекцию во время ее перечисления. dlPl_ItemCommand изменяет dlPl.Items, что недопустимо. Если вы переместите DataBind за пределы цикла, это должно сработать.

person Sajeetharan    schedule 01.03.2013
comment
я попытался установить внешний цикл, но он показывает ошибку Ошибка. Имя «repeaterArgs» не существует в текущем контексте. - person Satish Devadiga; 01.03.2013
comment
Попробуйте создать метод получения списка и привязки внутри события. - person Sajeetharan; 01.03.2013