Pergunta

Nós temos uma aplicação ASP.NET com um formulários InfoPath componentes, entregando formulários InfoPath para o navegador usando o InfoPath Forms Server. Em vez de salvar os formulários no SharePoint, nós enviar os dados do formulário XML a um serviço web ASP.NET, que salva os dados como um tipo de dados XML no SQL Server 2005. Esta multa está trabalhando, e não temos problemas de carregar os dados XML de volta para o formulário do InfoPath.

O problema surge quando tentamos carregar dados de idade (a partir da versão 1 do formulário) em uma nova versão do formulário (versão 2). Esta nova versão do formulário (V2) tem um novo campo de caixa de texto, por exemplo. Como o campo V2 não existe no XML V1, eles são visíveis no formulário V2, mas são deficientes e não pode ser preenchido.

A nossa questão é como é que vamos carregar dados XML V1 em formas V2, e que o usuário ser capaz de completar os campos que estão agora presentes em V2 do formulário.

Este comportamento é possível usando o InfoPath Forms Server e formulários armazenados em uma biblioteca de formulários. se você atualizar o modelo de formulário, você pode abrir velhas formas no novo modelo, ver os novos campos, e pode salvar os dados nos novos campos. Precisamos saber como fazê-lo por meio de programação, quando os dados do formulário XML é armazenado no SQL Server, ao invés de uma biblioteca de formulários.

Foi útil?

Solução

Tem sido um tempo desde que eu fiz qualquer coisa InfoPath, então desculpas para este ser um pouco vago:

Parte do modelo InfoPath, que é praticamente apenas um arquivo ZIP com uma extensão diferente, é um arquivo chamado "upgrade.xsl". Este arquivo contém um ou mais XSL transformações que "upgrade" documentos alvejando versões de esquema anteriores.

A pergunta é: Por que a transformação correta obter aplicado em um cenário (Biblioteca / Form SharePoint) e não na outra (serviço de web)? É o segundo processo possivelmente perder o tag que o InfoPath usa para saber a versão do esquema que o documento de origem é alvo? Eu acredito que a tag eu estou me referindo é o "? Mso-infoPathSolution" tag (atributo "solutionVersion").

Se esta marca for de fato sendo retirados do documento (e você não pode facilmente impedi-lo), você pode precisar de aplicar a transformação XSL apropriada "manualmente". Claro, se houver várias versões que você está lidando, pode ser difícil determinar quais são as necessidades de transformação a ser aplicada em qualquer caso.

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