Pergunta

Say você recuperar 100 registros, e exibi-los em uma página. O usuário só atualiza 2 dos registros na página. Agora você deseja atualizar somente os dois registros, e não os outros 98.

É melhor ter um submeter na página, em seguida, de alguma forma, sabe quais 2 são atualizados, em seguida, enviar somente os dois para o db para uma atualização?

O que faz o olhar "de alguma forma" como?

Ou, se você tem um update-botão enviar para cada linha, e ter apenas atualizar o registro sua amarrado a?

Foi útil?

Solução

Claro que existem diferentes maneiras que você poderia fazer isso. Em geral, você pode salvar-se alguns problemas e do lado do servidor de processamento usando Javascript para montar seus dados POST para apenas os registros que foram alterados. Dois pensamentos sobre como este trabalho poder:

1) Vá a rota ajax e fazer vivo -Editar. Assim, os registros são apresentados em uma tabela e parecem ser não editável. Quando um usuário clica em uma determinada linha, essa linha torna-se editável usando Javascript para criar o formulário HTML apropriado na mosca. Então, um botão ou algum outro manipulador de enviar (por exemplo, mover o foco para outra linha da tabela) que irá acionar o POST que atualiza o DB (de forma assíncrona através do seu método de ajax preferido). Felizmente os principais frameworks JavaScript pode ajudar muito nesta área.

2) caixas de seleção - sempre que uma linha é editada, sua caixa de seleção fica marcada. Quando o botão submit é clicado, o uso javascript para enviar os dados POST, agarrando tudo em linha cuja caixa de seleção está marcada. check-un Um usuário pode uma caixa para cancelar as alterações a essa linha antes de enviar.

Outras dicas

Ajax-lo usando jQuery ou alguma outra biblioteca JavaScript e colocar e botão de atualização em cada linha.

Existem muitas respostas para essa pergunta e, em certa medida eles dependem de suas ferramentas de desenvolvimento e a "sensação" do site.

Se você estava implementação Ajax chama para fazer as atualizações em uma linha por linha, em seguida, isto logicamente parece direito de ter um botão por linha e, em seguida, atualizá-lo com uma chamada Ajax quando uma linha foi alterado.

Esta é também apenas o cenário que conjuntos de dados desconectados foram projetados para resolver e ADO.net lida com estes muito bem.

Então, como sempre, a resposta é "depende!"

Você pode usar JavaScript para marcar cada campo como mudou quando um usuário muda de um campo de entrada. Criar um campos ocultos que tem o ID da linha que você está atualizando, e bandeira suja. (Como $ id is_dirty_) Em JavaScript, criar um manipulador de onChange que define o campo escondido tão sujo. quando qualquer entrada é alterado.

campos Alternativamente, você pode criar escondidas para cada campo real, você mostrar. o campo escondido conteria os valores iniciais. verificar cada campo no lado do servidor para determinar o que mudou.

Você provavelmente vai querer armazenar uma data last_modified como um campo oculto para cada registro. Dessa forma, se outro usuário atualiza o mesmo registro, você pode exibir uma mensagem de erro dizendo "este registro foi atualizado por outro usuário" ou similar.

Um botão enviar. Eu poderia prever caso eu poderia usar mais de um, mas no caso geral apenas um. (Note, esta parece ser uma questão página web para mim, então eu estou respondendo com essa suposição.)

Existem 3 formas que vêm à mente que você poderia lidar com as mudanças de rastreamento:

JavaScript: Coloque uma função onChange () sobre os controles que atualizar um campo escondido. Se isso escondido tem um valor, em seguida, atualizar o registro associado. Requer JS no navegador, e não dizer-lhe quais os campos a atualização, apenas quais registros.

Muitos dos campos do formulário: Coloque um campo escondido com cada controle e compará-los todos quando eles voltam. Isso seria feio, mas permitiria que você saiba quais campos para atualização (e não apenas o registro). Também permitiria que você saiba se alguém abriu uma mudança que começou.

Sessões: Você poderia colocar os valores originais em variáveis ??de sessão, em seguida, fazer a comparação quando os valores voltar. Este seria um pouco mais elegantes lotes depois de campos ocultos, e menos aberto a pessoas brincando com os dados de volta destacados (desde que você deve nada nunca mais a confiança que vem de volta, mesmo em campos ocultos). Requer que os cookies no navegador e sessões sobre a tecnologia de servidor.

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