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;

}

posted @ 2010-12-21 15:32  annpaul  阅读(348)  评论(0编辑  收藏  举报