如何用代码对repeating section控件新增Item(InfoPath)
在做項目的時候,有一個場景,當用戶切換不同選項時(radio button),repeating section會隨著切換而變換兩種狀態1:刪除所有item. 2.新增而且只新增一個item.
對于刪除比較容易,但對于從沒有任何一個item狀態下,新增一個item,來講,在網上找了很久,也沒有找到合適的解決辦法。經過幾次試驗,終于有了一個比較理想的解決方案。即用臨時變量存放section item的xml。然后當狀態切換時,用代碼AppendChild(xml)來動態新增一個item.
infopath form的dataSource如下結構:
-myFields
? |-group1
??? |-group2
????? |-field1
????? |-field2
刪除:
?
??????????? XPathNavigator domNav = MainDataSource.CreateNavigator();
??????????? XPathNodeIterator it = domNav.Select("/my:myFields/my:group1/my:group2", NamespaceManager);
??????????? while (it.Count > 0)
??????????? {
??????????????? it.MoveNext();
??????????????? it.Current.DeleteSelf();
??????????????? it = domNav.Select("/my:myFields/my:group1/my:group2", NamespaceManager);
??????????? }
?
新增 :
?
? 1),用臨時變量存放section item的xml. 注意:如果是web based的,要用session來存放這個變量
?
??????? private object _NodeXml
??????? {
??????????? get
??????????? {
??????????????? return FormState["_nodeXml"];
??????????? }
??????????? set
??????????? {
??????????????? FormState["_nodeXml"] = value;
??????????? }
??????? }
?
?????? public void FormsEvents_Loading(object sender,LoadingEventArgs e)
????? {
??????????? XPathNavigator pare = domNav.SelectSingleNode("/my:myFields/my:group1/my:group2", NamespaceManager);
??????????? if (pare != null)
??????????? {
??????????????? _NodeXml= pare.OuterXml;
??????????? }
????? }
?
???? 2)在另外的事件下面:
??????????? XPathNavigator domNav = MainDataSource.CreateNavigator();
??????????? XPathNavigator pare = domNav.SelectSingleNode("/my:myFields/my:group1", NamespaceManager);
??????????? pare.AppendChild(_NodeXml);
轉載于:https://www.cnblogs.com/sdikerdong/archive/2012/10/31/2747883.html
總結
以上是生活随笔為你收集整理的如何用代码对repeating section控件新增Item(InfoPath)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python】Python中对目录路径
- 下一篇: 调了 好几天的问题 treeview 的