Como gerar dinamicamente combinação de controles de usuário ASP.NET?
-
01-07-2019 - |
Pergunta
Eu tenho vários controles de usuário, digamos A
, B
, C
e D
. Com base em alguns entrada aleatória, preciso gerar uma combinação destes. Por exemplo se a entrada é 2a3d1a2c
eu preciso mostrar dois do a, 3 D's depois disso, um A de novo, etc.
Eu também terá de estabilizar clientid está em ordem para que eles funcionem corretamente. Porque cada um desses controles usar sua própria propriedade ClientID
para reunir as entradas em si mesmos. Por exemplo controle do usuário Um gera internamente uma entrada chamada this.ClientID + "$input1"
, e reúne sua entrada a partir do pedido como Request[this.ClientID + "$input1"]
. Como pode haver mais de um A, cada um, um precisa ter a mesma (unique) ClientID
após postback a fim de obter entradas corretas a partir de solicitação.
Solução
Para adicionar controles dinamicamente, você pode usar um painel como um local reservado, dizem
<asp:Panel ID="ControlPlaceholder" runat="server" />
Em seguida, no lado do servidor, você pode adicionar objetos a ele assim:
int controlCount = 0;
...
TextBox newTextBox = TextBox();
newTextBox.ID = "ctl_" + controlCount++;
ControlPlaceholder.Controls.Add(newTextBox);
Se você adicionar os controles para ele durante o seu evento Page_Load e usar um método consistente de gerar IDs dos controles (como a da contagem simples acima), então qualquer viewstate ou eventos ligações será re-ligado ao objeto direito sobre uma nova postagem.