controles RadPanelBar desaparecem após itens adicionados dinamicamente
Pergunta
Eu tenho uma pergunta sobre o controle de Telerik RadPanelBar.
Por exemplo, temos um controle RadPanelBar na forma:
<telerik:RadPanelBar ID="testPanelBar" runat="server">
</telerik:RadPanelBar>
e um botão que adiciona um novo item para este RadPanelBar em tempo de execução:
RadPanelItem newParentItem = new RadPanelItem();
RadPanelItem newChildItem = new RadPanelItem();
newChildItem.Controls.Add(new RadTextBox());
newChildItem.Text = "wazzap";
newParentItem.Items.Add(newChildItem);
languagesPanelBar.Items.Add(newParentItem);
quando eu clicar no botão, novo RadPanelItem é adicionado com todos os controles filho (neste caso, é RadTextBox no item filho)
quando o botão é clicado segunda vez, segundo RadPanelItem é adicionado com todos os controles, mas desta vez
controle RadTexBox desapareceu da primeira RadPanelItem.
E mesmo quando o botão é clicado pela terceira vez, o novo item adicionado com todos os controles, mas RadTextBox irá desaparecer a partir de 1º e 2º itens.
Estou fazendo algo errado quando dinamicamente adicionar itens?
Obrigado!
Solução
Isso acontece porque criados dinamicamente controles adicionados a outros controles criados dinamicamente são perdidos depois de um postback. Você precisa recriá-los em cada carregamento da página. Tanto quanto eu sei que não há solução para este problema. Você pode facilmente reproduzi-lo com a classe página também, em page_load tentar Controls.Add (new TextBox ()); Em seguida, após uma nova postagem, o mesmo código não irá gerar nova (segunda) caixa de texto, mas irá recriar o mais tarde.
itens Todos PanelBar (mesmo aqueles criados dinamicamente) são serializados no cliente e depois de um postback são recriadas no servidor. E é por isso que eles não sejam perdidos. No entanto, o mesmo não se aplica aos controles filho do objeto RadPanelItem.