Converting 2007/10 object refences to 2003 - InfoPath Dev
in

InfoPath Dev

Converting 2007/10 object refences to 2003

Last post 12-09-2011 09:50 AM by kcorbet. 0 replies.
Page 1 of 1 (1 items)
Sort Posts: Previous Next
  • 12-09-2011 09:50 AM

    Converting 2007/10 object refences to 2003

    Hi,

    I am developing a form using infopath 2010 that is saved as a 2003 form template for end user compatibility.  The form populates a repeating table with fields from a secondary data source and filters the what is taken from the secondary data source based on a drop-down field (SlctdCat). 

    I leveraged the following VB code from S.Y.M. Wong-A-Ton which works in a 2010 infopath form, but is not backward compatible when saved as a 2003 form due to different object models.

    I would be tremendously grateful (hint: gas card) if someone who is knowledgeable of the two object models would be kind enough to re-write the incompatible references.

            Public Sub CTRL3_5_Clicked(ByVal sender As Object, ByVal e As ClickedEventArgs)
                'Define Category Selected
                Dim SlctdCat As String = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:Category", NamespaceManager).Value

                ' Retrieve the rows of the secondary data source
                Dim secDSNav As XPathNavigator = Me.DataSources("CategoryControls").CreateNavigator()
                Dim rows As XPathNodeIterator = secDSNav.Select("/dfs:myFields/dfs:dataFields/d:SharePointListItem_RW", NamespaceManager)

                ' Loop through the rows of the secondary data source and fill the repeating table
                While rows.MoveNext()
                    If rows.Current.SelectSingleNode("d:Category", NamespaceManager).Value = SlctdCat Then
                        Dim Category As String = rows.Current.SelectSingleNode("d:Category", NamespaceManager).Value
                        Dim Key As String = rows.Current.SelectSingleNode("d:Key", NamespaceManager).Value
                        Dim Number As String = rows.Current.SelectSingleNode("d:Number", NamespaceManager).Value

                        ' Add the item to the repeating table
                        AddItem(Category, Key, Number)

                    End If
                End While

                ' Remove the first empty item from the repeating table
                DeleteFirstEmptyItem()

            End Sub
    '----------------------------------------------------

            Private Sub AddItem(ByVal Category As String, ByVal Key As String, ByVal Number As String)

                Dim doc As XmlDocument = New XmlDocument()
                Dim group As XmlNode = doc.CreateElement("group2", NamespaceManager.LookupNamespace("my"))

                Dim field As XmlNode = doc.CreateElement("field1", NamespaceManager.LookupNamespace("my"))
                Dim node As XmlNode = group.AppendChild(field)
                node.InnerText = Category

                field = doc.CreateElement("field2", NamespaceManager.LookupNamespace("my"))
                node = group.AppendChild(field)
                node.InnerText = Key

                field = doc.CreateElement("field3", NamespaceManager.LookupNamespace("my"))
                node = group.AppendChild(field)
                node.InnerText = Number

                doc.AppendChild(group)

                MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:group1", NamespaceManager).AppendChild(doc.DocumentElement.CreateNavigator())

            End Sub
    '----------------------------------------------------

            Private Sub DeleteFirstEmptyItem()

                Dim domNav As XPathNavigator = MainDataSource.CreateNavigator()
                Dim itemNav As XPathNavigator = domNav.SelectSingleNode("/my:myFields/my:group1/my:group2[1]", NamespaceManager)

                If itemNav IsNot Nothing Then
                    itemNav.DeleteSelf()
                End If
            End Sub

    Kevin
Page 1 of 1 (1 items)
Copyright © 2003-2019 Qdabra Software. All rights reserved.
View our Terms of Use.