Passando dados para o código do servidor de um controle do lado do cliente utilizando ASP.NET AJAX

StackOverflow https://stackoverflow.com/questions/252165

Pergunta

Eu tenho um ListView em uma página que exibe uma lista de widgets. Quando um usuário clica em um dos itens na lista, eu quero mostrar um ModalPopup que contém controles que permitem o usuário a operar no item que selecionado.

Eu poderia facilmente fazer isso colocando um painel e um ModalPopupExtender no ItemTemplate do ListView, mas este conjunto uma média de controles ocultos para cada widget, que maciçamente inchaço do tamanho da página. (Não vão ser alguns controles bastante pesado lá.) Em vez disso eu quero reutilizar uma única ModalPopup para cada um dos widgets na lista.

Eu fiz alguma pesquisa, mas eu não encontrei nada que se aplica diretamente para a minha situação antes. Pelo que tenho sido capaz de descobrir, no entanto, eu tenho que fazer algo como isto:

  1. Coloque um painel e um ModalPopupExtender na página dentro de um UpdatePanel.
  2. Criar um controle de usuário WidgetManipulator personalizado que tem uma propriedade WidgetID. Coloque isso no painel, junto com um par OK botões / Cancelar.
  3. Em Javascript na página, anexar um manipulador de clique para cada widget na ListView que desencadeia uma nova postagem no UpdatePanel.
  4. No evento UpdatePanel_Load no servidor, exibir o ModalPopup e defina o propety WidgetID na WidgetManipulator ao ID do widget clicado.
  5. No evento OKButton_Click ou evento CancelButton_Click no servidor, esconder o ModalPopup. Se OKButton foi clicado, chamada WidgetManipulator.SaveChanges() primeiro.

A parte que eu ainda não descobri é: Como diabos eu sei o widget foi clicado, e como faço para passar isso de volta para o servidor quando eu atualizar a UpdatePanel? É este mesmo o caminho certo em tudo?

Foi útil?

Solução

Quando eu preciso para transmitir dados do cliente para o servidor na ASP.NET AJAX, eu geralmente usar um asp: HiddenField com runat = "server". Ambos podem vê-lo livremente, mas cuidado com potencial asynchronicity postagem.

Parece que você precisa para notificar o servidor o widget foi clicado - Você pode usar um timer para postback; ou eu iria com a opção 5.

Outras dicas

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