Comment générer de manière dynamique une combinaison de contrôles utilisateur ASP.NET?

StackOverflow https://stackoverflow.com/questions/90878

  •  01-07-2019
  •  | 
  •  

Question

J'ai plusieurs contrôles utilisateur, disons A , B , C et D . Basé sur une entrée aléatoire, je dois générer une combinaison de ceux-ci. Par exemple si l'entrée est 2a3d1a2c , je dois montrer deux des A, puis les 3 D après cela, un A de nouveau, etc.

Je devrai également stabiliser les identifiants pour qu'ils fonctionnent correctement. Parce que chacun de ces contrôles utilise sa propre propriété ClientID pour rassembler les entrées sur eux-mêmes. Par exemple contrôle utilisateur A génère en interne une entrée nommée this.ClientID + "$ input1" et collecte son entrée à partir d'une requête comme Request [this.ClientID + "$ input1"] . Puisqu'il peut y avoir plus d'un A, chaque A doit avoir le même (unique) ClientID après publication pour pouvoir obtenir les entrées correctes de la requête.

Était-ce utile?

La solution

Pour ajouter des contrôles de manière dynamique, vous pouvez utiliser un panneau comme espace réservé, par exemple,

.
<asp:Panel ID="ControlPlaceholder" runat="server" />

Ensuite, vous pouvez ajouter des objets côté serveur comme suit:

int controlCount = 0;

...

TextBox newTextBox = TextBox();
newTextBox.ID = "ctl_" + controlCount++;
ControlPlaceholder.Controls.Add(newTextBox);

Si vous y ajoutez les contrôles au cours de votre événement Page_Load et utilisez une méthode cohérente pour générer les ID des contrôles (tels que le compte simple ci-dessus), toute liaison Viewstate ou événement sera reliée à l'objet de droite sur une publication.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top