Infoapth 2010 选择和设置一组重复节点
若要指定一组不定数量的重复域或组,请使用 XPathNavigator 类的 Select 方法。此方法返回一个 XPathNodeIterator 对象,您可使用该对象来循环访问指定的节点集合。
下面的示例假定您的表单模板包含一个"点符列表",或绑定到名为 field1 的重复元素的类似重复控件。将域的 XPath 传递给 Select 方法,并将返回的 XPathNodeIterator 分配给 nodes 变量。您使用 MoveNext 方法循环访问节点集合,并使用 Current 属性返回位于当前节点上的 XPathNavigator 对象。最后,您使用 Value 属性检索并显示每个重复域的值。
|
|
string message = String.Empty; XPathNavigator root = this.CreateNavigator(); XPathNodeIterator nodes = root.Select("/my:myFields/my:group1/my:field1", NamespaceManager);
while (nodes.MoveNext()) { message += nodes.Current.Value + System.Environment.NewLine; } MessageBox.Show(message); | |
前面的示例使用指定的重复域中的字符串值。但是,如果该域包含数值,则可使用类似代码循环访问该域中的值以进行算术运算,如计算值的总计或平均数。
同样,不必使用 Value 属性来检索重复域的每个实例的值,您可以改为使用 SetValue 方法来循环访问各个域并设置它们的值,如以下示例所示。
|
|
XPathNavigator root = this.CreateNavigator(); XPathNodeIterator nodes = root.Select("/my:myFields/my:group1/my:field1", NamespaceManager); int myInt = 1; while (nodes.MoveNext()) { nodes.Current.SetValue(myInt.ToString()); myInt = myInt + 1; } |