Pergunta

As tentativas do título para resumir o problema, mas aqui está um resumo mais detalhado: nossa página web é uma coleção de usercontrols, que tornam visualmente como widgets de relatórios retangulares, que são definidos em updatepanels AJAX. Estamos dando ao usuário a capacidade de arrastar e soltar os widgets para pré-definir "zonas" na página.

A funcionalidade de arrastar e soltar funciona bem. Nós usamos chamadas AJAX para um serviço web para atualizar um banco de dados com novas configurações do usuário para persistência.

O "porém" acontece quando fazemos uma nova postagem de um desses widgets. O postback é enviado para o servidor, ele processa uma atualização, que é enviada de volta para o cliente (todos via AJAX, por causa do updatepanel). Em seguida, obter um "Não foi possível encontrar UpdatePanel com ID ..." mensagem no cliente, porque a hierarquia do documento mudou, mas os IDs de controle não foram atualizados no cliente.

Nós tentamos solução de Rick Strahl a esta texto do link, o que nos permitiu criar IDs de controle de estática no cliente. Isso quebra a funcionalidade de postagem, embora ... a propriedade IsPostBack não está definido, estou assumindo porque o servidor não pode coincidir com o ID de controlo com um elemento de hierarquia conhecido.

Nós estamos pensando sobre a possibilidade de redefinir o ID de controle no lado do cliente depois que ele é arrastado e solto, usando Javascript. Obviamente, isso exigiria duplicar algoritmo de nomeação do .Net - não inteligente, nós estamos pensando. Talvez possamos usar um updatepanel separado e pedir ao servidor para enviar a nova identificação de controle depois que ele caiu?

Obviamente, estamos a ficar sem ideias.

Sei que este é, provavelmente, muito tempo, e eu vou alegremente edição, fornecer amostras de código, etc, para ajudá-lo a nos ajudar. Agradecemos antecipadamente.

Foi útil?

Solução

Apenas fora do interesse, você já inspecionou o id do UpdatePanel que envia de volta, e é o ID de um que é esperado? Você pode ligar para o cliente ciclo de vida de página de ASP.NET AJAX como assim para inspecionar o id do controle iniciar a postagem

<script type="text/javascript">

  function pageLoad(sender, args)
  {
      var prm = Sys.WebForms.PageRequestManager.getInstance();

      prm.add_initializeRequest(InitializeRequest);
      prm.add_endRequest(EndRequest);

      //fires when an async postback is initialized
      function InitializeRequest(sender, args) 
      {
        alert(args._postBackElement.id)
      }

      //fires when an async postback is complete
      function EndRequest(sender, args) 
      {
        alert(sender._postBackSettings.sourceElement.id)
      }
  }

</script>

Outras dicas

Você pode usar de ASp.Net construído em sistema de elementos da página arrastáveis ??chamados WebParts.

O sistema funciona com postagens e pode ser facilmente implementado com Visual Studio

Tenha uma pesquisa para webparts tutoriais tais como:

http://www.ondotnet.com /pub/a/dotnet/2005/01/10/liberty.html

Espero que isso ajude

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