Как запустить обработчик событий только для определенного элемента управления в цикле foreach

Здравствуйте, я установил несколько флажков внутри цикла foreach и добавил их в элементы управления страницей! Я также назначил им один обработчик событий и передал им свой собственный параметр.

Когда срабатывает событие checkedchanged для флажков, оно вызывает этот обработчик событий для всех флажков, которые я добавил. Это может быть связано с тем, что я назначаю обработчик событий внутри для каждого цикла, поэтому всякий раз, когда событие запускается, он запускается для всех флажков! Я хочу, чтобы он запускался только один раз, то есть только для флажка, чей флажок был изменен.

Пожалуйста, помогите мне в этом. Как я могу решить проблему. Фрагменты кода могут помочь вам понять

CheckBox checkboxtemp;

foreach (SPListItem item in list.Items)
        {
            checkboxtemp = new CheckBox();
            checkboxtemp.ID = "CheckBoxId" + item.ID;
            checkboxtemp.Text = item.Title;
            checkboxtemp.AutoPostBack = true;
            checkboxtemp.CheckedChanged += new EventHandler((sender, e) => checkboxtemp_CheckedChanged(sender, e, checkboxtemp.Text));
            Controls.Add(checkboxtemp);
        }

и обработчик событий, который запускается для каждого флажка, выглядит как

protected void checkboxtemp_CheckedChanged(object sender, EventArgs e, string fieldName)
    {
      Label1.Text = fieldName;
    }

Независимо от того, какой флажок установлен. Я всегда получаю последнее текстовое значение флажка внутри параметра fieldName в обработчике событий checkboxtemp_CheckChanged. то есть, когда когда-либо изменяется какое-либо состояние флажка, для каждого элемента вызывается обработчик событий в цикле foreach. Я знаю, что я делаю что-то не так, но не могу понять

Пожалуйста помоги


person Muhammad Usman    schedule 28.03.2012    source источник
comment
является ли item.ID уникальным по всем элементам?   -  person Adrian Iftode    schedule 28.03.2012
comment
да, item.ID уникален для каждого элемента   -  person Muhammad Usman    schedule 28.03.2012


Ответы (1)


Попробуй это

Удалить

CheckBox checkboxtemp;
foreach (SPListItem item in list.Items)
        {

            var checkboxtemp = new CheckBox();
person Adrian Iftode    schedule 28.03.2012