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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top