2010-03-01 84 views
1

我正在將InfoPath 2003對象模型代碼轉換爲InfoPath 2007託管代碼,我想將一個屬性和childNodes添加到表單加載事件(FormEvents_Loading) 。我想更新以下部分:InfoPath 2007 - 通過託管代碼添加屬性和childNodes

我是一個屬性添加到mstns:SpecificBook節點和幾個子節點。結果應該是:



我的InfoPath 2003對象模型代碼

添加和設置屬性值:

標誌= TheXDocument.DOM.createAttribute (「active」) prereqsNode.attributes.setNamedItem(flagNode).text = 「真」

newNode = doc.CreateNode(NodeTypeElemt,FromNamespacePrefix, 「書」,FormNamespace)

 specificBookAttrib = newNode.OwnerDocument.CreateAttribute("BookId") 
     specificBookIdAttrib.Value = 「anybook」 
     newNode.Attributes.Append(specificBookIdAttrib) 

SpecificBookNode.AppendChild(newNode)

任何人可以幫助我轉換上面使用的線路管理碼?

回答

1

因爲我可以創建一個新的屬性,因爲sampledata.xml有一個默認值,雖然我的Template.xml沒有;我不能確定它的價值,因爲它只讀。 prereqsNode = navigator.SelectSingleNode(「// mstns:SpecificBook」,Me.NamespaceManager)

*錯誤「重複屬性」 prereqsNode.CreateAttribute( 「」, 「areLoaded」, 「」, 「真」)

錯誤「只讀」 prereqsNode.SetValue( 「真」)*

我決定創建一個新的XmlDocument:

  • 創建一個新的屬性替換

  • 整個mstns:SpecificBook節點

我也用的XmlDocument創建的childNodes,轉換爲Navigator中的節點,然後追加的childNodes。

昏暗文檔作爲XmlDocument的=新的XmlDocument 昏暗newNode作爲XmlNode的 昏暗activeAttrib作爲XmlAttribute

activeAttrib = newNode.OwnerDocument.CreateAttribute( 「活性」) activeAttrib.Value =真 newNode.Attributes.Append( activeAttrib)

specificBookNode.ReplaceSelf(newNode。OuterXml)