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

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

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

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

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 вызывается для каждого элемента. Я знаю, что я делаю что-то не так, но не могу понять это

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

1 Ответ

0 голосов
/ 28 марта 2012

Попробуйте это

удалить

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

            var checkboxtemp = new CheckBox();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...