0

我有一个 InfoPath 2010 表单,它创建了一个新的 Sharepoint 列表项。该表单本质上具有一个输入字段和一个输出字段。如果在输入字段中输入了某些内容,则会执行一些计算,我希望结果显示在输出字段中。由于计算有点复杂,我需要在代码中进行,而不是通过规则。

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

如果是浏览器启用的表单,请确保您已将“回发设置”设置为刷新“始终”

要执行此操作,请单击要触发回发的控件。(在你的情况下服务价值)。转到浏览器表单选项卡并将回发设置设置Always

于 2013-02-06T10:10:45.880 回答