1

InfoPath 2013 を使用して、多数の infopath フォーム (多くは infopath 2003 で作成されたもの) を SharePoint に移動しています。

私たちが何年もの間フォームを行ってきた方法の特徴の 1 つは、ユーザーがフォームへの入力の進行状況を保存できるようにすることです。infopath では、検証エラーをチェックすることでこれを実現します。フォームが完了していないことを示すノードを xml に設定する理由がある場合は、エラーを保存してクリアし、保存 Web サービスを呼び出してから、エラーを元に戻します。検証エラーのある各ノードの値を、すでに持っている値で設定するだけです。

例: エラーを確認します。

XPathNavigator node =      MainDataSource.CreateNavigator().SelectSingleNode("//my:reportIsValid", NamespaceManager);
if (Errors.Count == 0)
            node.SetValue("1");
        else
            node.SetValue("0");

エラーを保存してクリアします。

System.Collections.Generic.List<FormError> SaveErrors = new System.Collections.Generic.List<FormError>();
SaveErrors.AddRange(Errors.GetErrors(FormErrorType.SchemaValidation));
SaveErrors.AddRange(Errors.GetErrors(FormErrorType.SystemGenerated));
SaveErrors.AddRange(Errors.GetErrors(FormErrorType.UserDefined));


Errors.DeleteAll();

エラーを復元します。

foreach (FormError er in SaveErrors)
   {
     string tempval = er.Site.Value;
     er.Site.SetValue(tempval);
   }

これは infopath では問題なく動作しますが、sharepoint では一部のフォームで失敗するだけで、その理由や回避方法はまだわかりません。

sharepoint では、値を設定しようとすると、restore メソッドが例外を返すことがあります。

これが infopath では 100% の確率で機能するのに、sharepoint では 80% の確率でしか機能しない理由について、何か考えがある人はいますか?

検証を復元するための他のアプローチはありますか?

4

0 に答える 0