0

新しい SharePoint リスト アイテムを作成する InfoPath 2010 フォームがあります。基本的に、フォームには 1 つの入力フィールドと 1 つの出力フィールドがあります。入力フィールドに何かが入力されると、なんらかの計算が実行され、その結果が出力フィールドに表示されます。計算はやや複雑なので、ルールではなくコードで行う必要があります。

private void CalculateOutput()
{
    XPathNavigator main = MainDataSource.CreateNavigator();
    XPathNavigator service = main.SelectSingleNode("my:meineFelder/my:serviceValue", NamespaceManager);
    double serviceValue = service.ValueAsDouble;
    double output = 3*serviceValue;   // much abbreviated version

    // output now has the correct value
    XPathNavigator outputNav = main.SelectSingleNode("my:meineFelder/my:output", NamespaceManager);

    //Remove the "nil" attribute (otherwise we get an error when the field is a double instead of a string)
    if (outputNav.MoveToAttribute("nil", "http://www.w3.org/2001/XMLSchema-instance"))  outputNav.DeleteSelf();

    outputNav.SetValue(output.ToString());
 }

私の問題は、InfoPath プレビューではすべて正常に動作しますが、フォームを展開してブラウザで実行すると、出力フィールドが更新されないことです。つまり、計算結果が表示されません。

.ReplaceSelf (OuterXML を使用) を試しましたが、結果はゼロでした。また、結果を別のフィールドに割り当てて、「フィールド値の設定」ルールを起動して遊んでみましたが、これも役に立ちませんでした。

フォームを送信すると、出力値は問題なく保存されますが、送信する前にユーザーに出力フィールドを見てもらいたいです。

何か案は?ありがとう。

4

1 に答える 1

0

ブラウザ対応フォームの場合は、「ポストバック設定」を「常に」更新するように設定していることを確認してください。

これを正しく行うには ポストバックがトリガーされるコントロールをクリックします。(あなたの場合はサービス値)。Browser Formsタブに移動し、 Postback Settingを に設定しAlwaysます。

于 2013-02-06T10:10:45.880 に答える