
|

|
:: Web Services :: XWebFAQs :: Implementation Guides ::
|
How-To Display a List of All Frequently Asked Questions
|
|
The procedures in this implementation guide require that you have some knowledge of XML and
ASP.NET web development with the Microsoft Visual Basic.NET development tool.
The steps in this "how-to" implementation guide are:
To download the source code for this "how-to" implementation guide, as well as for additional
hints and tips, please read our Final Notes.
|
 |
Add a "Web Reference" to the XWebFAQs Web Service
-
In your web project, add a Web Reference to the XWebFAQs web service. Here are 2 ways you can
accomplish this:
- Browse the Solution Explorer, right click on References and select
Add Web Reference... from the drop down menu.
- From the File Menu, select Project - Add Web Reference....
The Add Web Reference pop-up window will open. In the URL textbox, enter the following URI:
http://ws.xwebservices.com/XWebFAQs/XWebFAQs.asmx?wsdl
- Hit the Enter key or click the Go button located to the right of the URL textbox.
- Change the Web reference name to XWebFAQs for easier reference.
- Click the Add Reference button to complete this step.
|
 |
Add a "Web Form" to the Web Application
|
 |
Write code in the "Codebehind" of the web form to retrieve the list of Frequently Asked Questions by consuming the XWebFAQs Web Service
Based on the documentation for the XWebFAQs web service, in order to successfully consume the web service, we will
need to authenticate first using SOAP Headers. Here's how:
- Open the "Codebehind" of the faqs.aspx web form we added to the web project in the
previous step.
Since the web service requires SOAP Headers for authentication purposes, we must first create a new
instance of the class representing the SOAP Header and then populate the SOAP Header values:
Dim objAuth As New XWebFAQs.AuthHeader
objAuth.LoginName = "<my_login_name>"
objAuth.Password = "<my_password>"
NOTE***: Instead of hard-coding the LoginName and Password values, you may want to
dynamically read them from the web.config file (LOGIN_NAME and PASSWORD must be added to the
<AppSettings>
section of the web.config file):
objAuth.LoginName = System.Configuration.ConfigurationSettings.AppSettings("LOGIN_NAME")
objAuth.Password = System.Configuration.ConfigurationSettings.AppSettings("PASSWORD")
Next, we need to create a new instance of the proxy class and assign the SOAP Header object to the member
variable of the proxy class representing the SOAP Header:
Dim objFAQs As New XWebFAQs.XWebFAQs
objFAQs.AuthHeaderValue = objAuth
We are now ready to call the method on the proxy class that communicates with the Web Service method and returns the
Frequently Asked Question records we want displayed on the web page:
Dim strFAQsXML As String = objFAQs.LoadFAQs()
|
 |
Implement a Repeater to Display the List of Frequently Asked Questions
In the Codebehind, we need to declare a Repeater and then bind the XML string we received from the SOAP
method, in the form of an XMLNodeList, to the Repeater's DataSource. Here's how:
Declare the Repeater in the Codebehind:
Protected rptFAQs As System.Web.UI.WebControls.Repeater
Load the XML string from the previous step into an XMLDocument:
Dim objDOM As New System.Xml.XmlDocument
objDOM.LoadXml(strFAQsXML)
Bind the XMLDocument's DocumentElement to the Repeater's DataSource and call the DataBind method:
rptFAQs.DataSource = objDOM.DocumentElement
rptFAQs.DataBind()
In the HTML Editor, to keep things simple, each FAQ record will be displayed in a paragraph, with the question in bold, and
the date the FAQ record was created in italics. Here are the necessary steps:
Add the Repeater inside the body of your HTML page:
<asp:Repeater ID="rptFAQs" Runat="server">
<ItemTemplate>
</ItemTemplate>
</asp:Repeater>
Inside the Repeater's ItemTemplate, first we display the Question of the FAQ record. Since the Repeater is looping through XML Nodes
(<FAQ>),
we need to first bind to the
<Question> element,
then get its value:
<b>
<%# Container.DataItem.SelectSingleNode("Question").InnerText %>
</b>
Next, we display the Answer of the FAQ record. Again, since the Repeater is looping through XML Nodes
(<FAQ>),
we need to bind to the
<Answer> element,
then get its value:
<%# Container.DataItem.SelectSingleNode("Answer").InnerText %>
Finally, we display the FAQ record's created date. Since Date_Created is an
attribute, we must handle it slightly different:
<%# Container.DataItem.Attributes.ItemOf("Date_Created").Value %>
|
 |
Final Notes
The source code for this "how-to" implementation guide can be downloaded by clicking the link
below (zip file, contains the source code for all "how-to" implementation guides for the
XWebFAQs Web Service)
XWebFAQsClient.zip
As you may have noticed, we are consuming the result of the web service's SOAP method as is. This will, as the documentation
states, display the FAQ records in the reverse chronological order they were entered into the system. If you would like to
have the FAQ records ordered differently, you can create an XSLT Stylesheet that you can then apply to the XML DOM to
get the desired results. Look forward in the future to a "How-To" implementation guide that does just that!
The FAQs page in the About Us section of the XWebServices.com portal implements
the technique outlined in this how-to implementation guide.
It's always good practice to implement a Try...Catch... error handling technique to handle some or all possible errors
that may occur while the code is executing. We strongly recommend that you implement such a technique.
|
|

|

|
|