Не могу найти флажок в веб-форме

Я пытаюсь найти флажок в моей веб-форме, но не могу? Всегда установлено значение NULL? Я пробовал разные подходы (я установлен через цикл FOR, я также использую мастер-страницу):

CheckBox cb = (CheckBox)this.FindControl("ctl00_ContentPlaceHolder1_sa" + i.ToString());

CheckBox cb = (CheckBox)Page.FindControl("ctl00_ContentPlaceHolder1_sa" + i.ToString());

CheckBox cb = (CheckBox)Parent.FindControl("ctl00_ContentPlaceHolder1_sa" + i.ToString());

... так же как...

CheckBox cb = (CheckBox)this.FindControl("sa" + i.ToString());

CheckBox cb = (CheckBox)Page.FindControl("sa" + i.ToString());

CheckBox cb = (CheckBox)Parent.FindControl("sa" + i.ToString());

Есть идеи?

3 ответа

Решение

Я установил флажки внутри панели и смог получить к ним доступ с помощью Panel1.FindControl согласно @linuser.

По ощущениям как быстрая фиксация, но это работает.

Вы можете попробовать этот код:

foreach ( Control c in Panel1.Controls )
{
    CheckBox cb = c as CheckBox;
    if(cb!=null)
    {

    }
}

Здесь Panel1 содержит все флажки.. спасибо.

Findcontrol работает с идентификатором, а не сгенерированным идентификатором на стороне клиента (как выглядит ваш первый блок кода).

Используйте Findcontrol для родительского объекта (не всегда необходимо, если я прав). Если флажок находится в теле страницы, используйте Page.FindControl или this.FindControl. Когда он находится в виде списка, используйте его в соответствующем событии.

Другие вопросы по тегам