2010-08-06 7 views
1

Je travaille sur un site Web asp.net (en utilisant C#). J'ai mis en place une vue détaillée dans le cadre d'un système de saisie de données pour ce site Web.Problème avec la génération de contrôle dynamique .net

La vue détaillée contient une liste déroulante permettant d'associer une catégorie à l'enregistrement soumis à ce système de saisie de données.

Le code derrière le fichier accède à un point d'émission (un serveur SQL table de base de données 2005), afin de déterminer les champs associés à une catégorie sélectionnée et génèrent des contrôles case en fonction des champs disponibles dans cette catégorie

Je comprends (Je pense) le cycle de vie de la page .net, et la nécessité d'ajouter des contrôles dynamiques sur chaque publication pour maintenir les contrôles et leur "état". Cependant:

  • J'ai lu que je dois ajouter des contrôles dynamiques dans le Page_Init/phase d'initialisation du cycle de vie de la page, pour que les propriétés de contrôles dynamiques et les événements disponibles sur un postback

  • la valeur que je requiers pour interroger la source de données (et pour déterminer le nombre et les noms des contrôles dynamiques pour une sélection de catégorie) est attribué en cas de liste déroulante SelectedIndexChanged le gestionnaire, qui est toujours traitée après l'événement Page_Init

Je ne sais pas comment je peux passer la valeur requise (l'index sélectionné de la liste déroulante) à l'événement Page_Init au bon moment dans le cycle de vie de la page (l'événement Page_Init).

J'apprécierais énormément les pointeurs/l'aide de la communauté de stackoverflow et je vous remercie d'avoir pris le temps de lire cet article.

Répondre

0

Vous n'avez pas besoin d'ajouter les contrôles dans l'init, vous pouvez également les ajouter dans page_load. Il est souvent recommandé de les ajouter dans l'init car c'est le point dans le cycle de vie de la page que les contrôles définis dans le balisage sont instanciés. Pourquoi avez-vous besoin d'affecter la valeur pour déterminer si les contrôles doivent être ajoutés dans l'événement SelectedIndexChanged. Si elle est basée sur SelectedValue d'une liste déroulante, ne pouvez-vous pas simplement accéder à SelectedValue et affecter la valeur à chaque publication, même si elle n'a pas été modifiée. Ensuite, vous pouvez le faire dans le Page_Load et ensuite ajouter vos contrôles par la suite.

+0

La solution de Ben a fonctionné pour moi. Merci à tous ceux qui ont répondu à ma question, c'est très apprécié. – frank

0

La valeur que vous avez après est publiée sur le serveur et elle peut être trouvée dans Request.Form NameValueCollection. La clé est le nom de la liste déroulante.

Questions connexes