I ont un contrôle utilisateur personnalisé un peu complexe, créé en C# .NET, qui est essentiellement une structure arborescente. Le contrôle, ctlGroup, contient une liste de champs (qui sont également des contrôles utilisateur personnalisés - ctlFields) et une liste de groupes enfants. Le datalist contenant les groupes d'enfants crée de nouvelles instances du même contrôle ctlGroup, parce que chacun des enfants peuvent avoir une liste de champs et une liste des enfants, et ainsi de suite. Ouf.Maintenir les paramètres de visibilité par le biais de la persistance dans les contrôles créés dynamiquement
Le nombre d'enfants de chaque groupe peut avoir est fini, et chaque groupe d'enfants est une entrée dans une base de données, récursion infinie est impossible. Les contrôles sont bien créés et affichés correctement, jusqu'à ce qu'un post-retour se produise. J'ai été en mesure de conserver toutes les données relatives à chaque contrôle créé de manière dynamique lors de la publication, à une exception près. La partie avec laquelle je suis en difficulté consiste à maintenir la visibilité de certains panneaux sur les commandes par le biais de la publication. Chaque groupe d'enfants possède un bouton qui se dilate et réduit une partie du corps. Je peux effondrer cette partie une fois, mais dès que je clique sur le bouton nouveau (à savoir provoquer une postback), le contrôle est conservé et il est précédent paramètre de visibilité est perdue.
me semble être aux prises avec venir avec un moyen de stocker ces informations. J'ai essayé d'enregistrer l'état de la visibilité dans le viewstate, mais il semble que cette information ne se répète pas lorsque le contrôle est recréé.
Est-ce que quelqu'un a des idées sur la façon de le faire? Est-ce que je manque quelque chose?
edit: Je devrais préciser que les contrôles ctlGroup qui sont créés dans le datalist sont créés dynamiquement car ce sont des appels récursifs. Je ne connais pas d'autre moyen d'appeler un contrôle de lui-même, mais si c'est un meilleur moyen, j'aimerais l'entendre.
Intéressant, je vais essayer ça. Merci. –
@Heap - N'oubliez pas de marquer le message comme "accepté" si c'est le chemin que vous prenez. Cela aide les autres à chercher le même sujet. – TheCloudlessSky