powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Цикл по всем контролам на странице
15 сообщений из 15, страница 1 из 1
Цикл по всем контролам на странице
    #33945726
Yaroslave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Такая задача: есть чекбокс, в зависимости от значения которого блокируются либо разблокируются текстовые поля на странице. Эти действия прописаны в событии CheckedChanged для чекбокса. Но больно уж некрасиво писать 11 практически одинаковых строчек, меняя только свойство enabled на true/false. Как это можно сделать циклом. Пытался и через for и через foreach, примерно так:


foreach(System.Web.UI.WebControls.TextBox ctrl in this.Page.Controls.Count)
                ctrl.Enabled=false;
ругается:foreach statement cannot operate on variables of type 'int' because 'int' does not contain a definition for 'GetEnumerator', or it is inaccessibleи еще, как при обходе в цикле по всем контролам на странице (неважно каким), узнать его тип? Ну подобно как в обычном VB6 мона было так:
if TypeOf.Screen.ActiveForm.ActiveControl Is TextBox...
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33945775
goman01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное надо this.Page.COntrols, Count это количество итемов в коллекции.
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33956275
Yaroslave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное надо this.Page.COntrols, Count это количество итемов в коллекции.

Да, правильно, я просто немного перепутал с for в начале. Но теперь другая загвоздка. Вот такой вот цикл


foreach(System.Web.UI.WebControls.TextBox ctrl in this.Page.Controls)
   ctrl.Enabled=!ctrl.Enabled;

один день поработал, а на следующий день начал выдавать ошибку


Specific Cast Is Not Valid


Что это такое могло случиться?
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33956409
Paulmay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй
foreach(object obj in this.Page.Conlrols)
{
TextBox ctrl = obj as TextBox;
if (ctrl!=null)
ctrl.Enabled=!ctrl.Enabled;
}
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33956425
puhh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или вот так -

foreach (string name in Request.Form.AllKeys)
{
...
}
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33956436
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не все контролы на странице текстбоксы


Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33956444
stror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так наверное не сработает для контролов, которые расположены внутри каких либо контейнеров (таблицы, дивы)
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33956461
Dima_XY3
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну наверное ты добавил контролы и следовательно приведение типо не срабаотывает, попробуй:

foreach(Control ctrl in this.Page.Controls)
  if(ctrl is TextBox)
    ctrl.Enabled=!ctrl.Enabled;
- - - - -
the truth is out there
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33956679
Коллекция контролов иерархическая, рекурсия нужна.Все должно быть просто, очень просто, настолько просто - насколько это возможно!
 Мой блог Возможно на твой вопрос уже есть ответ? FAQ
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33957162
Yaroslave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй
foreach(object obj in this.Page.Conlrols)
{
TextBox ctrl = obj as TextBox;
if (ctrl!=null)
ctrl.Enabled=!ctrl.Enabled;
}

Не работает, поля как были enabled=false, так и остаются в любом случае
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33957164
Yaroslave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну наверное ты добавил контролы и следовательно приведение типо не срабаотывает, попробуй:

foreach(Control ctrl in this.Page.Controls)
if(ctrl is TextBox)
ctrl.Enabled=!ctrl.Enabled;




'System.Web.UI.Control' does not contain a definition for 'Enabled'
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33957166
Yaroslave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не все контролы на странице текстбоксы



Ну да, один чекбокс, по нажатию которого собственно и ставятся поля в enabled/disabled и к каждому полю RequiredFieldValidator.

Хотя вообще-то в foreach явно указано, что проходить надо только по текстбоксам.
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33957626
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
извините, не удержался... ;)
ситуация такая - стоят сто человек, Маше, Пете и Васе пора на работу. Мы знаем где стоят эти люди и вместо того, что бы подойти к ним и просто сказать: "пора на работу" мы оббегаем все сто человек, спрашиваем у них ты не Маша, Петя или Вася и если это так, то говорим что вам пора на работу...
Может как то сгруппировать их (к примеру) и вызывать свойство у группы? Например, группа номер 1 - пора на работу... ;)
автор Но больно уж некрасиво писать 11 практически одинаковых строчек, меняя только свойство enabled на true/false. Как это можно сделать циклом.
ИМХО куда там до производительности - ГЛАВНОЕ КРАСОТА (наверное, потому что она вечна ;)
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33958197
Yaroslave
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
извините, не удержался...

ситуация такая - стоят сто человек, Маше, Пете и Васе пора на работу. Мы знаем где стоят эти люди и вместо того, что бы подойти к ним и просто сказать: "пора на работу" мы оббегаем все сто человек, спрашиваем у них ты не Маша, Петя или Вася и если это так, то говорим что вам пора на работу...
Может как то сгруппировать их (к примеру) и вызывать свойство у группы? Например, группа номер 1 - пора на работу...


Сумму тысячи элементов массива тоже будете считать как arr[0]+arr[1]+arr[2]...?

ИМХО куда там до производительности - ГЛАВНОЕ КРАСОТА (наверное, потому что она вечна

Не спорю, производительность - это очень важно, но кроме этого есть еще такая вещь, как лаконичность кода, а также стилистика написания программы.
...
Рейтинг: 0 / 0
Цикл по всем контролам на странице
    #33958469
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСумму тысячи элементов массива тоже будете считать как arr[0]+arr[1]+arr[2]...?
не надо уходить в сторону и пытаться подменить тему разговора - как то про сумму пока (надеюсь) речь не заходила - хотя я бы не отказался от n-ой суммы (коломбур ;)
авторНе спорю, производительность - это очень важно, но кроме этого есть еще такая вещь, как лаконичность кода, а также стилистика написания программы.

положить на алтарь самолюбия (в виде лаконичности кода и стилистики написания проги) производительность приложения - это очень "хороший тон" - спасибо повеселил... ;)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Цикл по всем контролам на странице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]