How to bind a Rich Text Box control to an element that is returned from a Web service in InfoPath and Visual Studio .NET 2003

Article translations Article translations
Article ID: 826996 - View products that this article applies to.
Expand all | Collapse all

On This Page

SUMMARY

This article describes how to bind a Rich Text Box control on a Microsoft Office InfoPath 2007 form or on a Microsoft Office InfoPath 2003 form to an XML element that is returned from a Web service.

For a Rich Text Box control to bind to an XML element that is returned from a Web service, the Rich Text Box control must contain XHTML content. The element must have the following XML schema:
	<xsd:element name="[elementname]">
	  <xsd:complexType mixed="true">
	    <xsd:sequence>
	      <xsd:any namespace="http://www.w3.org/1999/xhtml" processContents="lax"
		minOccurs="0" maxOccurs="unbounded"/>
	    </xsd:sequence>
	  </xsd:complexType>
	</xsd:element>
The <elementname> is the name of the XML element that is returned from the Web service.

InfoPath can automatically detect if an element is an XHTML element by querying the element for a sample value when InfoPath connects to the Web service data source for the first time. This article describes how to create a Web service that returns valid XHTML. This article also describes how to display the XHTML that is returned from the Web service in a Rich Text Box control on an InfoPath form.

Create the Web service

  1. Start Microsoft Visual Studio .NET.
  2. On the File menu, click New, and then click Project.
  3. In the Project Types list, click Visual C# Projects. In the Templates list, click ASP.NET Web Service.
  4. In the Location box, type http://<SERVER>/RichTextService where <SERVER> is the name of your Web server, and then click OK.
  5. Right-click Service1.asmx, and then click View Code.
  6. Add the following Web Service method to the Service1 class:
    	[WebMethod]
    	public System.Xml.XmlNode GetXHTMLRichText()
    	{
             //Create a temporary XmlDocument object to generate nodes.
             System.Xml.XmlDocument tempDocument = new System.Xml.XmlDocument();
    	   
             //Create a wrapper node for the data.  This is necessary so InfoPath 
             //correctly detects the XHTML content
             System.Xml.XmlElement theNode = (System.Xml.XmlElement)tempDocument.CreateNode(
                System.Xml.XmlNodeType.Element, "theNode", "http://somearbitrarynamespace/" );
             
             //Create a "font" element in the xhtml namespace.
             System.Xml.XmlElement theFontNode = (System.Xml.XmlElement)tempDocument.CreateNode( 
                System.Xml.XmlNodeType.Element, "font", "http://www.w3.org/1999/xhtml" );
             theFontNode.InnerText= "Red Text";
    	  
             //Add a color attribute.
             System.Xml.XmlAttribute colorAttribute = tempDocument.CreateAttribute( 
                "color" );
             colorAttribute.Value = "#ff0000";
             theFontNode.Attributes.Append( colorAttribute );
    	  
             //Append the font node to the wrapper node
             theNode.AppendChild( theFontNode );
    
             //Return the wrapper element.
             return theNode;
    	}
  7. On the Build menu, click Build Solution.
  8. Exit Visual Studio .NET.

Create the InfoPath form

In InfoPath 2003

  1. Start InfoPath 2003.
  2. On the File menu, click Design a Form.
  3. In the Design a Form task pane, click New from Data Connection....

    The Data Source Setup Wizard starts.
  4. Setup the data source as follows:
    1. Click Web Service for the data source, and then click Next.
    2. Click Receive data, and then click Next.
    3. Type http://<SERVER>/RichTextService/Service1.asmx for the location of the Web service, and then click Next.
    4. In the Select an operation list, click GetXHTMLRichText, and then click Next.
    5. Click Finish.
  5. Switch to the Data Source task pane, and then expand the dataFields group.
  6. Expand the GetXHTMLRichTextResponse group, and then move the GetXHTMLRichTextResult element to your form.

    InfoPath adds a Rich Text Box control to the view.

In InfoPath 2007

  1. Start InfoPath 2007.
  2. In the left pane of the Getting Started dialog box, click Design a Form Template.
    In the Design a Form Template window, click Blank, and then click OK.
  3. On the Tools menu, click Data Connections.
  4. In the Data Connections window, click Add.

    The Data Source Setup Wizard starts.
  5. Set up the data source as follows:
    1. Click to select Create a new connection to, click to select Receive data, and then click Next.
    2. Click to select Web Service for the data source, and then click Next.
    3. Type http://<SERVER>/RichTextService/Service1.asmx for the location of the Web service, and then click Next.
    4. In the Select an operation list, click GetXHTMLRichText, and then click Next.
    5. Click Finish.
  6. Switch to the Data Source task pane, and then expand the dataFields group.
  7. Expand the GetXHTMLRichTextResponse group, and then move the GetXHTMLRichTextResult element to the form.

    InfoPath adds a Rich Text Box control to the view.

Try it out

  1. On the Task pane drop-down list, click Views.
  2. In the Views list, click Query. Right-click Query, and then click Set as Default.
  3. On the File menu, point to Preview Form, and then click Default.
  4. Click Run Query.
  5. On the View menu, click Data Entry.

    Notice the value that is in the Rich Text Box control on the form. The value that is returned by the Web service is Red Text, and the value is formatted in red.

Properties

Article ID: 826996 - Last Review: October 4, 2011 - Revision: 1.0
APPLIES TO
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
  • Microsoft Visual Studio .NET 2003 Enterprise Developer
Keywords: 
kbhowtomaster kbwebservices kbhowto KB826996

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com