La tâche de génération de HTML, de zones de texte ASP et de boutons dans des contrôles créés dynamiquement peut être une question complexe. Heureusement, il existe plusieurs approches que vous pouvez adopter pour y parvenir.
Dans votre exemple, vous générez manuellement du HTML dans le code, puis créez dynamiquement des zones de texte. et des boutons utilisant le cadre de contrôles. Bien que cette méthode fonctionne, elle peut devenir fastidieuse et sujette aux erreurs à mesure que le nombre de contrôles générés augmente.
Pour générer une série de contrôles similaires, tels que en tant que liste de dangers ou de zones, l'utilisation d'un ListView ou d'un DataGrid est une approche recommandée. Ces contrôles fournissent une prise en charge intégrée de la liaison de données, vous permettant de restituer facilement des contrôles basés sur une source de données.
Si vous êtes à l'aise avec le client - côté scripting, vous pouvez utiliser JavaScript ou jQuery pour créer et manipuler dynamiquement des éléments à la volée. Cette approche élimine le besoin de code côté serveur et permet une fonctionnalité plus interactive.
Voici un exemple utilisant un ListView pour générer une liste de dangers au sein d'un élément créé dynamiquement. zones :
private void CreateArea(int areaCount) { // ... existing code // Create a ListView for hazards ListView hazardList = new ListView(); hazardList.ID = "lvHazards" + areaCount; hazardList.DataSource = new string[] { "Hazard1", "Hazard2", "Hazard3" }; hazardList.DataBind += HazardList_DataBind; phHazard.Controls.Add(hazardList); } protected void HazardList_DataBind(object sender, ListViewDataBindEventArgs e) { ListView listView = (ListView)sender; foreach (string hazard in e.DataItem as string[]) { // Create a new DropDownList for the hazard DropDownList ddHazard = new DropDownList(); ddHazard.ID = "ddHazard" + hazard; ddHazard.Items.Add(new ListItem("Hazard1", "Hazard1")); // Create a new TextBox for the hazard description TextBox txtHazardDesc = new TextBox(); txtHazardDesc.ID = "txtHazardDesc" + hazard; // Add the controls to the current ListView item listView.Controls.Add(ddHazard); listView.Controls.Add(new LiteralControl(" ")); listView.Controls.Add(txtHazardDesc); listView.Controls.Add(new LiteralControl("<br />")); } }
Cet exemple montre comment créer un ListView pour afficher une liste de dangers dans chaque zone créée dynamiquement. La liaison de données de ListView est gérée dans le gestionnaire d'événements HazardList_DataBind, où les contrôles sont créés dynamiquement et ajoutés à l'élément ListView approprié.
N'oubliez pas que les contrôles créés dynamiquement devront être recréés à chaque publication de page pour conserver leur état. Pensez à utiliser ViewState ou un mécanisme de mise en cache pour stocker les données associées aux contrôles dynamiques afin d'éviter leur perte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!