我有一个 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),结果为零。我还尝试将结果分配给另一个字段,从而触发“设置字段值”规则,但也无济于事。
如果我提交表单,输出值会保存好,但我真的希望用户在提交之前看到输出字段。
有任何想法吗?多谢。