按类型迭代InfoPath字段

时间:2011-10-25 11:00:39

标签: c# infopath2010

无论如何都要按类型迭代infopath字段?

在迭代所有日期字段或所有整数字段等等。我正在尝试编写一个在表单后面的代码中执行字段验证的类,因为从后面的代码提交表单时OOTB字段验证不起作用。我想写一个可以用于任何infopath表单的泛型类。感谢。

2 个答案:

答案 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