Пытаюсь на странице прятать\показывать группу элементов. Collapse true\false не помогает, не разворачивается почему-то. Прятать\показывать элементы тоже ерунда, как показываю - все наезжают друг на друга. Есть какой-нибудь способ это сделать ?
Нравится
Здравствуйте, Михаил!
Подскажите, каким образом Вы меняете значение свойства Collapse?
По изменению значения одного из полей устанавливаю Page.ControlLayout.Collapse = false
Михаил, для динамического изменения свойств контрола необходимо использовать функцию Page.ScriptManager.AddScript(). Например,
function onCountryChange(object sender, EventArgs e) { Guid countryUId = Page.CountryLookupEdit.Value; Guid sityUId = Page.GetCaptitalByCountryUId(countryUId); Page.CapitalLookupEdit.SuspendAjaxEvents(); // Отключаем стандартную обработку событий на сервере Page.AddScript(string.Format("{0}.setValue('{1}')", Page.CapitalLookupEdit.ClientID, Json.Serialize(sityUId))); Page.CapitalLookupEdit.ResumeAjaxEvents(); // Восстанавливаем стандартную обработку событий на сервере }
Написал по аналогии с примером.
Page.ControlLayoutRealty.SuspendAjaxEvents();
Page.AddScript(string.Format("{0}.setValue('{1}')",
Page.ControlLayout.Collapse, Json.Serialize(false)));
Page.ControlLayoutRealty.ResumeAjaxEvents();
Получаю ошибку : Terrasoft.UI.WebControls.Controls.ControlLayout не содержит определение для "Collapse" и т.д.....
Что я не так делаю ?....
Исправил на
Page.ControlLayoutRealty.SuspendAjaxEvents();
Page.AddScript(Page.ControlLayout.ClientID + ".Collapsed=false");
Page.ControlLayoutRealty.ResumeAjaxEvents();
ошибок нет, но группа не разворачивается
Михаил, думаю нужно использовать первый вариант, в котором Вы допустили опечатку:
Page.ControlLayout.Collapse, Json.Serialize(false)));
в Collapse. Должно быть Collapsed.
Также попробуйте убрать строки
Page.ControlLayoutRealty.SuspendAjaxEvents(); Page.ControlLayoutRealty.ResumeAjaxEvents();
Использовал
Page.AddScript(string.Format("{0}.setValue('{1}')",
Page.ControlLayout.Collapsed, Json.Serialize(false)));
ошибок нет, но и не работает. Внутри этой группы есть еще две - с этим может быть связано ?
Сейчас по умолчанию на группе ControlLayout и двух вложенных стоит галка на пункте Свернуть.
Соответственно по событию прописываю для каждой группы Page.ControlLayout.Collapsed, Json.Serialize(false). Но ничего не происходит, разворачиваться не хотят.
Михаил, каждый контрол на странице доступен по уникальному идентификатору, который формируется так: "PageContainer_страницаНаКоторойРасположенКонтрол_ИмяКонтрола".
Для управления свойством Collapsed используются методы collapse(), expand() и toggleCollapse().
Пример сворачивания для ControlLayout, который расположен на AccountsModulePage:
Page.AddScript("PageContainer_AccountsModulePage_ControlLayout1.collapse();");
Также у ControlLayout есть свойство "Отображать кнопку сворачивания", которое также можно использовать для сворачивания.
Написал :
Page.AddScript("PageContainer_LeadEditPage_ControlLayoutRealty.expand();");
ControlLayoutRealty по умолчанию свернут, название страницы LeadEditPage.
Не разворачивает все равно.
Спасибо за помощь !
Использование PageContainer_ControlLayoutRealty помогло частично - теперь, если по умолчанию контрол развернут, то сворачивается, но не разворачивается обратно.
Действие на событие Значение изменено контрола. Далее в дизайнере процессов задание-сценарий :
if (Page.LookupEdit1.Value.ToString() == "c7046958-ef32-459a-be31-2bf591fd940c") {
Page.AddScript("PageContainer_ControlLayoutRealty.expand();");
Page.AddScript("PageContainer_ControlLayout13.expand();");
Page.AddScript("PageContainer_ControlLayout14.expand();");
} else {
Page.AddScript("PageContainer_ControlLayoutRealty.collapse();");
Page.AddScript("PageContainer_ControlLayout13.collapse();");
Page.AddScript("PageContainer_ControlLayout14.collapse();");
}
return true;
Соответственно сворачивание отрабатывается, а вот разворачиваться - никак.
Михаил, проблема в условии. Для сравнения с Guid лучше использовать приведение типов. Во-первых, проверьте, что возвращает Page.LookupEdit1.Value (тот ли Guid, с которым идет сравнение).
Во-вторых, попробуйте использовать такое сравнение:
if ((Guid)Page.LookupEdit1.Value == new Guid ("c7046958-ef32-459a-be31-2bf591fd940c"))
Что интересно, условие срабатывает, я для контроля меняю текстовое поле, но сворачивание идет, а разворачивание - нет.
Михаил, тогда сложно сказать, в чем причина.
Попробуйте еще использовать toggleCollapse() для проверки работоспособности.
Если проблема не решится, можно организовать удаленное подключение для анализа и исправления.