Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Такая задача: есть чекбокс, в зависимости от значения которого блокируются либо разблокируются текстовые поля на странице. Эти действия прописаны в событии 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... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2006, 02:28 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
Наверное надо this.Page.COntrols, Count это количество итемов в коллекции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2006, 05:36 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
Наверное надо 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 Что это такое могло случиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 17:11 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
Попробуй foreach(object obj in this.Page.Conlrols) { TextBox ctrl = obj as TextBox; if (ctrl!=null) ctrl.Enabled=!ctrl.Enabled; } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 17:35 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
Или вот так - foreach (string name in Request.Form.AllKeys) { ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 17:39 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
не все контролы на странице текстбоксы Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 17:42 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
Так наверное не сработает для контролов, которые расположены внутри каких либо контейнеров (таблицы, дивы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 17:44 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
ну наверное ты добавил контролы и следовательно приведение типо не срабаотывает, попробуй: foreach(Control ctrl in this.Page.Controls) if(ctrl is TextBox) ctrl.Enabled=!ctrl.Enabled; - - - - - the truth is out there ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 17:47 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
Коллекция контролов иерархическая, рекурсия нужна.Все должно быть просто, очень просто, настолько просто - насколько это возможно! Мой блог Возможно на твой вопрос уже есть ответ? FAQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2006, 19:04 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
Попробуй foreach(object obj in this.Page.Conlrols) { TextBox ctrl = obj as TextBox; if (ctrl!=null) ctrl.Enabled=!ctrl.Enabled; } Не работает, поля как были enabled=false, так и остаются в любом случае ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 02:19 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
ну наверное ты добавил контролы и следовательно приведение типо не срабаотывает, попробуй: 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' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 02:21 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
не все контролы на странице текстбоксы Ну да, один чекбокс, по нажатию которого собственно и ставятся поля в enabled/disabled и к каждому полю RequiredFieldValidator. Хотя вообще-то в foreach явно указано, что проходить надо только по текстбоксам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 02:23 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
извините, не удержался... ;) ситуация такая - стоят сто человек, Маше, Пете и Васе пора на работу. Мы знаем где стоят эти люди и вместо того, что бы подойти к ним и просто сказать: "пора на работу" мы оббегаем все сто человек, спрашиваем у них ты не Маша, Петя или Вася и если это так, то говорим что вам пора на работу... Может как то сгруппировать их (к примеру) и вызывать свойство у группы? Например, группа номер 1 - пора на работу... ;) автор Но больно уж некрасиво писать 11 практически одинаковых строчек, меняя только свойство enabled на true/false. Как это можно сделать циклом. ИМХО куда там до производительности - ГЛАВНОЕ КРАСОТА (наверное, потому что она вечна ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 10:43 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
извините, не удержался... ситуация такая - стоят сто человек, Маше, Пете и Васе пора на работу. Мы знаем где стоят эти люди и вместо того, что бы подойти к ним и просто сказать: "пора на работу" мы оббегаем все сто человек, спрашиваем у них ты не Маша, Петя или Вася и если это так, то говорим что вам пора на работу... Может как то сгруппировать их (к примеру) и вызывать свойство у группы? Например, группа номер 1 - пора на работу... Сумму тысячи элементов массива тоже будете считать как arr[0]+arr[1]+arr[2]...? ИМХО куда там до производительности - ГЛАВНОЕ КРАСОТА (наверное, потому что она вечна Не спорю, производительность - это очень важно, но кроме этого есть еще такая вещь, как лаконичность кода, а также стилистика написания программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 12:50 |
|
||
|
Цикл по всем контролам на странице
|
|||
|---|---|---|---|
|
#18+
авторСумму тысячи элементов массива тоже будете считать как arr[0]+arr[1]+arr[2]...? не надо уходить в сторону и пытаться подменить тему разговора - как то про сумму пока (надеюсь) речь не заходила - хотя я бы не отказался от n-ой суммы (коломбур ;) авторНе спорю, производительность - это очень важно, но кроме этого есть еще такая вещь, как лаконичность кода, а также стилистика написания программы. положить на алтарь самолюбия (в виде лаконичности кода и стилистики написания проги) производительность приложения - это очень "хороший тон" - спасибо повеселил... ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2006, 13:42 |
|
||
|
|

start [/forum/topic.php?fid=18&tid=1389994]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 387ms |

| 0 / 0 |
