无论如何都要按类型迭代infopath字段?
在迭代所有日期字段或所有整数字段等等。我正在尝试编写一个在表单后面的代码中执行字段验证的类,因为从后面的代码提交表单时OOTB字段验证不起作用。我想写一个可以用于任何infopath表单的泛型类。感谢。
答案 0 :(得分:1)
您不能仅通过InfoPath表单的XML来执行此操作
您必须依赖myschema.xsd(您可以通过将xsn文件重命名为cab并将其解压缩或从发布菜单中选择“导出源文件”来获取此文件)。既然您已拥有xsd文件,并且在InfoPath表单中字段的名称是唯一的,您可以执行以下操作:
1-从InfoPath表单中获取字段的名称
2-检查myschema.xsd文件中该字段的数据类型
3-进行验证。
简而言之,myschema.xsd文件存储数据类型
<xsd:element name="CurrentAccount" nillable="true" type="xsd:boolean"/>
但InfoPath表单只是存储可能转换为多种数据类型的值(我只是将其视为字符串)
<my:CurrentAccount>false</my:CurrentAccount>
答案 1 :(得分:0)
很有可能与Linq有关。例如。你有一个对象列表,你可以在其中放置不同的东西,但你只是迭代字符串:
var fields = new List<object>();
fields.Add(42);
fields.Add("one");
fields.Add(84);
fields.Add("two");
foreach (string s in fields.OfType<string>())
{
Debug.Print(s);
}
您将进入输出窗口:
one
two