É armazenar uma matriz de objetos em ASP.NET ViewState a melhor solução para isso?

votos
2

Eu estou querendo saber se armazenar os dados em estado de visualização é uma boa idéia para este determinado problema. Ele é um exemplo simplificado do que estou tentando alcançar, em primeiro lugar, temos um controle Repeater:

<asp:Repeater id=Repeater1 runat=server>
<ItemTemplate>
<asp:TextBox id=Name runat=server />
<asp:TextBox id=Age runat=server />
</ItemTemplate>
</asp:Repeater>
<asp:TextBox id=NewPersonName runat=server />
<asp:TextBox id=NewPersonAge runat=server />
<asp:Buttin id=Button1 runat=server Text=Add OnClickButton1_Click/>

Para manter as coisas simples, eu vou renunciar o código de ligação de dados, como isso está funcionando ele carrega na lista atual de pessoas e idades e liga-se perfeitamente.

O problema é com a parte inferior 3 controles, o que eu quero é para que o usuário seja capaz de digitar uma nova entrada, clique no botão Adicionar e este seria, então, adicionado ao repetidor, mas não persistiu ao banco de dados.

O usuário deve ser capaz de adicionar vários nomes à lista e clique em um botão Salvar para confirmar todos os novos nomes em um clique em vez de cometer para cada entrada.

Publicado 09/12/2008 em 19:49
fonte usuário
Em outras línguas...                            


4 respostas

votos
1

Eu lidar com isso em uma de duas maneiras. A primeira seria matrizes JS e fazer clientside adicionando à / mecanismo de visualização de repetidor.

A outra opção seria ter uma tabela no meu DB onde eu armazenar esses acréscimos não confirmadas, e depois é só consultá-los de volta para fora.

e na verdade eu provavelmente fazer uma combinação dos dois. Use AJAX para enviar os dados para a tabela de lista não confirmada de forma assíncrona, enquanto eu estou construindo os novos nós para o meu visor.

No botão Salvar / COMMIT, eu enviar o comando de consolidação para o servidor de forma assíncrona que move itens do usuário do descompromissado tableto tabela comprometido.

Respondeu 09/12/2008 em 20:10
fonte usuário

votos
1

Eu usaria javascript e armazená-lo em arranjos de objetos. Em seguida, o lado do cliente faria referência as matrizes de JavaScript para a construção da interface do usuário.

Você pode dar uma olhada em alguns dos frameworks JavaScript como yui yahoo, script.aculo.us, jQuery, etc.

Respondeu 09/12/2008 em 20:01
fonte usuário

votos
1

Eu usaria um objeto DataTable e armazená-lo na sessão do usuário. Dessa forma, você tem uma maneira rápida de ligação de dados a sobre cada adicionar / modificar / excluir e você pode simples limpá-lo da sessão quando o processamento é feito. Além disso, você pode facilmente acessar a lista de usuários em uma página separada se fosse considerado necessário.

EDIT: Outra ressalva é que, se necessário, você pode facilmente cair uma DataView em cima disso é que você precisa fazer algumas rápidas triagem / filtragem da lista de usuários.

Respondeu 09/12/2008 em 19:59
fonte usuário

votos
1

Você está persistindo a lista inteira do banco de dados no estado de visualização ou apenas as adições não confirmadas?

Se é apenas as adições, então este é um bom uso de viewstate.

Se a lista do DB não é muito grande ou volátil, então eu acho que seria OK, também.

Respondeu 09/12/2008 em 19:58
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more