У меня есть несколько сложный пользовательский элемент управления, созданный в C # .NET, который по сути является древовидной структурой.Элемент управления ctlGroup содержит список полей (которые также являются пользовательскими элементами управления - ctlFields) и список дочерних групп.Список данных, содержащий дочерние группы, создает новые экземпляры того же элемента управления ctlGroup, поскольку каждый из дочерних элементов может иметь список полей и список дочерних элементов и т. Д.Вот так.
Количество дочерних элементов в каждой группе конечно, и каждая дочерняя группа является записью в базе данных, поэтому бесконечная рекурсия невозможна.Элементы управления создаются и отображаются нормально, пока не произойдет постбэк.Мне удалось сохранить все данные, относящиеся к каждому динамически созданному элементу управления, довольно хорошо, за исключением обратной отправки.Часть, с которой у меня возникают проблемы, - это поддержание видимости определенных панелей на элементах управления с помощью обратной передачи.У каждой дочерней группы есть кнопка, которая расширяет и сворачивает часть тела.Я могу свернуть эту часть один раз, но как только я снова нажму кнопку (т.е. вызову обратную передачу), элемент управления сохранится, и его предыдущая настройка видимости будет потеряна.
Кажется, мне трудно найти способ хранить эту информацию.Я попытался сохранить состояние видимости в состоянии просмотра, но, похоже, эта информация не переносится при повторном создании элемента управления.
У кого-нибудь есть идеи, как это сделать?Я что-то упустил?
edit: Я должен уточнить, что элементы управления ctlGroup, созданные в списке данных, создаются динамически, потому что они являются рекурсивными вызовами.Я не знаю другого способа вызвать элемент управления из себя, но если бы это был лучший способ, я бы с удовольствием его услышал.