Pergunta

Im adicionando caixas de texto (não um número fixo de caixas de texto) dinamicamente a um formulário na página ASP.NET, como faço para ler os dados de volta a partir dessas caixas de texto?

Foi útil?

Solução

Assumindo que você está querendo acessar os controles sobre a postagem que você provavelmente recriar os controles dinâmicos exatamente como foram criados sobre a carga inicial, em seguida, usar o método FindControls da página para localizar os controles. Seria provavelmente ajuda para criar as caixas de texto com IDs como Textbox1, Textbox2, etc.

Outras dicas

Olhe para Request.Params e extraí-los de lá. Você vai, naturalmente, tem que dar-lhes IDs para ser capaz de distingui-los.

De tudo o ASP.NET aplicativos que eu tenho trabalhado com, .NET gosta de usar o seguinte algoritmo ao gerar o ID para controles de servidor:

ctl00$cphBody$[ControlID]

Tente usar este algoritmo ao acessar seus dados das caixas de texto geradas dinamicamente.

Quando você adiciona-los você deve estar dando-lhes nomes / ids, e você pode usá-los para fazer referência a eles.

Se não, passear com o DOM em javascript para encontrá-los dentro da forma que você fez - eles estarão na mesma ordem que você inseriu-los.

Por fim, eles estão todos disponíveis como post / obter entradas para sua página, então você deve ser capaz de olhar para todos eles, desde que você atribuiu-lhes nomes diferentes.

-Adam

Ao criar caixas de texto dinamicamente (presumivelmente usando JavaScript, mas mesmo vale para controles ASP.NET) dar-lhes nomes em um padrão específico. O que você vai ser capaz de reconhecer mais tarde.

No lado do servidor, em qualquer manipulador de evento que ocorreu após Page_Init você pode iterar Request.Form coleção.

Não fique tentado a usar Request.Param porque ele pode ser usado para aplicar cross-site request forgery em seu aplicativo (um invasor poderia atrair usuários para emitir um pedido GET que sua aplicação iria interpretar a mesma que iria interpretar um POST um, o que geralmente não é uma coisa boa).

Se você estiver adicionando controles ASP.NET dinâmico (em Page_Render por exemplo) você pode também reconstruir controles e usar suas propriedades.

Você pode usar FindControl e passar o ID de caixa de texto para obter uma instância da caixa de texto quando volta post. A propriedade de texto contém os dados, uma vez que estamos em fase de carregamento da página ou no final do ciclo. Quando a adição de controlos dinâmicos, substituir o método CreateChildControls e adicionar os controles dinâmicos a hierarquia de controlo nesta fase do ciclo.

Lembre-se que em ASP.Net, cada nova postagem é uma nova instância de sua classe. Se você criou esses controles durante uma postagem anterior ou na primeira vista, então eles foram lixo coletado com o resto da instância anterior. Então, para usar os controles nesta nova instância, você precisa criá-los novamente. Se você precisar de informações sobre o estado carregado para esses controles (incluindo qualquer valor inserido pelo usuário), você também precisa criar antes o viewstate é carregado, ou seja, você fazê-lo durante o evento Init, ao invés do carga evento.

Para criar controles dinâmicos, eu normalmente usaria um controle de espaço reservado ASP.NET e adicionar os controles dinâmicos para este recipiente.

Eu daria a cada controle dinâmico de um ID.

Você pode, então, posteriormente, usar FindControl sobre o espaço reservado para acessar os controles dinâmicos.

Eu digo "controles dinâmicos" para controles significa que você adicionar em tempo de execução

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