Udostępnij za pośrednictwem


Functionality Lost in InfoPath 2007 "Web-Enabled" Forms

Quick update to this post (6/7/2007).   Saw this article https://msdn2.microsoft.com/en-us/library/aa945450(VS.80).aspx which is pretty comprehensive on this topic.   Worth a read. 

Folks,

Getting tired of waiting for a list to be published, so will start to build my own from scratch as I go along.   Many of you know that InfoPath 2007 will have the ability to build forms that are "web-enabled".  What that means is that Microsoft Office SharePoint Server (MOSS) 2007, if you've bought Enterprise CALs, will allow you to build an InfoPath form that will render either in the rich client application or can be served up as an ASP.NET page.   This has been done with cross-platform, zero-footprint considerations in mind.   It's a nice and much-asked-for capability.  However, there are a bunch of things that won't work when you go to web environment.   Here is a small list that I've started to compile.  It will grow and I will repost as I discover more things.

  1. No native write to SQL databases.   The ease of use of establing an ADO connection to SQL or Access, and being able to query and write back to a database is lost.   Instead you will probably need to talk to the DB via a web service.
  2. No roundtripping for cascading picklists.   Something I do all the time is have one picklist be a filter for another picklist.  Common example, pick a state, which then filters the city field dropdown.   Can't do that in a web form.
  3. Summary list of controls that aren't supported in web forms:
    • ComboBox
    • Multiple-Selection List Box
    • Master/Detail
    • Bulleted, Numbered and Plain List
    • Picture
    • Ink Picture
    • Vertical Label
    • Scrolling and Horizontal Region
    • Horizontal Repeating Table
    • Choice Group
    • Repeating Choice Group
    • Choice Section
    • Repeating Recursive Section
    • ActiveX Controls

More to follow.

Comments

  • Anonymous
    August 12, 2006
    Is it possible to create a form with views that are web-enabled, and views that use features not web-enabled?

  • Anonymous
    March 19, 2007
    Well, the list was finally published.   Here is a link to it.   InfoPath 2007 features that are unavailable in InfoPath Forms Services http://office.microsoft.com/en-us/infopath/HA102105871033.aspx

  • Anonymous
    January 09, 2008
    User Roles are also not supported in Web Forms.

  • Anonymous
    February 14, 2008
    I have a answer to the Problem # 2. We can use cascading pick lists in infopath web forms also. For that you have to code the filter on the state field (e.g.) selection event. What you can do is:

  1. Add one xml document containing two blank nodes like <Cities>  <City Name=""></City>  <City Name=""></City> </Cities> These two nodes are important to make the "City" nodes as repeating field.
  2. Create a new data connection of "retrieve" type to the newly created xml file.
  3. On the form design, right click on "City" drop down box and click "Properties".
  4. On "look up entries....." select name of newly created data source and select "City" node from the list of fields displayed in "Entries" field.
  5. Now right the code to "State" field changed event to insert "Cities" related to that state in the newly created Xml file. Following is the code sample which will depending on the State selected in State drop down from "StateCityXml" file, will populate Cities related to selected State in "City" drop down. public void State_Changed(object sender, XmlEventArgs e) {                XPathNavigator newNav;                XPathNavigator xNav = DataSources["statecityxml"].CreateNavigator();                XPathNavigator countryNav = xNav.SelectSingleNode("/StateCityXml/State/City", this.NamespaceManager);                XPathNavigator districtNav = DataSources["cities"].CreateNavigator();                                XPathNavigator first = districtNav.SelectSingleNode("/Cities/City[1]", this.NamespaceManager);                if (first != null)                {                    XPathNavigator last = districtNav.SelectSingleNode("/Cities/City[position()=last()]", this.NamespaceManager);                    first.DeleteRange(last);                }                do                {                    string abc = countryNav.GetAttribute("Name", "");                    if (countryNav.GetAttribute("Name", "") == myNav.SelectSingleNode("/my:webInfoPath/my:State", this.NamespaceManager).Value)                    {                        if (countryNav.HasChildren)                        {                            XPathNodeIterator nodes = countryNav.Select("/StateCityXml/State/City [@Name='" + abc + "']/City", this.NamespaceManager);                            newNav = districtNav.SelectSingleNode("/Cities", this.NamespaceManager);                            while (nodes.MoveNext())                            {                                 newNav.AppendChild("<City Name="" + nodes.Current.GetAttribute("Name", "") + ""></City>");                            }                        }                    }                } while (countryNav.MoveToNext()); } Important: To execute the action on "State" field change event, on "State" field drop down box properties, go to "Browser Forms" tab, and set the "Postback settings" to "Always".