<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Steve Fox's OBA Ramblings : SharePoint development</title><link>http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx</link><description>Tags: SharePoint development</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Sharepoint 2010 development using bcs</title><link>http://blogs.msdn.com/steve_fox/archive/2009/12/26/sharepoint-2010-development-using-bcs.aspx</link><pubDate>Sat, 26 Dec 2009 02:15:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9941204</guid><dc:creator>Steve Fox</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9941204.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9941204</wfw:commentRss><description>&lt;p&gt;One of the big features for SharePoint 2010 (and for building OBAs) is the Business Connectivity Services (BCS). I’ve written a few posts on this, but wanted to follow up on these early posts with some additional detail on how to create a solution leveraging web services. I see many customers trying to tie together SharePoint with external systems using a service-oriented design. &lt;/p&gt;  &lt;p&gt;In this post, I’ll walk through how you can leverage a web service using the BCS (specifically employing the BDC Model project template in VS 2010) to create a read-only relationship with an external data source. This will be the first post in a series that will eventually cover the broad CRUD spectrum. So, let’s get down to it. &lt;/p&gt;  &lt;p&gt;The high-level process you will want to go through is as follows: &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create the data source;&lt;/li&gt;    &lt;li&gt;Create a service that interacts with your data source;&lt;/li&gt;    &lt;li&gt;Create the external content type using VS 2010; and&lt;/li&gt;    &lt;li&gt;Use the external content type in SP 2010 to create a web-service enabled external list.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Creating the Data Source&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In this example, the data source is a SQL Server db with a single table with five records—see figure below. The number of records are less important than the structure of the columns.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_1.png" width="523" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can choose to use something similar or create something different. If you use the code in this blog-post and you’re new to this, then create a db table with a similar structure. The following shows the data types in this simple table. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_2.png" width="397" height="186" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You create the new data source in SQL Server 2008 by right-clicking the Databases node and selecting New Database. Design your columns as per the above and then save the db when complete. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Creating the Web Service&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With your db created, you now want to create a web service to interact with that db. We’ll create an ASP.NET service in this example to again keep things simple. (Note that you could equally apply much of the code to a WCF service.) &lt;/p&gt;  &lt;p&gt;Open Visual Studio 2010 and create a new ASP.NET service application. You’ll want to add a new data source as an entity model. You can do this by click Data and then Add Data Source and then walking through the new data source wizard. I called my new data model CustomerSale—see the figure below to understand how Visual Studio interprets the data types. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_3.png" width="523" height="315" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You’ll need an in-memory object, so right-click your project and click Add and then select Class. Call your class CustomerSalesInfo.cs (or &amp;lt;name&amp;gt;.vb) and then click OK. You want to map the properties of your object to that of the data source. Here is the code for that object. You’ll note that I didn’t map the data types exactly. I do some in-code translation of data types. &lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;using System;     &lt;br /&gt;using System.Collections.Generic;      &lt;br /&gt;using System.Linq;      &lt;br /&gt;using System.Web; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;namespace CustomerServiceBCSApp     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public class CustomerSalesInfo      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custID { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custName { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custEmail { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custRegion { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custFY08Sales { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custFY09Sales { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Now you can write some code in your core service class. As this blog post is about read only, it will cover two web methods: one for reading the entire list and another for reading one item in a list. You’ll note that you require these two methods to create an external content type using BCS. In the code below, note that I’m creating a data context for my entity model called myCustomerData and there’s a class-level list collection I’m also creating called myCustomerList. The list collection is what I use to build out and populate my in-memory object (which I’ll return in the getAllCustomers() method. In fact, in the getAllCustomers() method I simply use a LINQ statement to query and get all of the data in the data context, and then I iterate through the members of the var returnListOfData object to creater my in-memory object. You may choose another method here (maybe even foregoing the in-memory object) to optimize your code. I pass no parameters to the getAllCustomers method as this is my, so to speak, “SELECT *” statement. &lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;using System;     &lt;br /&gt;using System.Collections.Generic;      &lt;br /&gt;using System.Linq;      &lt;br /&gt;using System.Web;      &lt;br /&gt;using System.Web.Services; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;namespace CustomerServiceBCSApp     &lt;br /&gt;{      &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [WebService(Namespace = &amp;quot;&lt;/font&gt;&lt;a href="http://tempuri.org/&amp;quot;)]"&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;http://tempuri.org/&amp;quot;)]&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [System.ComponentModel.ToolboxItem(false)]      &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public class Service1 : System.Web.Services.WebService      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomersEntities myCustomerData = new CustomersEntities();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;CustomerSalesInfo&amp;gt; myCustomerList = new List&amp;lt;CustomerSalesInfo&amp;gt;(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [WebMethod]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public List&amp;lt;CustomerSalesInfo&amp;gt; getAllCustomers()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var returnListOfData = (from customer in myCustomerData.CustomerSales      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select customer).ToArray(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (var cust in returnListOfData)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomerSalesInfo tempCustomer = new CustomerSalesInfo();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempCustomer.custID = cust.CustomerID.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempCustomer.custName = cust.CustomerName.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempCustomer.custEmail = cust.CustomerEmail.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempCustomer.custRegion = cust.CustomerRegion.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempCustomer.custFY08Sales = cust.CustomerFY08Sales.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempCustomer.custFY09Sales = cust.CustomerFY09Sales.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCustomerList.Add(tempCustomer);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return myCustomerList;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [WebMethod]     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string[] getACustomer(string strparamCustomerID)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int tempIntCustomerIDParam = Int32.Parse(strparamCustomerID);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string[] myCustomerList = new string[6]; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var returnIndiviualDataItem = (from customer in myCustomerData.CustomerSales     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .Where(x =&amp;gt; x.CustomerID == tempIntCustomerIDParam)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select customer); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (var cust in returnIndiviualDataItem)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCustomerList[0] = cust.CustomerID.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCustomerList[1] = cust.CustomerName.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCustomerList[2] = cust.CustomerEmail.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCustomerList[3] = cust.CustomerRegion.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCustomerList[4] = cust.CustomerFY08Sales.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myCustomerList[5] = cust.CustomerFY09Sales.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return myCustomerList;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The second method takes a string parameter (a customer ID) and then builds a LINQ query based on that parameter. In this instance, I wanted to use a string array that I can easily parse on the other side. I do prefer to leverage generics wherever possible because I like the flexibility of dynamic collections as opposed to hard-coded lengths, but for this sample I though it interesting enough to show both examples. &lt;/p&gt;  &lt;p&gt;Once you’ve gotten this far, you can test out the web service to make sure it runs. Test it from VS 2010 and then deploy it to IIS. To do this, create a new folder in your wwwroot folder (I called mine SPConnections) and then publish your service to that directory. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_4.png" width="530" height="125" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To publish the service, right-click your web service project select Publish and complete the options in the Publish Web dialog. Specifically, change the Publish Method to File System and then point the Target Location to the folder you just created under wwwroot.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_5.png" width="387" height="346" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click Publish to publish the service to that directory. Now, any time you make changes you can simply click Publish and your service definition and code will be updated. &lt;/p&gt;  &lt;p&gt;Since you’ve published your service to the file system, you’ll now want to create a web application in IIS that points to this service. To do this, open IIS and right-click the Sites node and select Add Web Site. Provide a name for the site, map the physical path to the folder under wwwroot (where you published your service to), give the site a unique port (e.g. 1111), click the Connect As button to provide the appropriate permissions for the service. (Note that you may have issues accessing the SQL Server if you have not configured the App Pool correctly—e.g. you can access using Local System or Network Service as opposed to the native Application Pool Identity.) Enable Windows Forms authentication by clicking Authentication and then clicking Windows and then Enable.&lt;/p&gt;  &lt;p&gt;To test the service from IIS, click the Content tab and then right-click Service1.asmx and select Browse. You should be able to execute both methods—one to get all of the customers in your db and the other (by passing a customer ID that exists within your db) to get a specific customer. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Creating the External Content Type (ECT)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You’ll create the ECT using the new BDC Model project. To find this, click File, New, Project, and then in the SharePoint 2010 folder select Business Data Connectivity Model. Provide a name for your project and click OK.&amp;#160;&amp;#160; &lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_6.png" width="429" height="298" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Using this template is a little different from SharePoint Designer (SPD) 2010, which also enables you to build out ECTs. My personal feeling is that SPD is a little easier to create the ECTs, but then if you want to have more complex projects that perhaps leverage other parts of the .NET Framework then using the VS project is better. Note that VS also deploys the ECT (and all associated code) as a feature as opposed to an XML file to the Metadata Store (as is the case with SPD 2010).&amp;#160; &lt;/p&gt;  &lt;p&gt;Okay, now you have your project set up you need to edit the Entity1 object to map to your external data source entity. You’ll note that I’ve kept a lot of the default namespaces and objects in this example. I’ll change these in future posts and keep you apprised as to the places you’ll need to look out for when trying to update/change these. To follow is what your Entity1 should now look like. &lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;using System;     &lt;br /&gt;using System.Collections.Generic;      &lt;br /&gt;using System.Linq;      &lt;br /&gt;using System.Text; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;namespace WroxTestBDC.BdcModel1     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public partial class Entity1      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string Identifier1 { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custName { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custEmail { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custRegion { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custFY08Sales { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string custFY09Sales { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;As a general rule of thumb, as soon as you’ve made the change to your Entity1 object go immediately to your .bdcm (the ECT model) and amend the entity structure there as well, or your deploy will fail. Also note that the way in which you edit your methods should actually correspond to the code-behind. For example, the structure of my ReadItem method (which is where I’ll call my getACustomer web method) passes the Identifier1 parameter and returns an object from my database via the web method. Similarly, the ReadList method will return a list of objects, and it defines this return object through the Entity1List object in the taxonomy below. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_7.png" width="337" height="498" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now, note again I’m only doing a read-only transaction—mostly because this is a good jumping off point but also because these two methods are created by default for you.&lt;/p&gt;  &lt;p&gt;Okay, before we jump to the code behind add a reference to the web service. To do this, right-click the BCS project and select Add Service Reference. Add the URL to the service (copy and paste the URL from your IIS browse) in the Service field, provide a name for your service and click OK. &lt;/p&gt;  &lt;p&gt;At this point, you are now ready to implement the service (i.e. the two web methods you created) in the VS project. &lt;/p&gt;  &lt;p&gt;Navigate to the Entity1Service.cs file and make sure your code looks like the following code snippet. You can see that I create an instance of the service and then call the appropriate method on that service to return the code from my external data source. Note that in the case of the ReadItem method, it takes a string parameter (which would get activated when you click on a record in the external list). I’ve changed the default IEnumerable return object to use my preferred List&amp;lt;&amp;gt; object (which is essentially a list collection of the Entity1 object).&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;using System;     &lt;br /&gt;using System.Collections.Generic;      &lt;br /&gt;using System.Linq;      &lt;br /&gt;using System.Text;      &lt;br /&gt;using WroxTestBDC.CustomerSalesWS;      &lt;br /&gt;using System.Xml.Serialization;      &lt;br /&gt;using System.Xml;      &lt;br /&gt;using System.Xml.Linq; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;namespace WroxTestBDC.BdcModel1     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public class Entity1Service      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public static Entity1 ReadItem(string id)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomerSalesWS.Service1SoapClient myWSProxy = new CustomerSalesWS.Service1SoapClient();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string[] returnedData = new string[6];      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; returnedData = myWSProxy.getACustomer(id).ToArray(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Entity1 entity1 = new Entity1(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; entity1.Identifier1 = id;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; entity1.custName = returnedData[1];      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; entity1.custEmail = returnedData[2];      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; entity1.custRegion = returnedData[3];      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; entity1.custFY08Sales = returnedData[4];      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; entity1.custFY09Sales = returnedData[5];&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return entity1;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public static List&amp;lt;Entity1&amp;gt; ReadList()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomerSalesWS.Service1SoapClient myWSProxy = new CustomerSalesWS.Service1SoapClient();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var salesData = myWSProxy.getAllCustomers(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;Entity1&amp;gt; mySalesInfoList = new List&amp;lt;Entity1&amp;gt;(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (var item in salesData)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Entity1 tempEntity = new Entity1();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempEntity.Identifier1 = item.custID.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempEntity.custName = item.custName.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempEntity.custEmail = item.custEmail.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempEntity.custRegion = item.custRegion.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempEntity.custFY08Sales = item.custFY08Sales.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tempEntity.custFY09Sales = item.custFY09Sales.ToString();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mySalesInfoList.Add(tempEntity);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return mySalesInfoList;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;At this point, you can build and deploy the ECT by right-clicking the project and selecting Deploy.&amp;#160; &lt;/p&gt;  &lt;p&gt;Before you go to SharePoint, one thing you’ll need to make sure you do is to copy the property settings for your system.serviceModel in your app.config file to your SharePoint’s web.config file—else you will get nasty web configuration errors. &lt;/p&gt;  &lt;p&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;&amp;lt;system.serviceModel&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;bindings&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;basicHttpBinding&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;binding name=&amp;quot;Service1Soap&amp;quot; closeTimeout=&amp;quot;00:01:00&amp;quot; openTimeout=&amp;quot;00:01:00&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; receiveTimeout=&amp;quot;00:10:00&amp;quot; sendTimeout=&amp;quot;00:01:00&amp;quot; allowCookies=&amp;quot;false&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bypassProxyOnLocal=&amp;quot;false&amp;quot; hostNameComparisonMode=&amp;quot;StrongWildcard&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; maxBufferSize=&amp;quot;65536&amp;quot; maxBufferPoolSize=&amp;quot;524288&amp;quot; maxReceivedMessageSize=&amp;quot;65536&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; messageEncoding=&amp;quot;Text&amp;quot; textEncoding=&amp;quot;utf-8&amp;quot; transferMode=&amp;quot;Buffered&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; useDefaultWebProxy=&amp;quot;true&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;readerQuotas maxDepth=&amp;quot;32&amp;quot; maxStringContentLength=&amp;quot;8192&amp;quot; maxArrayLength=&amp;quot;16384&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; maxBytesPerRead=&amp;quot;4096&amp;quot; maxNameTableCharCount=&amp;quot;16384&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;security mode=&amp;quot;None&amp;quot;&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;transport clientCredentialType=&amp;quot;None&amp;quot; proxyCredentialType=&amp;quot;None&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; realm=&amp;quot;&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;message clientCredentialType=&amp;quot;UserName&amp;quot; algorithmSuite=&amp;quot;Default&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/security&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/binding&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/basicHttpBinding&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/bindings&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;client&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;endpoint address=&amp;quot;&lt;/font&gt;&lt;a href="http://localhost:289/Service1.asmx&amp;quot;"&gt;&lt;font color="#004080" size="1" face="Courier New"&gt;http://localhost:289/Service1.asmx&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font color="#004080" size="1" face="Courier New"&gt; binding=&amp;quot;basicHttpBinding&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; bindingConfiguration=&amp;quot;Service1Soap&amp;quot; contract=&amp;quot;CustomerSalesWS.Service1Soap&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; name=&amp;quot;Service1Soap&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/client&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/system.serviceModel&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;After this, you are now ready to create the external list in SharePoint 2010 using your newly create web-service enabled ECT.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Creating the External List&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can now create the external list in SharePoint. To do this, click the All Site Content link and click Create. Then in the Create options, click List and click External List. Click Create.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_8.png" width="516" height="311" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When the External List page opens, provide a name for the list and then in the External Content Type field click the right-most icon to browse for external content types that have been deployed to SharePoint. Click Create when complete.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_10.png" width="534" height="170" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;At this point, your external list will have been created. The two read operations will enable you to have the full list of your records in the Customers database (via web service) rendered in the list—see below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_11.png" width="540" height="102" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And if you click on one of the records it will display the individual record—see below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_26.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/Sharepoint2010developmentusingbcs_EB52/image_thumb_12.png" width="458" height="314" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;And there you have it. You now have a web-service enabled external list. &lt;/p&gt;  &lt;p&gt;In future posts, I will show you how to add new web methods to handle update, create and delete and then add the corresponding code in the BDC project you just created.&lt;/p&gt;  &lt;p&gt;But for now, enjoy your holiday dinners!&lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9941204" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Web+service/default.aspx">Web service</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/sharepoint+2010/default.aspx">sharepoint 2010</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Business+Connectivity+Services/default.aspx">Business Connectivity Services</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/BCS/default.aspx">BCS</category></item><item><title>get trained with Sharepoint 2010 and office 2010 videos</title><link>http://blogs.msdn.com/steve_fox/archive/2009/12/05/get-trained-with-sharepoint-2010-and-office-2010-videos.aspx</link><pubDate>Sat, 05 Dec 2009 17:01:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9932982</guid><dc:creator>Steve Fox</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9932982.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9932982</wfw:commentRss><description>&lt;p&gt; One of the charters of my team is to make sure that we provide collateral for developers to get up and running with a program called Metro—an early adoption program for ISVs (to sign up for Metro or get more information, you can email &lt;a href="mailto:metroreq@microsoft.com"&gt;metroreq@microsoft.com&lt;/a&gt;). Part of this program is creating things like training videos, Hands-on labs, and source-code; all for the developer to get up to speed quickly and efficiently with SharePoint and Office 2010. (We also cover CRM and UC.)&lt;/p&gt;  &lt;p&gt;One of the first publicly-facing things we’ve done is to begin posting our PowerPoint decks and SharePoint and Office 2010 developer videos on Channel 9 in our new Learning Centers as a complement to other collateral that is out there today. There are some great videos here that you can watch for 10-15 minutes at a time. To get them, navigate to the top-level learning center on Channel 9 (&lt;a title="http://channel9.msdn.com/learn/" href="http://channel9.msdn.com/learn/"&gt;http://channel9.msdn.com/learn/&lt;/a&gt; or go straight to the either of the learning centers:&lt;/p&gt;  &lt;p&gt;SharePoint 2010: &lt;a title="http://channel9.msdn.com/learn/courses/SharePoint2010Developer/" href="http://channel9.msdn.com/learn/courses/SharePoint2010Developer/"&gt;http://channel9.msdn.com/learn/courses/SharePoint2010Developer/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Office 2010:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://channel9.msdn.com/learn/courses/Office2010/" href="http://channel9.msdn.com/learn/courses/Office2010/"&gt;http://channel9.msdn.com/learn/courses/Office2010/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/gettrainedwithSharepoint2010andoffice201_7ED6/new_9guy_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="new_9guy" border="0" alt="new_9guy" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/gettrainedwithSharepoint2010andoffice201_7ED6/new_9guy_thumb.png" width="209" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are some great videos here, and the guys (Donovan Follette and Paul Stubbs) have done a fantastic job rallying this content. &lt;/p&gt;  &lt;p&gt;There’ll be more to come with full downloadable packages coming next week and hands-on labs and source code coming at the beginning of January.&lt;/p&gt;  &lt;p&gt;Happy Coding!&lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9932982" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Advanced+OBA/default.aspx">Advanced OBA</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/sharepoint+2010/default.aspx">sharepoint 2010</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+2010/default.aspx">Office 2010</category></item><item><title>Tweeting from SharePoint 2010 Visual Web Part</title><link>http://blogs.msdn.com/steve_fox/archive/2009/12/02/tweeting-from-sharepoint-2010-visual-web-part.aspx</link><pubDate>Wed, 02 Dec 2009 01:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9931191</guid><dc:creator>Steve Fox</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9931191.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9931191</wfw:commentRss><description>&lt;P&gt;I’m still trying to get into the whole Tweet thing, so in an attempt to dig into it a little I took a look at the &lt;A href="http://apiwiki.twitter.com/" mce_href="http://apiwiki.twitter.com/"&gt;API&lt;/A&gt; and found out it’s pretty functional. My version of a Hello World app was having the ability to call the REST Twitter API to update my status on&amp;nbsp; Twitter. I figure if I can figure out how to integrate this social networking experience into my daily routine, then why not. &lt;/P&gt;
&lt;P&gt;To get started, I downloaded the .NET Twitter API wrapper—this makes it super easy to build .NET-based apps that communicate with Twitter. You can get it &lt;A href="http://code.google.com/p/twitterizer/" mce_href="http://code.google.com/p/twitterizer/"&gt;here&lt;/A&gt;. After you’ve downloaded the DLL, open Visual Studio 2010 and create a new Visual Web Part project. Add a reference to the Twitter.Framework.dll and then create your UI. My UI look somewhat el lamo, as you can see from the below: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_thumb.png" width=325 height=267 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;However, design skills notwithstanding, I put together a fairly straightforward UI which made coding it up easy. The main (non-production) code I added is bolded as follows: &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;using System;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;using System.Web.UI;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;using System.Web.UI.WebControls;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;using System.Web.UI.WebControls.WebParts;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;using Twitterizer;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;using Twitterizer.Framework;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;namespace MyTwitterFeedWebPart.TwitterWebPart&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;public partial class TwitterWebPartUserControl : UserControl&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;{&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;string strTweet = "";&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;string myTweetUsername = "";&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;string myTweetPassword = "";&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;protected void Page_Load(object sender, EventArgs e)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;&amp;nbsp; {&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;protected void btnTweet_Click(object sender, EventArgs e)&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;&amp;nbsp; {&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;myTweetUsername = txtUsername.Text;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;myTweetPassword = txtPassword.Text;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;strTweet = txtbxTweet.Text;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;Twitter myTweet = new Twitter(myTweetUsername, myTweetPassword);&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;myTweet.Status.Update(strTweet);&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;protected void btnClear_Click(object sender, EventArgs e)&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;&amp;nbsp; {&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;txtbxTweet.Text = "";&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;txtPassword.Text = "";&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;txtUsername.Text = "";&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;B&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;&amp;nbsp; }&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#004080 size=2 face="Courier New"&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;When you deploy and run the sample app, you have a functional web part app that enables you to submit tweets from your web part and post them to your Twitter account.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_thumb_1.png" width=328 height=182 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Yeah, success:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_thumb_2.png" width=504 height=98 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/TweetingfromSharePoint2010VisualWebPart_F1F5/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;How useful is this in the long-term? Well, that remains to be seen…but it does begin to show you that integrating with SharePoint 2010 is definitely possible. You’d want to obviously add checks like character length of tweet &amp;lt; 140, tweet signing, Internet connectivity check, etc., etc., but the .NET wrapper enables you to do some powerful integrations.&lt;/P&gt;
&lt;P&gt;Happy coding!&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;
&lt;DIV style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id=scid:0767317B-992E-4b12-91E0-4F059A8CECA8:eab3bffb-0e3c-498b-9f75-7c3d9e4703ec class=wlWriterEditableSmartContent&gt;Technorati Tags: &lt;A href="http://technorati.com/tags/MSDN" rel=tag mce_href="http://technorati.com/tags/MSDN"&gt;MSDN&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SharePoint+2010" rel=tag mce_href="http://technorati.com/tags/SharePoint+2010"&gt;SharePoint 2010&lt;/A&gt;,&lt;A href="http://technorati.com/tags/Twitter" rel=tag mce_href="http://technorati.com/tags/Twitter"&gt;Twitter&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SharePoint+development" rel=tag mce_href="http://technorati.com/tags/SharePoint+development"&gt;SharePoint development&lt;/A&gt;,&lt;A href="http://technorati.com/tags/SharePoint+visual+web+part" rel=tag mce_href="http://technorati.com/tags/SharePoint+visual+web+part"&gt;SharePoint visual web part&lt;/A&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9931191" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/sharepoint+2010/default.aspx">sharepoint 2010</category></item><item><title>VSLive Virtual SharePoint 2010 Conference</title><link>http://blogs.msdn.com/steve_fox/archive/2009/11/07/vslive-virtual-sharepoint-2010-conference.aspx</link><pubDate>Sat, 07 Nov 2009 16:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9919080</guid><dc:creator>Steve Fox</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9919080.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9919080</wfw:commentRss><description>&lt;P&gt;I participated in a virtual conference this week that was all about SharePoint 2010. I presented a couple of sessions, one on a Developer Roadmap and the other on the Developer Tools. I posted the decks here:&lt;/P&gt;
&lt;P&gt;&lt;A title=http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/VSLive%5E_Virtual href="http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/VSLive%5E_Virtual"&gt;&lt;FONT color=#0000cc&gt;http://cid-40a717fc7fcd7e40.skydrive.live.com/browse.aspx/VSLive%5E_Virtual&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;I’m cleaning up some of the code and will post before the Beta 2 becomes available.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919080" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/sharepoint+2010/default.aspx">sharepoint 2010</category></item><item><title>Retrieve SharePoint List Data with XLINQ using VS 2010 Beta 1</title><link>http://blogs.msdn.com/steve_fox/archive/2009/06/17/retrieve-sharepoint-list-data-with-xlinq-using-vs-2010-beta-1.aspx</link><pubDate>Wed, 17 Jun 2009 22:30:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9770250</guid><dc:creator>Steve Fox</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9770250.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9770250</wfw:commentRss><description>&lt;p&gt;One of the key things you’ll likely want to do with SharePoint is interact a lot with lists. In earlier posts on this blog, I’ve discussed adding data to a SharePoint list using both custom and native SharePoint services (i.e. services that ship with either WSS or MOSS—when I say SharePoint I include both of these SharePoint pieces). A recent &lt;a href="http://blogs.msdn.com/arpans/archive/2007/07/24/sharepoint-web-service-example-grabbing-wiki-content.aspx"&gt;post&lt;/a&gt; got me thinking about how to not only retrieve data from SharePoint, but then having the ability to take that data offline (e.g. save to a file) or to use it in-memory for other types of processing (e.g. filtering/management within a UI), so I put together a small application that does a couple of things: &lt;/p&gt;  &lt;p&gt;1. Retrieves data from a SharePoint list using the Lists web service (a service native to SharePoint 2007);&lt;/p&gt;  &lt;p&gt;2. Uses XML to add items to a custom object; and&lt;/p&gt;  &lt;p&gt;3. Uses LINQ to query the object and filter/manage into a XAML UI. &lt;/p&gt;  &lt;p&gt;All this using the latest Visual Studio 2010 Beta bits. &lt;/p&gt;  &lt;p&gt;First, let’s take a quick look at the SharePoint list. It’s called “Products” and lives on my test SharePoint server (“http://stefoxdemo”). You can see a cropped screenshot of the list. It’s pretty simple and should be thought of as such because we really just want to show data coming from the list—not hoards of data. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_14.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="102" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_thumb_6.png" width="515" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you’ve never created a list, you open SharePoint, navigate to your home page, click View All Site Content, click Create, and under Custom Lists click Custom List. Complete the Name and Description fields for your new list and click Create. &lt;/p&gt;  &lt;p&gt;Now that you’ve created the list, open Visual Studio 2010 and click File, New Project. Select WPF Application and provide a name (e.g. MySharePointData) and location for your project and click OK—see the figure below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="334" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_thumb.png" width="481" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We’re going to keep things simple here and add nine controls to the WPF UI:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Four labels&lt;/li&gt;    &lt;li&gt;One listbox&lt;/li&gt;    &lt;li&gt;Two textboxes&lt;/li&gt;    &lt;li&gt;Two buttons&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you inspect the XAML code below, you’ll see that this is the resulting code that was generated from me dragging and dropping controls from the VS 2010 Toolbox onto the XAML designer. Check out the different properties of the controls. &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;Window x:Class=&amp;quot;MySharePointData.Window1&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xmlns=&amp;quot;&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;"&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xmlns:x=&amp;quot;&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;"&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Title=&amp;quot;SharePoint Data&amp;quot; Height=&amp;quot;321&amp;quot; Width=&amp;quot;356&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Grid&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Button Content=&amp;quot;Get Data&amp;quot; Height=&amp;quot;23&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;54,233,0,0&amp;quot; Name=&amp;quot;btnGetData&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;75&amp;quot; Click=&amp;quot;btnGetData_Click&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Button Content=&amp;quot;Exit&amp;quot; Height=&amp;quot;23&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;163,233,0,0&amp;quot; Name=&amp;quot;btnExit&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;75&amp;quot; Click=&amp;quot;btnExit_Click&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Label Content=&amp;quot;My SharePoint List Data&amp;quot; Height=&amp;quot;28&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;21,12,0,0&amp;quot; Name=&amp;quot;lblFormTitle&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;232&amp;quot; FontSize=&amp;quot;14&amp;quot; FontWeight=&amp;quot;Bold&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Label Content=&amp;quot;Product Name:&amp;quot; Height=&amp;quot;28&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;21,64,0,0&amp;quot; Name=&amp;quot;lblTitle&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;89&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Label Content=&amp;quot;Product Num:&amp;quot; Height=&amp;quot;28&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;21,110,0,0&amp;quot; Name=&amp;quot;lblProductNum&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;120&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Label Content=&amp;quot;Product Sales:&amp;quot; Height=&amp;quot;28&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;21,161,0,0&amp;quot; Name=&amp;quot;lblSales&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;120&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ListBox SelectionChanged=&amp;quot;lstBxProducts_SelectionChanged&amp;quot; Height=&amp;quot;37&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;116,55,0,0&amp;quot; Name=&amp;quot;lstBxProducts&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;196&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TextBox Height=&amp;quot;25&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;116,110,0,0&amp;quot; Name=&amp;quot;txtBxProductNum&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;196&amp;quot; IsEnabled=&amp;quot;False&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;TextBox Height=&amp;quot;25&amp;quot; HorizontalAlignment=&amp;quot;Left&amp;quot; Margin=&amp;quot;116,161,0,0&amp;quot; Name=&amp;quot;txtBxSales&amp;quot; VerticalAlignment=&amp;quot;Top&amp;quot; Width=&amp;quot;196&amp;quot; IsEnabled=&amp;quot;False&amp;quot; /&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/Grid&amp;gt;      &lt;br /&gt;&amp;lt;/Window&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The resulting UI from the above code looks like the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="408" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_thumb_1.png" width="524" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you’ve created your WPF UI, you now will want to add some code-behind to actually do something. The first thing you’ll want to do is to add the SharePoint Lists web service. This provides you with the ability to interact with lists and data in your lists. You can see from the figure below the subset of methods that are available to you. To add the web service to the VS 2010 project, right click References and select Service References. Click Advanced and then click Add Web Reference, and then discover the Lists web service by clicking Web Services on the Local Machine (or entering the service URL in the URL: field, e.g. “&lt;a title="http://stefoxdemo/_vti_bin/Lists.asmx" href="http://stefoxdemo/_vti_bin/Lists.asmx"&gt;http://stefoxdemo/_vti_bin/Lists.asmx&lt;/a&gt;”). Provide a name for the service reference (e.g. SPListGetData) and click Add Reference. You now have a reference added to the Lists web service and can use it in code. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_6.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="351" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_thumb_2.png" width="506" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;One thing I used in my solution was a custom object, which I used to store (in-memory) a list collection of the different elements in my list. This allowed me to use the collection of objects later and run a simple LINQ query against it. To add an object, right-click the project node and select Add, and then select Class.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_8.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="396" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_thumb_3.png" width="525" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The custom object comprises three strings (mapping to the three parts of my SharePoint list): 1) a title (or product name), 2) a product number, and 3) a sales figure. The code I have for my custom object is as follows—note that I’ve set the properties on my object to both read/write, but in this file all we’re really doing is reading.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System;     &lt;br /&gt;using System.Collections.Generic;      &lt;br /&gt;using System.Linq;      &lt;br /&gt;using System.Text; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;namespace MySharePointData     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160; public class MySPData      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string clsTitle { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string clsProductNum { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string clsSales { get; set; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;After you’ve added the class to the project, you can now add some of the heavier-weight code. This code is going to set some class-level variables, use the Lists web service to get the data in my list, iterate through the list and use XLINQ to create and populate the custom object, and then if the user changes the selection on the list the fields will be updated through a LINQ query. &lt;/p&gt;  &lt;p&gt;Let’s start with the class-level variables. I’ve added a string to represent the selected item in the listbox, a list collection object (which will be in-memory collection object) called lstSPData, and the declaration of an XDocument (called myXMLDoc), which will be used as the document to which I’ll add the items from the SharePoint list. &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string strSelectedItem = &amp;quot;&amp;quot;; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;List&amp;lt;MySPData&amp;gt; lstSPData = new List&amp;lt;MySPData&amp;gt;(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;XDocument myXMLDoc = new XDocument();     &lt;br /&gt;&amp;#160;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;…&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Once you’ve added these three top-level items to the class, you’ll want to double-click on one of the buttons you added to the UI and then add some code for that. In my case, the name of the button was btnGetData and the subsequent event was called btnGetData_Click. The code below shows what I added into that method. There are a few things that are interesting in the code. For example, note that one of the first things we do is create a proxy for the web service, pass my default credentials to call the service (SharePoint must know who you are even at the service level), and then uses an XMLNode object to get all of the items from the Products list. You’ll then also see that I’ve began creating an XML object, but creating an XElement and then setting the declaration type of the XML Document I created earlier. Then to get the data out of the object, you iterate through the nodes and grab the inner text of the XML. In this case, you need to be sure you’re pulling from the SharePoint XML (this is the “ows_Title,” “ows_ProductNum,” and “ows_Sales”). From there on, two major things are happening. The first is that I’m reassigning the XML data from the object being passed back from the web service call with some XML that I’m more comfortable with (and a structure that I prefer to work with), and then I’m creating an instance of the custom object I created and then am populating the list collection for that custom object as I iterate through each of the XML nodes of the returned XML data. You’ll then see two lines of code lying outside of the foreach statement, and this is where I’m first adding the more comfortable version of the XML data to my originally-created XML document, and then I’m saving that XML document to a file share. &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;private void btnGetData_Click(object sender, RoutedEventArgs e)     &lt;br /&gt;{ &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160; MySharePointData.SPListGetData.Lists proxy = new MySharePointData.SPListGetData.Lists();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; proxy.Url = &amp;quot;&lt;/font&gt;&lt;a href="http://stefoxdemo/_vti_bin/Lists.asmx&amp;quot;;"&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://stefoxdemo/_vti_bin/Lists.asmx&amp;quot;;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160; XmlNode myLIstItems = proxy.GetListItems(&amp;quot;Products&amp;quot;, null, null, null, null, null, null); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160; XElement newRootElement = new XElement(&amp;quot;NewData&amp;quot;);&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160; myXMLDoc.Declaration = new XDeclaration(&amp;quot;1.0&amp;quot;, &amp;quot;utf-8&amp;quot;, &amp;quot;true&amp;quot;); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160; foreach (XmlNode outerNode in myLIstItems.ChildNodes)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; { &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (outerNode.NodeType.Equals(System.Xml.XmlNodeType.Element))     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (XmlNode node in outerNode.ChildNodes)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (node.NodeType.Equals(System.Xml.XmlNodeType.Element))     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XmlNode listFieldTitle = node.Attributes.GetNamedItem(&amp;quot;ows_Title&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XmlNode listFieldProductNum = node.Attributes.GetNamedItem(&amp;quot;ows_ProductNum&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XmlNode listFieldSales = node.Attributes.GetNamedItem(&amp;quot;ows_Sales&amp;quot;); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strListFieldTitle = listFieldTitle.InnerText;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strListFieldProductNum = listFieldProductNum.InnerText;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strListFieldSales = listFieldSales.InnerText; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XElement xmlData = new XElement(&amp;quot;MyData&amp;quot;,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new XElement(&amp;quot;Title&amp;quot;, strListFieldTitle),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new XElement(&amp;quot;ProductNum&amp;quot;, strListFieldProductNum),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new XElement(&amp;quot;Sales&amp;quot;, strListFieldSales)); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newRootElement.Add(xmlData);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstBxProducts.Items.Add(strListFieldTitle); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MySPData clsSPDataInstance = new MySPData(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; clsSPDataInstance.clsTitle = strListFieldTitle;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; clsSPDataInstance.clsProductNum = strListFieldProductNum;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; clsSPDataInstance.clsSales = strListFieldSales;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstSPData.Add(clsSPDataInstance); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160; myXMLDoc.Add(newRootElement);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; myXMLDoc.Save(&amp;quot;c:\\SPData\\MySharePointData.xml&amp;quot;);       &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The key takeaway from this, though, is that there are now two data structures in this app: one that I’ve created as an XML file and saved to disk (or alternatively could be used to inject into another program, say a Word document through Open XML); and one that now represents a list collection of the custom object—this is my in-memory version of the data that I can use for querying. &lt;/p&gt;  &lt;p&gt;The next bit of code we’ll look at handles the user interacting with the listbox; that is, when the user changes their selection this will invoke the lstBxProducts_SelectionChanged event, which triggers the following code. This code is fairly straight-forward. I’ve set three string variables as temporary variables, grabbed the currently selected item in the listbox (and am storing it in strSelectedItem) and then am using a LINQ query to get the other data in the record that maps to the product name selected in the listbox. Given the fact that this results in a list of one record, I’m then using the First method to grab the first (and only) element in that record and assigning the text property of the controls to those strings. &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;private void lstBxProducts_SelectionChanged(object sender, SelectionChangedEventArgs e)     &lt;br /&gt;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strTempTitle = &amp;quot;&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strTempProductNum = &amp;quot;&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strTempSales = &amp;quot;&amp;quot;; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strSelectedItem = lstBxProducts.SelectedItem.ToString(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var lstXMLObject = from lstXML in lstSPData     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where lstXML.clsTitle == strSelectedItem      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select new      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strTempTitle = lstXML.clsTitle,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strTempProductNum = lstXML.clsProductNum,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strTempSales = lstXML.clsSales &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtBxProductNum.Text = lstXMLObject.First().strTempProductNum;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtBxSales.Text = lstXMLObject.First().strTempSales; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The finished product results in the following cool and slick (okay, not so much…but functional) WPF UI first getting SharePoint list data and then allowing you to query that data in the context of your whiz-bang UI. Note that it also saves the XML to your local file system. When you F5, you should see the following UI. Click the Get Data button, which triggers the service call. This will populate the Product Name listbox and subsequently allow you to click on an item in the listbox and filter on that item. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_16.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="296" alt="image" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/RetrievingSharePointListDatausingXLINQ_9877/image_thumb_7.png" width="327" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If you browse to the location where you saved your XML file (in my case this was c:\SPData), you will find an XML file that hopefully resembles the data you have in your list. &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;     &lt;br /&gt;&amp;lt;NewData&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;MyData&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;ALK-Bike Crank&amp;lt;/Title&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProductNum&amp;gt;0398021&amp;lt;/ProductNum&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Sales&amp;gt;$209,002.98&amp;lt;/Sales&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/MyData&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;MyData&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;OUU-Bicycle Riding Helmet&amp;lt;/Title&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProductNum&amp;gt;38271920&amp;lt;/ProductNum&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Sales&amp;gt;$901,199.23&amp;lt;/Sales&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/MyData&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;MyData&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;YTT-Road Bicycle Wheel&amp;lt;/Title&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProductNum&amp;gt;03929901&amp;lt;/ProductNum&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Sales&amp;gt;$890,872.12&amp;lt;/Sales&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/MyData&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;MyData&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;HGT-Off-Road Bike Gear Pack&amp;lt;/Title&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProductNum&amp;gt;3746281&amp;lt;/ProductNum&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Sales&amp;gt;$459,922.10&amp;lt;/Sales&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/MyData&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;MyData&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Title&amp;gt;BKP-Bianchi Racing Bike&amp;lt;/Title&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ProductNum&amp;gt;3902443&amp;lt;/ProductNum&amp;gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Sales&amp;gt;$2,019,100.29&amp;lt;/Sales&amp;gt;      &lt;br /&gt;&amp;#160; &amp;lt;/MyData&amp;gt;      &lt;br /&gt;&amp;lt;/NewData&amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Lastly, the Exit button you see on my UI also calls a method; basically a simple method to exit the application. The code for this is as follows: &lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;private void btnExit_Click(object sender, RoutedEventArgs e)     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Application.Current.Shutdown();      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;And that’s it! Wasn’t that fun? I thought so. For your reference, the entire code sample from the core Windows.xaml.cs file is pasted below.&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System;     &lt;br /&gt;using System.Collections.Generic;      &lt;br /&gt;using System.Linq;      &lt;br /&gt;using System.Text;      &lt;br /&gt;using System.Windows;      &lt;br /&gt;using System.Windows.Controls;      &lt;br /&gt;using System.Windows.Data;      &lt;br /&gt;using System.Windows.Documents;      &lt;br /&gt;using System.Windows.Input;      &lt;br /&gt;using System.Windows.Media;      &lt;br /&gt;using System.Windows.Media.Imaging;      &lt;br /&gt;using System.Windows.Navigation;      &lt;br /&gt;using System.Windows.Shapes;      &lt;br /&gt;using System.Xml;      &lt;br /&gt;using System.Xml.Linq; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;namespace MySharePointData     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public partial class Window1 : Window      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Window1()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InitializeComponent();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strSelectedItem = &amp;quot;&amp;quot;; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;MySPData&amp;gt; lstSPData = new List&amp;lt;MySPData&amp;gt;(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XDocument myXMLDoc = new XDocument();&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void btnGetData_Click(object sender, RoutedEventArgs e)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MySharePointData.SPListGetData.Lists proxy = new MySharePointData.SPListGetData.Lists();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; proxy.Url = &amp;quot;&lt;/font&gt;&lt;a href="http://stefoxdemo/_vti_bin/Lists.asmx&amp;quot;;"&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://stefoxdemo/_vti_bin/Lists.asmx&amp;quot;;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XmlNode myLIstItems = proxy.GetListItems(&amp;quot;TR8&amp;quot;, null, null, null, null, null, null);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Creation      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XElement newRootElement = new XElement(&amp;quot;NewData&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myXMLDoc.Declaration = new XDeclaration(&amp;quot;1.0&amp;quot;, &amp;quot;utf-8&amp;quot;, &amp;quot;true&amp;quot;); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (XmlNode outerNode in myLIstItems.ChildNodes)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (outerNode.NodeType.Equals(System.Xml.XmlNodeType.Element))     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (XmlNode node in outerNode.ChildNodes)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (node.NodeType.Equals(System.Xml.XmlNodeType.Element))     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XmlNode listFieldTitle = node.Attributes.GetNamedItem(&amp;quot;ows_Title&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XmlNode listFieldProductNum = node.Attributes.GetNamedItem(&amp;quot;ows_ProductNum&amp;quot;);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XmlNode listFieldSales = node.Attributes.GetNamedItem(&amp;quot;ows_Sales&amp;quot;); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strListFieldTitle = listFieldTitle.InnerText;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strListFieldProductNum = listFieldProductNum.InnerText;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strListFieldSales = listFieldSales.InnerText; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; XElement xmlData = new XElement(&amp;quot;MyData&amp;quot;,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new XElement(&amp;quot;Title&amp;quot;, strListFieldTitle),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new XElement(&amp;quot;ProductNum&amp;quot;, strListFieldProductNum),      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new XElement(&amp;quot;Sales&amp;quot;, strListFieldSales)); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newRootElement.Add(xmlData);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //tempAll = strListFieldTitle + &amp;quot; &amp;quot; + strListFieldProductNum + &amp;quot; &amp;quot; + strListFieldSales;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstBxProducts.Items.Add(strListFieldTitle); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MySPData clsSPDataInstance = new MySPData(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; clsSPDataInstance.clsTitle = strListFieldTitle;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; clsSPDataInstance.clsProductNum = strListFieldProductNum;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; clsSPDataInstance.clsSales = strListFieldSales;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lstSPData.Add(clsSPDataInstance); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myXMLDoc.Add(newRootElement);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myXMLDoc.Save(&amp;quot;c:\\SPData\\MySharePointData.xml&amp;quot;); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MessageBox.Show(&amp;quot;XML Data Saved to File!&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void btnExit_Click(object sender, RoutedEventArgs e)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Application.Current.Shutdown();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void lstBxProducts_SelectionChanged(object sender, SelectionChangedEventArgs e)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strTempTitle = &amp;quot;&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strTempProductNum = &amp;quot;&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string strTempSales = &amp;quot;&amp;quot;; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strSelectedItem = lstBxProducts.SelectedItem.ToString(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var lstXMLObject = from lstXML in lstSPData     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where lstXML.clsTitle == strSelectedItem      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select new      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strTempTitle = lstXML.clsTitle,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strTempProductNum = lstXML.clsProductNum,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strTempSales = lstXML.clsSales &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtBxProductNum.Text = lstXMLObject.First().strTempProductNum;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; txtBxSales.Text = lstXMLObject.First().strTempSales; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Happy coding!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9770250" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MOSS+platform/default.aspx">MOSS platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Steve+Fox/default.aspx">Steve Fox</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Web+service/default.aspx">Web service</category></item><item><title>Quick Announcement: ODC is being Wrapped into SPC</title><link>http://blogs.msdn.com/steve_fox/archive/2009/06/08/quick-announcement-odc-is-being-wrapped-into-spc.aspx</link><pubDate>Mon, 08 Jun 2009 05:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9706522</guid><dc:creator>Steve Fox</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9706522.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9706522</wfw:commentRss><description>&lt;P&gt;Hey gang,&lt;/P&gt;
&lt;P&gt;Just a quick announcement, if you attended the Office Developer Conference (ODC) last year you may be wondering what happened to it this year? Well, it's going to be subsumed within the SharePoint Conference (SPC), which is happening October 19th-22nd. This is actually going to be great because that means you'll be able to get all of the latest SharePoint &lt;EM&gt;and&lt;/EM&gt; Office development sessions in one conference--what we call the Twofer deal! More info can be found here: &lt;A href="http://blogs.msdn.com/sharepoint/archive/2009/06/01/office-developer-conference-moving-to-sharepoint-conference-2009.aspx"&gt;http://blogs.msdn.com/sharepoint/archive/2009/06/01/office-developer-conference-moving-to-sharepoint-conference-2009.aspx&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9706522" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category></item><item><title>Using Media Streaming Services to Integrate Silverlight with SharePoint</title><link>http://blogs.msdn.com/steve_fox/archive/2009/03/28/using-media-streaming-services-to-integrate-silverlight-with-sharepoint.aspx</link><pubDate>Sat, 28 Mar 2009 20:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9516136</guid><dc:creator>Steve Fox</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9516136.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9516136</wfw:commentRss><description>&lt;P&gt;One of the cool things about the Media Streaming Services is that you can circumvent some of the server set-up for SharePoint and still integrate a Silverlight (SL) app into your SharePoint (SP) site. By using the Media Streaming Services, which are free by the way, you can integrate a cool little SL app into your SP site and then simply use the &lt;FONT face="Courier New" color=#0000ff size=2&gt;&amp;lt;iframe&amp;gt;&lt;/FONT&gt; code that is auto-generated to integrate the SL app into a Content Editor Web Part. &lt;/P&gt;
&lt;P&gt;To complete this integration requires four main steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create the SL app;&lt;/LI&gt;
&lt;LI&gt;Add the SL app to your Media Streaming Services site;&lt;/LI&gt;
&lt;LI&gt;Configure the app and grab the &lt;FONT face="Courier New" color=#0000ff size=2&gt;&amp;lt;iframe&amp;gt;&lt;/FONT&gt; code; and&lt;/LI&gt;
&lt;LI&gt;Use the Content Editor Web Part to integrate the SL app with SP.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Let’s do a quick walk through to help get you started.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Silverlight App&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;We’ll first assume that you’ve got the SL app created. I created a simple app that uses the Community toolkit to render a simple chart. You can get more information on this here: &lt;A title=http://www.codeplex.com/Silverlight href="http://www.codeplex.com/Silverlight" mce_href="http://www.codeplex.com/Silverlight"&gt;http://www.codeplex.com/Silverlight&lt;/A&gt;. I ensured the correct DLLs were registered in my GAC and then added the appropriate references in my SL app to create a somewhat interesting looking chart. The project contains an object called SharePointData.cs (an oddly named class that represents the items that will be displayed in my chart, which in this app is a set of courses in my bucket of course inventory). Note in the figure below the DataVisualization and Theming DLLs that have been added as references in the project. (I tweaked Tim’s example from his blog-post &lt;A href="http://searchvote.com/default.aspx?market=en-us&amp;amp;flight=0&amp;amp;LiveServer=Auto&amp;amp;q=silverlight+community+toolkit%2C+tim+heuer&amp;amp;vertical=Web&amp;amp;qs=n"&gt;&lt;FONT color=#006ff7&gt;here&lt;/FONT&gt;&lt;/A&gt;.)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=413 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb.png" width=527 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The custom class code is as follows: &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;using System; &lt;BR&gt;using System.Net; &lt;BR&gt;using System.Windows; &lt;BR&gt;using System.Windows.Controls; &lt;BR&gt;using System.Windows.Documents; &lt;BR&gt;using System.Windows.Ink; &lt;BR&gt;using System.Windows.Input; &lt;BR&gt;using System.Windows.Media; &lt;BR&gt;using System.Windows.Media.Animation; &lt;BR&gt;using System.Windows.Shapes; &lt;BR&gt;using System.Collections.ObjectModel; &lt;BR&gt;using System.Collections.Generic; &lt;BR&gt;using System.ComponentModel; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;namespace BarChart &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class SharePointData &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class CourseData &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string TrnCourse { get; set; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public int NumCourseSales { get; set; } &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static List&amp;lt;CourseData&amp;gt; loadChartData() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;CourseData&amp;gt; courseList = new List&amp;lt;CourseData&amp;gt;(); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 17, TrnCourse = "VSTS-399" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 39, TrnCourse = "OFC2-214" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 67, TrnCourse = "SQL1-151" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 13, TrnCourse = "ARCH-402" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 53, TrnCourse = "DEV1-164" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 42, TrnCourse = "VSP1-010" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 15, TrnCourse = "SPDEV-302" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 31, TrnCourse = "SPARC-201" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 29, TrnCourse = "SPD1-159" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 44, TrnCourse = "SPD2-203" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 44, TrnCourse = "AZUR-227" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 42, TrnCourse = "OFC3-365" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 32, TrnCourse = "VBA1-102" }); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; courseList.Add(new CourseData() { NumCourseSales = 13, TrnCourse = "WEBD-838" }); &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return courseList; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;}&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;The XAML code that renders the chart is as follows:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;lt;UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"&amp;nbsp; x:Class="BarChart.Page" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns="&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml/presentation%22" mce_href='http://schemas.microsoft.com/winfx/2006/xaml/presentation"'&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/FONT&gt;&lt;/A&gt; &lt;BR&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:x="&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/winfx/2006/xaml%22" mce_href='http://schemas.microsoft.com/winfx/2006/xaml"'&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;http://schemas.microsoft.com/winfx/2006/xaml"&lt;/FONT&gt;&lt;/A&gt; &lt;BR&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:chart="clr-namespace:Microsoft.Windows.Controls.DataVisualization.Charting;assembly=Microsoft.Windows.Controls.DataVisualization"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Width="800" Height="450"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Grid x:Name="LayoutRoot" Background="White"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;StackPanel Orientation="Vertical" Margin="15"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;chart:Chart Height="200" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LegendTitle="Item" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title="Course Inventory" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x:Name="MyBarChart"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;chart:Chart.Series&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;chart:ColumnSeries x:Name="MySalesChartData" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title="Courses"&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ItemsSource="{Binding}"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IndependentValueBinding="{Binding TrnCourse}"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DependentValueBinding="{Binding NumCourseSales}"/&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/chart:Chart.Series&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/chart:Chart&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/StackPanel&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Grid&amp;gt; &lt;BR&gt;&amp;lt;/UserControl&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;And the code-behind for the SL app is as follows: &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;using System; &lt;BR&gt;using System.Collections.Generic; &lt;BR&gt;using System.Linq; &lt;BR&gt;using System.Net; &lt;BR&gt;using System.Windows; &lt;BR&gt;using System.Windows.Controls; &lt;BR&gt;using System.Windows.Documents; &lt;BR&gt;using System.Windows.Input; &lt;BR&gt;using System.Windows.Ink; &lt;BR&gt;using System.Windows.Media; &lt;BR&gt;using System.Windows.Media.Animation; &lt;BR&gt;using System.Windows.Shapes; &lt;BR&gt;using Microsoft.Windows.Controls.DataVisualization.Charting; &lt;BR&gt;using Microsoft.Windows.Controls.DataVisualization; &lt;BR&gt;using Microsoft.Windows.Controls.Theming; &lt;BR&gt;using System.Collections.ObjectModel; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;namespace BarChart &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class Page : UserControl &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List&amp;lt;SharePointData.CourseData&amp;gt; cr = new List&amp;lt;SharePointData.CourseData&amp;gt;(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Page()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent();&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Cordia New" color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cr = SharePointData.loadChartData(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ColumnSeries column = MyBarChart.Series[0] as ColumnSeries; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; column.ItemsSource = cr; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Note that you could likely remove a number of the Using statements to optimize your code.&lt;/P&gt;
&lt;P&gt;With these three elements working together, you can run the application and you will get the following results:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_4.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=157 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_1.png" width=542 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The thing you want to do now is to get this to the Media Streaming Services. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Uploading the XAP File into the Media Streaming Services&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;After you build your SL app, you’ll want to upload the XAP file into the Media Streaming Services. &lt;/P&gt;
&lt;P&gt;To do this, go to &lt;A title=http://silverlight.live.com/ href="http://silverlight.live.com/" mce_href="http://silverlight.live.com/"&gt;http://silverlight.live.com/&lt;/A&gt; and sign in with your Live account. Then click on Manage Applications and click Upload Application. Provide a name for the file you’re going to upload, click Create and then browse to your XAP file (i.e. your SL app) and then upload it to the Streaming Media Services. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Configuring the SL App&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;You’ll then need to click the Create link to create a manifest for the SL app. For my example, I only filled out a couple of the fields (see below), but you could complete others and even configure things like background images if you wanted. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_6.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=416 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_2.png" width=519 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Click Update when you’re done. You’ll then be presented with a number of different options for embedding the SL app into your web page. I typically use the first one, but you can use any one of these that would match your needs. So, copy the code and we’ll move onto the final step in the process.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_8.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=481 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_3.png" width=500 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Use the Content Editor Web Part to integrate the SL app with SP&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Go to your SP site and click Site Actions and Edit Page. Click Add a web part and then select Content Editor Web Part from the gallery. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_10.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=506 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_4.png" width=492 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Once the web part’s been added, click the Open in tool pane link to configure the web part. Click the Source Editor and then paste the &lt;FONT face="Courier New" color=#0000ff size=2&gt;&amp;lt;iframe&amp;gt;&lt;/FONT&gt; code into the editor, which should look something like the following (depending on how you’ve configured the SL app).&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_12.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=417 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_5.png" width=495 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Click Save, and voila your new whizbang SL app should render via the Streaming Media Services site. You can use the source editor to adjust the height and width if need be, and you can set the Chrome Type to none if you want. I personally like the cleaner look with the standard Content Editor Web Part title on the web part chrome. The end result should be the following: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_14.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=193 alt=image src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_6.png" width=533 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/UsingMediaStreamingServicestoIntegrateSi_8507/image_thumb_6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Pretty cool! I will also mention that this not only works for your SharePoint site on premises (i.e. the SP instance your company hosts), but this also works for SP Online as well—so it’s a very easy way to code custom apps for SP Online. Further, this alleviates the need to do a lot of the web.config changes (so you don’t need direct admin access to the SP server), which is always helpful when you’re trying to develop and deploy cool and funky little apps for your shazammy SP site.&lt;/P&gt;
&lt;P&gt;Happy coding all, and I hope this post was useful.&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9516136" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight+Blueprint+for+SharePoint/default.aspx">Silverlight Blueprint for SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight+and+SharePoint/default.aspx">Silverlight and SharePoint</category></item><item><title>Silverlight, SharePoint, Services…Oh Yeah!!!</title><link>http://blogs.msdn.com/steve_fox/archive/2009/02/15/silverlight-sharepoint-services-oh-yeah.aspx</link><pubDate>Sun, 15 Feb 2009 05:05:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9423169</guid><dc:creator>Steve Fox</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9423169.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9423169</wfw:commentRss><description>&lt;p&gt;The last blog post I wrote was on interacting with SharePoint using services. One of the things that I’ve been quite involved in over the past year or so has been Silverlight and SharePoint integration. You will definitely see more of this type of development, so building off of my last post I decided to write a blog on consuming a web service with SharePoint.&lt;/p&gt;  &lt;p&gt;That said, this blog post will walk you through how to create a Web service that integrates with the SharePoint object model and then uses that service in a Silverlight application (which we’ll embed within SharePoint). It is an excerpt from a wider Silverlight and SharePoint 1-day training that I’ve been building at work (with the help of Advaiya). It also complements a book Paul Stubbs and I just wrote called “Professional SharePoint 2007 Development using Silverlight 2.” You can check this book out here: &lt;a title="http://www.amazon.com/Professional-Microsoft-SharePoint-Development-Silverlight/dp/0470434007/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1234663767&amp;amp;sr=8-1" href="http://www.amazon.com/Professional-Microsoft-SharePoint-Development-Silverlight/dp/0470434007/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1234663767&amp;amp;sr=8-1"&gt;http://www.amazon.com/Professional-Microsoft-SharePoint-Development-Silverlight/dp/0470434007/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1234663767&amp;amp;sr=8-1&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: I will cover WCF, Siverlight and SharePoint in a future blog post.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Your Environment&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Before you begin, make sure you’ve got the following environment set up: &lt;/p&gt;  &lt;p&gt;1.&amp;#160; Your web.config supports Silverlight. Check out the SIlverlight and SharePoint Blueprint (&lt;a title="http://www.codeplex.com/SL4SP" href="http://www.codeplex.com/SL4SP"&gt;http://www.codeplex.com/SL4SP&lt;/a&gt;) for more information as well as the recent MSDN article on this subject (&lt;a title="http://msdn.microsoft.com/en-us/magazine/dd148643.aspx" href="http://msdn.microsoft.com/en-us/magazine/dd148643.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/dd148643.aspx&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;2. Windows Server 2003, 2008, Silverlight runtime, Silverlight Tools for VS 2008 SP 1, VS 2008 SP1, and VSeWSS 1.2.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Building the Service&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The first thing you need to do is build the Web service. The Web service will be an ASMX-based web service (i.e. ASP.NET). (We will cover WCF-based services and Silverlight later on in the workshop.) To create the service, open Visual Studio 2008. Select File, New Web Site and then select ASP.NET Web Service. Choose the File System as the location and then select the language (e.g. Visual C#) and provide a path for the project. Click OK. Figure 1 provides a screenshot of the New Web Site dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image002_2.jpg"&gt;&lt;img title="clip_image002" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="334" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image002_thumb.jpg" width="519" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222388845"&gt;Figure &lt;/a&gt;1: New Web Site Dialog&lt;/p&gt;  &lt;p&gt;In Solution Explorer, change the names of the .asmx and .cs service files from the default Service.asmx and Service.cs (in the App_Code folder) to MyFirstSPService.asmx and MyFirstSPService.cs. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image004_2.jpg"&gt;&lt;img title="clip_image004" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="213" alt="clip_image004" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image004_thumb.jpg" width="276" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 2: Renaming the Service Files&lt;/p&gt;  &lt;p&gt;You’ll also need to update the class references and statements in the newly named files. For example, in MyFirstSPService.asmx ensure you have the following code:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;%@ WebService Language=&amp;quot;C#&amp;quot; CodeBehind=&amp;quot;~/App_Code/MyFirstSPService.cs&amp;quot; Class=&amp;quot;MyFirstSPService&amp;quot; %&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And in the MyFirstSPService.cs file, ensure you have the following code:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Collections.Generic;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Linq;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Web;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Web.Services;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;[WebService(Namespace = &amp;quot;http://tempuri.org/&amp;quot;)]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;// [System.Web.Script.Services.ScriptService]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public class MyFirstSPService : System.Web.Services.WebService&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public MyFirstSPService () {&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;//Uncomment the following line if using designed components &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;//InitializeComponent(); &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;[WebMethod]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public string HelloWorld() {&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;return &amp;quot;Hello World&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To make sure that your solution compiles, hit F5 or select Debug, Start Debugging on the Visual Studio 2008 menu. You may be prompted with the dialog in Figure 3. If you are, click OK.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image006_2.jpg"&gt;&lt;img title="clip_image006" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="194" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image006_thumb.jpg" width="422" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222389566"&gt;Figure &lt;/a&gt;3: Debugging Not Enabled&lt;/p&gt;  &lt;p&gt;If your solution successfully compiles and debugs, you will be presented with the following debug screen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image008_2.jpg"&gt;&lt;img title="clip_image008" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="369" alt="clip_image008" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image008_thumb.jpg" width="470" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 4: Debug Screen&lt;/p&gt;  &lt;p&gt;In the debug screen, you will see a link at the top representing the one web method (HelloWorld) that is available within the service. Click the HelloWorld link and then to test the service click the Invoke button—which returns a string with the value: “Hello World.” See Figure 5. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image010_2.jpg"&gt;&lt;img title="clip_image010" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="226" alt="clip_image010" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image010_thumb.jpg" width="501" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222391550"&gt;Figure &lt;/a&gt;5: Invoking the Hello World Web Method&lt;/p&gt;  &lt;p&gt;Now that you’ve tested the default service that is created for you when you create a Web service, go back to the Visual Studio project and replace the HelloWorld web method code with the following web method:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;[WebMethod]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public void useNormalMOSSApi(string SalesSPSite, string productName, string productNumber, string FY08Sales)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string strDashListRoot = SalesSPSite;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using (SPSite site = new SPSite(strDashListRoot))&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using (SPWeb web = site.OpenWeb())&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;web.AllowUnsafeUpdates = true;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SPList list = web.Lists[&amp;quot;FY 09 Sales&amp;quot;];&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SPListItem Item = list.Items.Add();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Item[&amp;quot;Title&amp;quot;] = productName;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Item[&amp;quot;ProductNum&amp;quot;] = productNumber;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Item[&amp;quot;Sales&amp;quot;] = FY08Sales;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Item.Update();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This code essentially enables you to set the context for a SharePoint web site and then add data to three different columns (Title, ProductNum and Sales) in a list called FY 09 Sales. &lt;/p&gt;  &lt;p&gt;When you add this code, you’ll get errors. This is because you need to add a reference to the Microsoft.SharePoint.dll. To do this, right-click the project name, select Add Reference and then select Windows SharePoint Services (as is shown in Figure 6) and click OK.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image012_2.jpg"&gt;&lt;img title="clip_image012" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="392" alt="clip_image012" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image012_thumb.jpg" width="465" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222392006"&gt;Figure &lt;/a&gt;6: Add Reference Dialog&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: In order for this service to work, you’d need to have created a custom list in SharePoint called “FY 09 Sales” with three columns of type Text called “Title,” “ProductNum,” and “Sales.” To do this, go to your SharePoint site and click View All Site Content at the root level site and then click Create. In the Custom Lists category, click Custom List. Make the Name “FY 09 Sales” and add a description to the Description field. When the list is created it will open by default. Click Settings and then select Create Column. Add each of the three aforementioned columns setting the type of information in the column to Single lines of text—see Figure 7. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image014_2.jpg"&gt;&lt;img title="clip_image014" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="286" alt="clip_image014" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image014_thumb.jpg" width="255" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222392293"&gt;Figure &lt;/a&gt;7: Setting the Column Type&lt;/p&gt;  &lt;p&gt;Getting back to the service, now that you’ve added the reference to the SharePoint DLL, add a using statement at the top of the class as follows:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using Microsoft.SharePoint;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The code errors should go away. The full MyFirstSPService.cs file should look like the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Collections.Generic;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Linq;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Web;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Web.Services;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using Microsoft.SharePoint;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;[WebService(Namespace = &amp;quot;http://tempuri.org/&amp;quot;)]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;// [System.Web.Script.Services.ScriptService]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public class MyFirstSPService : System.Web.Services.WebService&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public MyFirstSPService () {&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;//Uncomment the following line if using designed components &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;//InitializeComponent(); &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;[WebMethod]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public void useNormalMOSSApi(string SalesSPSite, string productName, string productNumber, string FY08Sales)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string strDashListRoot = SalesSPSite;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using (SPSite site = new SPSite(strDashListRoot))&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using (SPWeb web = site.OpenWeb())&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;web.AllowUnsafeUpdates = true;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SPList list = web.Lists[&amp;quot;FY 09 Sales&amp;quot;];&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SPListItem Item = list.Items.Add();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Item[&amp;quot;Title&amp;quot;] = productName;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Item[&amp;quot;ProductNum&amp;quot;] = productNumber;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Item[&amp;quot;Sales&amp;quot;] = FY08Sales;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Item.Update();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To test this, build the web site solution. Hit F5 and then test out the web method.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: You must create the SharePoint list before you can successfully test out the service.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image016_2.jpg"&gt;&lt;img title="clip_image016" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="362" alt="clip_image016" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image016_thumb.jpg" width="506" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 8: Testing the Service Call&lt;/p&gt;  &lt;p&gt;If your service is successful, you should have a result similar to the following in your SharePoint list:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image018_2.jpg"&gt;&lt;img title="clip_image018" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="87" alt="clip_image018" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image018_thumb.jpg" width="501" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 9: Service Result in SharePoint&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Deploying the Service&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Now that you’ve built the service, you need to deploy it. We’ll deploy it to IIS 7.0. If you’re using another version of IIS, the general process you’ll need to follow is to 1) Create a web site, 2) map the virtual path to the root web site path of the service, and 3) set permissions for the service. &lt;/p&gt;  &lt;p&gt;Open IIS and then expand the Connections until you see the web sites. Right-click Web Sites and select Add Web Site. Give the site a name, for example MyFirstSPServiceIISSite and then map the physical path of the service you just created to the IIS web site. See Figure 10. Assign an unused port. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Note&lt;/b&gt;: To test the service out on the local environment, click Test Settings. This will tell you if the service is reachable. If you do not get to successful tests, you’ll need to adjust the Connect as… settings. One way is to explicitly set the calling service with your (that is the local Windows credentials) to make sure the call will succeed. You then also need to go to the Authentication option in the Features view and set Windows Authentication to Enabled. In a production environment, you’ll need to use different settings—potentially having a user (e.g. IIS_User) for your service and enabling ASP.NET Authentication. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image020_2.jpg"&gt;&lt;img title="clip_image020" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="405" alt="clip_image020" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image020_thumb.jpg" width="419" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222393253"&gt;Figure &lt;/a&gt;10: Creating the IIS Site&lt;/p&gt;  &lt;p&gt;When you‘ve done this, click View, Refresh and then select MyFirstSPServiceIISSite in the Web Sites list and select Content View. You should see something similar to Figure 11. To make sure you’ll be able to &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image022_2.jpg"&gt;&lt;img title="clip_image022" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="350" alt="clip_image022" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image022_thumb.jpg" width="446" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222393561"&gt;Figure &lt;/a&gt;11: Content View of Web Site in IIS &lt;/p&gt;  &lt;p&gt;At this point, you’ll be able to right-click the MyFirstSPService.asmx file and select Browse. Test out the web method again to make sure you have another successful call in the service to the SharePoint site—see Figure 12. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image024_2.jpg"&gt;&lt;img title="clip_image024" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="90" alt="clip_image024" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image024_thumb.jpg" width="486" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222393763"&gt;Figure &lt;/a&gt;12: Second Successful Call&lt;/p&gt;  &lt;p&gt;While all the service testing at each step in the development process may seem monotonous, it is recommended as a good defensive programming practice. This way, if the service fails you have a better idea of where in the process it failed. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Building the Silverlight and SharePoint Application&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Now that you’ve created the service, you can now create the client side application, which is the Silverlight application that will eventually be deployed to SharePoint. Let’s first create the Silverlight application. &lt;/p&gt;  &lt;p&gt;Open Visual Studio 2008 and create a new solution, using the Blank Solution template. To do this, click File, New Project, and then select the Visual Studio Solutions and Blank Solution template. Provide a name for your solution and then click OK. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image026_2.jpg"&gt;&lt;img title="clip_image026" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="296" alt="clip_image026" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image026_thumb.jpg" width="439" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 13: Creating a Blank Solution&lt;/p&gt;  &lt;p&gt;Right-click the solution and then select Add ,New Project, and then in the Project Types category select Silverlight. In the Templates category select Silverlight Application and provide a name for your application, for example SPSilverlightClient. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image028_2.jpg"&gt;&lt;img title="clip_image028" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="285" alt="clip_image028" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image028_thumb.jpg" width="445" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 14: New Silverlight Application&lt;/p&gt;  &lt;p&gt;When prompted, just select Automatically generate a test page… as the test environment for the Silverlight application. You do not need the full web site for this solution. Navigate to the Page.xaml file and add the following XAML code to create your Silverlight UI.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;UserControl x:Class=&amp;quot;SPSilverlightClient.Page&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Width=&amp;quot;750&amp;quot; Height=&amp;quot;380&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;Canvas x:Name=&amp;quot;LayoutRoot&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;Canvas Width=&amp;quot;550&amp;quot; Height=&amp;quot;300&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;Path Width=&amp;quot;550&amp;quot; Height=&amp;quot;300&amp;quot; Canvas.Left=&amp;quot;38&amp;quot; Canvas.Top=&amp;quot;9&amp;quot; Stretch=&amp;quot;Fill&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Data=&amp;quot;F1 M 42.336,8.86813L 257.336,8.86813C 259.545,8.86813 261.336,10.659 261.336,12.8681L 261.336,77.8681C 261.336,80.0773 259.545,81.8681 257.336,81.8681L 42.336,81.8681C 40.1269,81.8681 38.336,80.0773 38.336,77.8681L 38.336,12.8681C 38.336,10.659 40.1269,8.86813 42.336,8.86813 Z &amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;Path.Fill&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;LinearGradientBrush StartPoint=&amp;quot;0.75,0.7&amp;quot; EndPoint=&amp;quot;0.75,-0.01&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;LinearGradientBrush.GradientStops&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;GradientStop Color=&amp;quot;Azure&amp;quot; Offset=&amp;quot;0&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;GradientStop Color=&amp;quot;#FFDCDCDC&amp;quot; Offset=&amp;quot;0.8&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;GradientStop Color=&amp;quot;#FFC3C3C3&amp;quot; Offset=&amp;quot;1&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/LinearGradientBrush.GradientStops&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/LinearGradientBrush&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/Path.Fill&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/Path&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/Canvas&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;50&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;15&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontFamily=&amp;quot;Trebuchet MS&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontWeight=&amp;quot;Bold&amp;quot; FontSize=&amp;quot;18&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Text=&amp;quot;Sales Information for FY 09&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Foreground=&amp;quot;#FFF3F3F3&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;51&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;16&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontFamily=&amp;quot;Trebuchet MS&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontWeight=&amp;quot;Bold&amp;quot; FontSize=&amp;quot;18&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Text=&amp;quot;Sales Information for FY 09&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Foreground=&amp;quot;#FF666666&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;!-- User entry form text and controls.--&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock x:Name=&amp;quot;txtBlckSites&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;50&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;50&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontFamily=&amp;quot;Trebuchet MS&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontWeight=&amp;quot;Bold&amp;quot; FontSize=&amp;quot;12&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Text=&amp;quot;Available SharePoint Sites: &amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Foreground=&amp;quot;#FF666666&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;ComboBox x:Name=&amp;quot;cmboBoxOfferings&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;210&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;50&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Height=&amp;quot;20&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Width=&amp;quot;290&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;DropDownClosed=&amp;quot;cmboBoxOfferings_DropDownClosed&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;ComboBoxItem x:Name=&amp;quot;optionOne&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock x:Name=&amp;quot;txtSPDev&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://stefoxdemo&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/TextBlock&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/ComboBoxItem&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;ComboBoxItem x:Name=&amp;quot;optionTwo&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock x:Name=&amp;quot;txtVSDev&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://sharepoint/sites/spotw&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/TextBlock&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/ComboBoxItem&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;ComboBoxItem x:Name=&amp;quot;OptionThree&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock x:Name=&amp;quot;txtSQLSRVDev&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://sharepoint/sites/sp14&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/TextBlock&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/ComboBoxItem&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;ComboBoxItem x:Name=&amp;quot;OptionFour&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock x:Name=&amp;quot;txtAdvSPDev&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://my/sites/stefox&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/TextBlock&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/ComboBoxItem&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;ComboBoxItem x:Name=&amp;quot;OptionFive&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock x:Name=&amp;quot;txtClientDev&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;http://sharepoint/sites/signup&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/TextBlock&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/ComboBoxItem&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/ComboBox&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;50&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;90&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontFamily=&amp;quot;Trebuchet MS&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontWeight=&amp;quot;Bold&amp;quot; FontSize=&amp;quot;12&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Text=&amp;quot;Site Description: &amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Foreground=&amp;quot;#FF666666&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock x:Name=&amp;quot;txtSiteDescr&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;210&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;90&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontFamily=&amp;quot;Trebuchet MS&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontWeight=&amp;quot;Bold&amp;quot; FontSize=&amp;quot;12&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Text=&amp;quot;Description Here.&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Foreground=&amp;quot;Black&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Width=&amp;quot;290&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;TextWrapping=&amp;quot;Wrap&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;50&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;130&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontFamily=&amp;quot;Trebuchet MS&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontWeight=&amp;quot;Bold&amp;quot; FontSize=&amp;quot;12&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Text=&amp;quot;Product Name: &amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Foreground=&amp;quot;#FF666666&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBox x:Name=&amp;quot;txtProductName&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Height=&amp;quot;25&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Width=&amp;quot;200&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;210&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;125&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;50&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;170&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontFamily=&amp;quot;Trebuchet MS&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontWeight=&amp;quot;Bold&amp;quot; FontSize=&amp;quot;12&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Text=&amp;quot;Product Number: &amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Foreground=&amp;quot;#FF666666&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBox x:Name=&amp;quot;txtProductNum&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Height=&amp;quot;25&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Width=&amp;quot;200&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;210&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;165&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBlock&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;50&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;215&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontFamily=&amp;quot;Trebuchet MS&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FontWeight=&amp;quot;Bold&amp;quot; FontSize=&amp;quot;12&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Text=&amp;quot;FY 09 Sales: &amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Foreground=&amp;quot;#FF666666&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;TextBox x:Name=&amp;quot;txtFY08Sales&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Height=&amp;quot;25&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Width=&amp;quot;200&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;210&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;210&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;Button x:Name=&amp;quot;btnWebServiceCall&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Height=&amp;quot;25&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Width=&amp;quot;60&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Content=&amp;quot;Insert&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;125&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;260&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Click=&amp;quot;btnWebServiceCall_Click&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;Button x:Name=&amp;quot;btnFieldsClear&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Height=&amp;quot;25&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Width=&amp;quot;60&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Content=&amp;quot;Clear&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Left=&amp;quot;215&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Canvas.Top=&amp;quot;260&amp;quot;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Click=&amp;quot;btnFieldsClear_Click&amp;quot;/&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/Canvas&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/UserControl&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;When complete, your Silverlight client UI should similar to Figure 15. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image030_2.jpg"&gt;&lt;img title="clip_image030" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="357" alt="clip_image030" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image030_thumb.jpg" width="455" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222394487"&gt;Figure &lt;/a&gt;15: Silverlight Client&lt;/p&gt;  &lt;p&gt;Notice that there are a number of key events that are associated with some of the controls in the XAML code. These correspond to code-behind events in the Page.xaml.cs file. Before we jump to the code-behind, add a reference to the service you created earlier. To do this, right click References and select Add Service Reference. To get the service URL, you can go into your IIS view, right-click the ASMX file and select Browse. Copy and paste the URL from the browser to the Address field in the Add Service Reference dialog—see Figure 16. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image032_2.jpg"&gt;&lt;img title="clip_image032" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="373" alt="clip_image032" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image032_thumb.jpg" width="463" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222394812"&gt;Figure &lt;/a&gt;16: Adding a Service Reference&lt;/p&gt;  &lt;p&gt;With the service added to the Silverlight client application, you can now add the code-behind that maps to the Silverlight UI. &lt;/p&gt;  &lt;p&gt;The first thing you’ll need is four class-level variables, which represent the data that we’re going to pass to the web method in our service. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string productName = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string productNumber = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string FY08Sales = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string SalesSPSite = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Then, you’ll need to add the other logic, which in the code to follow includes an event from the Insert button in the Silverlight UI and some logic that maps to the Clear button. &lt;/p&gt;  &lt;p&gt;The web service call, which is triggered from the button, looks like the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;private void btnWebServiceCall_Click(object sender, RoutedEventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;productName = txtProductName.Text;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;productNumber = txtProductNum.Text;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FY08Sales = txtFY08Sales.Text;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SPSilverlightClient.ASMXUpdateSPList.MyFirstSPServiceSoapClient proxy = new SPSilverlightClient.ASMXUpdateSPList.MyFirstSPServiceSoapClient();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;proxy.useNormalMOSSApiCompleted += new EventHandler&amp;lt;System.ComponentModel.AsyncCompletedEventArgs&amp;gt;(proxy_useNormalMOSSApiCompleted);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;proxy.useNormalMOSSApiAsync(SalesSPSite, productName, productNumber, FY08Sales);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;proxy.CloseAsync();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Note that Silverlight service calls are asynchronous, so you need to have a completed event, which in this application looks like the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;void proxy_useNormalMOSSApiCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;MessageBox.Show(&amp;quot;Can you believe it? This stuff actually works!&amp;quot;);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font face="tahoma" size="2"&gt;The code here obviously doesn’t do much other than issue a message to the user when the service call is complete. In production code, you would probably want to verify that there had been an update to the SharePoint list before issuing this type of message.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="tahoma" size="2"&gt;The btnFieldsClear_Click event, shown below, simply clears the user entries in the Silverlight UI.&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;private void btnFieldsClear_Click(object sender, RoutedEventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtFY08Sales.Text = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtProductName.Text = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtProductNum.Text = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You may also notice that there is an event that corresponds to the closing of the drop-down box. This is essentially place-holder code, but in reality should grab the text property of the selected item within the combo box and assign that value to SalesSPSite. However, since I only have one site to demo, I hard-coded the variable to always be that site. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;private void cmboBoxOfferings_DropDownClosed(object sender, EventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;//Be warned...lazy hard-coded variable data to follow.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;if (optionOne.IsSelected == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;FY 09 Sales Tracking Site&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;else if (optionTwo.IsSelected == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;SharePoint on the Web Metrics&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;else if (OptionThree.IsEnabled == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;Wave 14 Reports&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;else if (OptionFour.IsEnabled == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;Personal Metrics&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;else if (OptionFive.IsEnabled == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;Signage Reports&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;};&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you were to look at the code-behind in its entirety, this is what it would look like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Collections.Generic;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Linq;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Net;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Windows;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Windows.Controls;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Windows.Documents;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Windows.Input;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Windows.Media;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Windows.Media.Animation;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Windows.Shapes;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;namespace SPSilverlightClient&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public partial class Page : UserControl&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string productName = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string productNumber = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string FY08Sales = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;string SalesSPSite = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public Page()&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;InitializeComponent();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;private void btnWebServiceCall_Click(object sender, RoutedEventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;productName = txtProductName.Text;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;productNumber = txtProductNum.Text;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;FY08Sales = txtFY08Sales.Text;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SPSilverlightClient.ASMXUpdateSPList.MyFirstSPServiceSoapClient proxy = new SPSilverlightClient.ASMXUpdateSPList.MyFirstSPServiceSoapClient();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;proxy.useNormalMOSSApiCompleted += new EventHandler&amp;lt;System.ComponentModel.AsyncCompletedEventArgs&amp;gt;(proxy_useNormalMOSSApiCompleted);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;proxy.useNormalMOSSApiAsync(SalesSPSite, productName, productNumber, FY08Sales);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;proxy.CloseAsync();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;void proxy_useNormalMOSSApiCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;MessageBox.Show(&amp;quot;Can you believe it? This stuff actually works!&amp;quot;);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;private void btnFieldsClear_Click(object sender, RoutedEventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtFY08Sales.Text = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtProductName.Text = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtProductNum.Text = &amp;quot;&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;private void cmboBoxOfferings_DropDownClosed(object sender, EventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;//Be warned...lazy hard-coded variable data to follow.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;if (optionOne.IsSelected == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;FY 09 Sales Tracking Site&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;else if (optionTwo.IsSelected == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;SharePoint on the Web Metrics&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;else if (OptionThree.IsEnabled == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;Wave 14 Reports&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;else if (OptionFour.IsEnabled == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;Personal Metrics&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;else if (OptionFive.IsEnabled == true)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;txtSiteDescr.Text = &amp;quot;Signage Reports&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;SalesSPSite = &amp;quot;http://stefoxdemo&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;};&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;At this point, you are now done building the Silverlight UI. Let’s move on to the final part: building the SharePoint web part. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Building the SharePoint Web Part Host Container&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The SharePoint web part will serve as the object within SharePoint that will simply put host your Silverlight application. There are a number of ways to do this, of which this is one. &lt;/p&gt;  &lt;p&gt;Open the solution file (where you created your Silverlight application) and then right-click the solution and select Add, and New Project. Select the SharePoint project type and then select Web Part. Provide a name for your Web Part project.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image034_2.jpg"&gt;&lt;img title="clip_image034" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="293" alt="clip_image034" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image034_thumb.jpg" width="458" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 17: Adding SharePoint Web Part&lt;/p&gt;  &lt;p&gt;When your project is created, right click References and select Add Reference. Add the System.Web.Extensions DLL and System.Web.Silverlight DLL and click OK. See Figure 18&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image036_2.jpg"&gt;&lt;img title="clip_image036" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="336" alt="clip_image036" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image036_thumb.jpg" width="399" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a name="_Ref222396028"&gt;Figure &lt;/a&gt;18: Adding Silverlight References&lt;/p&gt;  &lt;p&gt;In the WebPart1.cs file (I removed and re-added a new Web Part item and called mine MyFirstSPServiceCall), you’ll need to have the following code. This checks for a ScriptManager object and also sets some properties for the Silverlight control we’ll add to the Controls collection.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;protected override void OnLoad(EventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;base.OnLoad(e);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ScriptManager sm = ScriptManager.GetCurrent(this.Page);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;if (sm == null)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;sm = new ScriptManager();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Controls.AddAt(0, sm);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;protected override void CreateChildControls()&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;base.CreateChildControls();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;System.Web.UI.SilverlightControls.Silverlight ctrl = new System.Web.UI.SilverlightControls.Silverlight();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ctrl.ID = &amp;quot;InsertSPListItem&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ctrl.Source = &amp;quot;http://stefoxdemo/XAPS1/SPListClient.xap&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ctrl.Width = new Unit(650);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ctrl.Height = new Unit(400);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Controls.Add(ctrl);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can edit the XML properties of your web part through the WSP View. For example, the following XML is from the .webpart XML file. You can see I’ve updated the name and description of the web part with something a little more intuitive.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;webParts&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;webPart xmlns=&amp;quot;http://schemas.microsoft.com/WebPart/v3&amp;quot;&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;metaData&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;!--&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;The following Guid is used as a reference to the web part class, &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;and it will be automatically replaced with actual type name at deployment time.&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;--&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;type name=&amp;quot;967945ef-8baa-406e-bda3-fe4b836b2f66&amp;quot; /&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;importErrorMessage&amp;gt;Cannot import MyFirstSPServiceCall Web Part.&amp;lt;/importErrorMessage&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/metaData&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;data&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;properties&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;property name=&amp;quot;Title&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;My First SharePoint Service Call Web Part&amp;lt;/property&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;property name=&amp;quot;Description&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;A web part that hosts a call into SharePoint to update a list.&amp;lt;/property&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/properties&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/data&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/webPart&amp;gt;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&amp;lt;/webParts&amp;gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Jumping back to the code for the actual web part, the complete code that you’ll need to have in the webpart.cs file (in my case MyFirstSPServiceCall.cs) is as follows: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Runtime.InteropServices;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Web.UI;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Web.UI.WebControls;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Web.UI.WebControls.WebParts;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using System.Xml.Serialization;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using Microsoft.SharePoint;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using Microsoft.SharePoint.WebControls;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;using Microsoft.SharePoint.WebPartPages;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;namespace SPSilverlightSPWP&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;[Guid(&amp;quot;967945ef-8baa-406e-bda3-fe4b836b2f66&amp;quot;)]&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public class MyFirstSPServiceCall : System.Web.UI.WebControls.WebParts.WebPart&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;public MyFirstSPServiceCall()&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;protected override void OnLoad(EventArgs e)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;base.OnLoad(e);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ScriptManager sm = ScriptManager.GetCurrent(this.Page);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;if (sm == null)&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;sm = new ScriptManager();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Controls.AddAt(0, sm);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;protected override void CreateChildControls()&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;{&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;base.CreateChildControls();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;System.Web.UI.SilverlightControls.Silverlight ctrl = new System.Web.UI.SilverlightControls.Silverlight();&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ctrl.ID = &amp;quot;InsertSPListItem&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ctrl.Source = &amp;quot;http://stefoxdemo/XAPS1/SPListClient.xap&amp;quot;;&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ctrl.Width = new Unit(650);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;ctrl.Height = new Unit(400);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;Controls.Add(ctrl);&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;At this point, you need to ensure the Debug property in your SharePoint project properties is set to your &lt;a href="http://localhost"&gt;http://localhost&lt;/a&gt; (or the correct server to which you’re deploying the web part), and you can deploy the web part. &lt;/p&gt;  &lt;p&gt;If you notice in the source property code of the Silverlight application, it references an absolute URL on a test server. This presupposes two things: 1) you’ve created a document library called XAPS1 and 2) you’ve added the XAP file (the compiled Silverlight application) into that document library. If you have not, then you will simply get a blank, white web part. Also, note that this is not the only way to do this. In &lt;i&gt;Professional SharePoint 2007 Development using Silverlight 2&lt;/i&gt;, there are a number of ways to deploy the web part that are discussed. &lt;/p&gt;  &lt;p&gt;To deploy the web part, right-click the SharePoint project and select Deploy. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Testing the Web Part&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Now that you’ve deployed the web part, you can now open your SharePoint server and add the new Silverlight web part to your SharePoint site. To do this, click Site Actions and Edit Page. Click Add a Web and then select your newly deployed web part from the Web gallery. Once you’ve added the web part, you can now interact with the Silverlight UI within SharePoint that further interacts with your SharePoint list (i.e. that SharePoint object model). &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image038_2.jpg"&gt;&lt;img title="clip_image038" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="345" alt="clip_image038" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image038_thumb.jpg" width="506" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 19: Silverlight Web Part in SharePoint&lt;/p&gt;  &lt;p&gt;When you click Insert, a new record will be added to the SharePoint list and a message will be issued, as coded in our Silverlight UI, to the user.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image040_2.jpg"&gt;&lt;img title="clip_image040" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="280" alt="clip_image040" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image040_thumb.jpg" width="505" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 20: Message Indicating Success&lt;/p&gt;  &lt;p&gt;Of course the success message is only one indication. To verify that a new record was indeed added to the FY 09 Sales , navigate to the list and verify the new information on the list. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image042_2.jpg"&gt;&lt;img title="clip_image042" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="87" alt="clip_image042" src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/0e6f762ad145_FE01/clip_image042_thumb.jpg" width="478" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Figure 21: Successful Addition of Record&lt;/p&gt;  &lt;p&gt;For more information on how to integrate Silverlight and SharePoint, check out &lt;i&gt;Professional SharePoint 2007 Development using Silverlight 2&lt;/i&gt; and &lt;a href="http://mssharepointdeveloper.com"&gt;http://mssharepointdeveloper.com&lt;/a&gt;. &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9423169" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MOSS+platform/default.aspx">MOSS platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight+and+SharePoint/default.aspx">Silverlight and SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Advanced+OBA/default.aspx">Advanced OBA</category></item><item><title>Web Services and SharePoint: How do I do it?</title><link>http://blogs.msdn.com/steve_fox/archive/2009/02/08/web-services-and-sharepoint-how-do-i-do-it.aspx</link><pubDate>Sun, 08 Feb 2009 08:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9406430</guid><dc:creator>Steve Fox</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9406430.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9406430</wfw:commentRss><description>&lt;P&gt;When building an OBA, you’re often going to want to either integrate with the native Web services for SharePoint (when I say SharePoint, in this instance I’m referring to both the WSS and the MOSS services) or you’ll want to create your own custom services. The question often comes up is how? In this post, I’ll show you a couple of different ways of doing this by creating a custom client app that achieves the same thing (i.e., inserts a record into a SharePoint list). Before we get to the client app, though, let’s quickly review a few of the more common ways that we can deploy a service: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;ASMX Web service that is deployed into the SharePoint hive (e.g. deployed into the _vti_bin or _layouts folder;&lt;/LI&gt;
&lt;LI&gt;ASMX Web service deployed to its own Web application domain;&lt;/LI&gt;
&lt;LI&gt;WCF service deployed into the _vti_bin or _layouts folder; and&lt;/LI&gt;
&lt;LI&gt;WCF service deployed into its own Web application domain.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;When deploying an ASMX service into the _vti_bin, there are a few things that you need to do in order to prepare your service to be supportable by SharePoint. While based on VS 2005, you can apply the same methods for VS 2008 by using the article here: &lt;A title=http://msdn.microsoft.com/en-us/library/ms464040.aspx href="http://msdn.microsoft.com/en-us/library/ms464040.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms464040.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms464040.aspx&lt;/A&gt;. Most important to remember are:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Add DLL to GAC;&lt;/LI&gt;
&lt;LI&gt;Run Disco tool against ASMX file;&lt;/LI&gt;
&lt;LI&gt;Add the appropriate amendments to the .dsco and .wsdl files (see the aforementioned article);&lt;/LI&gt;
&lt;LI&gt;Rename the x.dsco and x.wsdl files to be xdsco.aspx and xwsdl.aspx;&lt;/LI&gt;
&lt;LI&gt;Copy the .asmx file, xwsdl.aspx and xdisco.aspx files to the _vti_bin folder. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;When deploying a service (ASMX or WCF) to its own web app domain, you need to first make sure you create and publish your web service to a folder on your application server and then map that folder to an IIS web site. To do this:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Open IIS;&lt;/LI&gt;
&lt;LI&gt;Create a New Web Site;&lt;/LI&gt;
&lt;LI&gt;Map the Path to the folder where your service is published;&lt;/LI&gt;
&lt;LI&gt;Set Permissions (use either ASP.NET Impersonation or Windows Authentication and set to Enabled); and&lt;/LI&gt;
&lt;LI&gt;Refresh the view of your site.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Now you’ll likely need what is called a client access policy or cross-domain policy file, which are files that are required for cross-domain calls into SharePoint. You may also need to have the files in your published web site root folder as well as having them in your SharePoint site root folder. Note: While you can copy and paste the policy files into your IIS web site, remember that you should use SharePoint Designer to open the SharePoint site and then copy the policy files to the root directory of the site. Here is a snapshot of what the root folder in my Content View of IIS (7.0) looks like:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/MyIISView_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/MyIISView_2.jpg"&gt;&lt;IMG title=MyIISView style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=218 alt=MyIISView src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/MyIISView_thumb.jpg" width=513 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/MyIISView_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;When deploying a WCF service to SharePoint, you need to remember that you must create a VirtualPathProvider because SharePoint doesn’t support the loading of .svc files. A good summary of how to do this is here: &lt;A title=http://blah.winsmarts.com/2008-5-SharePoint_2007_as_a_WCF_host_-_Step_-4,_Write_a_Virtual_Path_Provider.aspx href="http://blah.winsmarts.com/2008-5-SharePoint_2007_as_a_WCF_host_-_Step_-4,_Write_a_Virtual_Path_Provider.aspx" mce_href="http://blah.winsmarts.com/2008-5-SharePoint_2007_as_a_WCF_host_-_Step_-4,_Write_a_Virtual_Path_Provider.aspx"&gt;http://blah.winsmarts.com/2008-5-SharePoint_2007_as_a_WCF_host_-_Step_-4,_Write_a_Virtual_Path_Provider.aspx&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;If you use the native Web services that ship with SharePoint (e.g. Lists, Excel Services, or BDC), you can simply open up a VS project and add these to your project. To discover the services, click Add a Web Reference and then click the Web services on this local machine (presumably you’ve got SharePoint on that machine), and then all of the SharePoint services will be listed. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/AvailableServices_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/AvailableServices_2.jpg"&gt;&lt;IMG title=AvailableServices style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=398 alt=AvailableServices src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/AvailableServices_thumb.jpg" width=538 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/AvailableServices_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;In my example, I’ll show you how to call a custom web service (that uses WCF and ASMX deployed to their own IIS web sites) and a native SharePoint web service that does the same thing as the custom code. The custom code in my service that I’m using to insert the record into a SharePoint list called “TR8” is listed as follows (at least this is how it looks for the ASMX service): &lt;/P&gt;
&lt;P&gt;using System; &lt;BR&gt;using System.Collections.Generic; &lt;BR&gt;using System.Linq; &lt;BR&gt;using System.Web; &lt;BR&gt;using System.Web.Services; &lt;BR&gt;using Microsoft.SharePoint; &lt;/P&gt;
&lt;P&gt;[WebService(Namespace = "&lt;A href="http://tempuri.org/%22)]" mce_href='http://tempuri.org/")]'&gt;http://tempuri.org/")]&lt;/A&gt; &lt;BR&gt;[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] &lt;BR&gt;// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. &lt;BR&gt;// [System.Web.Script.Services.ScriptService] &lt;BR&gt;public class UpdateSharePointList : System.Web.Services.WebService &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public UpdateSharePointList () { &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Uncomment the following line if using designed components &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //InitializeComponent(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [WebMethod] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void useNormalMOSSApi(string SalesSPSite, string productName, string productNumber, string FY08Sales) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string strDashListRoot = SalesSPSite; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPSite site = new SPSite(strDashListRoot)) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPWeb web = site.OpenWeb()) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; web.AllowUnsafeUpdates = true; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPList list = web.Lists["TR8"]; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPListItem Item = list.Items.Add(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item["Title"] = productName; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item["ProductNum"] = productNumber; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item["Sales"] = FY08Sales; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item.Update(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;The core code is similar for the WCF service; however, the major differences are standard WCF/ASMX differences—e.g. uses contracts as opposed to Web method declarations, and so on. After I created the services, I then added them to a VS 2008 project using the Add Service and Add Web Reference functions within VS. Here’s a snapshot of my project, so you can see all of the standard references, WCF reference and ASMX references (both the native SharePoint Lists.asmx reference and the custom ASMX service I built). &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/SimpleDataEntry_4.jpg" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/SimpleDataEntry_4.jpg"&gt;&lt;IMG title=SimpleDataEntry style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=389 alt=SimpleDataEntry src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/SimpleDataEntry_thumb_1.jpg" width=545 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/SimpleDataEntry_thumb_1.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Okay, enough on the service side; let’s take a look at the client code. &lt;/P&gt;
&lt;P&gt;In this example, I built a simple client UI to test out a couple of different services. The following UI shows the form:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/SimpleDataEntry_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/SimpleDataEntry_2.jpg"&gt;&lt;IMG title=SimpleDataEntry style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=386 alt=SimpleDataEntry src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/SimpleDataEntry_thumb.jpg" width=365 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/SimpleDataEntry_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;You can see that the form accepts a SharePoint site (selected from a combo-box), three separate user entries from textboxes (product name, product number, and sales), and then another input (type of service to call when executing the insertion of the record into SharePoint) from the other combo-box. &lt;/P&gt;
&lt;P&gt;In the code-behind my WinForm app, I’ve first got four key class-level variables that I’ll use to contain the input from the above form:&lt;/P&gt;
&lt;P&gt;string productName = ""; &lt;BR&gt;string productNumber = ""; &lt;BR&gt;string FY08Sales = ""; &lt;BR&gt;string SalesSPSite = "";&lt;/P&gt;
&lt;P&gt;Then, when the user clicks the Add button (which corresponds to the &lt;STRONG&gt;btnGetSPLists_Click&lt;/STRONG&gt; event), the application looks at the Type of Service control entry and then calls a specific method to handle the specific type of service.&lt;/P&gt;
&lt;P&gt;private void btnGetSPLists_Click(object sender, EventArgs e) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Setting the variables to link to specific site &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite = cmboBxSPSite.SelectedItem.ToString(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productName = txtBxProduct.Text; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productNumber = txtBxProductNum.Text; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FY08Sales = txtBoxSales.Text; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //User can set whether they can call the service or not. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cmbBxService.SelectedItem.ToString() == "Native SharePoint Web Service") &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useSPListWebService( &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (cmbBxService.SelectedItem.ToString() == "Standard SharePoint API") &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useNormalMOSSApi( &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (cmbBxService.SelectedItem.ToString() == "WCF Service") &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useWCFService( &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (cmbBxService.SelectedItem.ToString() == "ASP.NET Web Service") &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useASMXService( &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;The conditional code in the &lt;STRONG&gt;btnGetSPLists_Click&lt;/STRONG&gt; event sets the class-level variables and then calls one of four different methods depending on what the user has selected. &lt;/P&gt;
&lt;P&gt;One of the selections calls the ASMX code (which is the native Lists.asmx web service):&lt;/P&gt;
&lt;P&gt;//1. Using the Native SP Web Service. &lt;BR&gt;&amp;nbsp; private void useSPListWebService(string SalesSPSite, string productName, string productNumber, string FY08Sales) &lt;BR&gt;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Declare and initialize a variable for the Lists Web Service. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TR8_ListServiceCall.SPListService.Lists listService = new TR8_ListServiceCall.SPListService.Lists(); &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Authenticate to the current user. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listService.Credentials = System.Net.CredentialCache.DefaultCredentials; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set the Url property of the service for the path to a subsite. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listService.Url = SalesSPSite + "/_vti_bin/Lists.asmx"; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get Name attribute values (GUIDs) for list and view. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Xml.XmlNode ndListView = listService.GetListAndView("TR8", ""); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string strListID = ndListView.ChildNodes[0].Attributes["Name"].Value; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string strViewID = ndListView.ChildNodes[1].Attributes["Name"].Value; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create an XmlDocument object and construct a Batch element &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //and its attributes.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Xml.XmlElement batchElement = doc.CreateElement("Batch"); &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create a CAML construct to insert data into the field into the TR8 list. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; batchElement.InnerXml = "&amp;lt;Method ID='1' Cmd='New'&amp;gt;&amp;lt;Field Name='Title'&amp;gt;" + productName + "&amp;lt;/Field&amp;gt;&amp;lt;Field Name='ProductNum'&amp;gt;" + productNumber + "&amp;lt;/Field&amp;gt;&amp;lt;Field Name='Sales'&amp;gt;" + FY08Sales + "&amp;lt;/Field&amp;gt;" + "&amp;lt;/Method&amp;gt;"; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Call the UpdateListItems method to insert the record into the list. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNode ndReturn = listService.UpdateListItems(strListID, batchElement); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Record Added (Via Web Service)");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;One of the selections calls the normal MOSS API (which is essentially the custom code that runs directly against my SharePoint server):&lt;/P&gt;
&lt;P&gt;//2. Using the Normal SP API. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void useNormalMOSSApi(string SalesSPSite, string productName, string productNumber, string FY08Sales) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string strDashListRoot = SalesSPSite; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPSite site = new SPSite(strDashListRoot)) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPWeb web = site.OpenWeb()) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; web.AllowUnsafeUpdates = true; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPList list = web.Lists["TR8"]; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPListItem Item = list.Items.Add(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item["Title"] = productName; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item["ProductNum"] = productNumber; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item["Sales"] = FY08Sales; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item.Update(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Record Added (Via API)"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;One of the selections calls my custom ASMX service:&lt;/P&gt;
&lt;P&gt;//3. Using the ASMX Service. &lt;BR&gt;private void useASMXService(string SalesSPSite, string productName, string productNumber, string FY08Sales) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TR8_ListServiceCall.ASMX_WebService.TR8ASPWebService myService = new TR8_ListServiceCall.ASMX_WebService.TR8ASPWebService(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myService.UseDefaultCredentials = true; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myService.useNormalMOSSApi(SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Record Added (Via ASMX)"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; myService.Dispose(); &lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;And the last of the selections calls my custom WCF service:&lt;/P&gt;
&lt;P&gt;//4. Using the WCF Service. &lt;BR&gt;private void useWCFService(string SalesSPSite, string productName, string productNumber, string FY08Sales) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TR8_ListServiceCall.WCF_SPListService.InsertItemsClient proxy = new TR8_ListServiceCall.WCF_SPListService.InsertItemsClient(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy.useNormalMOSSApi(SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Record Added (Via WCF)"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy.Close(); &lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;Each of these calls does exactly the same thing: inserts a record using the data from the input form into the SharePoint list called “TR8.” Note, though, that there are syntactical differences. For example, for the custom services we are really executing the code inside the custom service so we need the proxy, the default windows credentials, and the calling of the specific web method (&lt;STRONG&gt;useNormalMOSSApi&lt;/STRONG&gt;) to add the entries. And of course don’t forget to dispose/close the service to clean up your sessions. &lt;/P&gt;
&lt;P&gt;The biggest syntactical difference from the above, though, is the native Lists.asmx web service. Note the use of the CAML construct to create the XML ‘document’ that represents the data we’re inserting into the list. A tip here is if you’re going to use this method, the ‘field’ attribute in the CAML construct is not the column display name. To get the proper attribute, go to your SharePoint site, click List Settings, and then click the column in question. Note at the end of the URL is the field name. In the below figure, you can see ‘Field=Sales’ – this is the correct field attribute to use. (Hopefully, this will save you troubleshooting XML errors.)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/FieldAttribute_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/FieldAttribute_2.jpg"&gt;&lt;IMG title=FieldAttribute style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=250 alt=FieldAttribute src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/FieldAttribute_thumb.jpg" width=532 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/FieldAttribute_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;So, the only remaining code is that which corresponds to the other buttons, which is fairly self-explanatory.&lt;/P&gt;
&lt;P&gt;//Events to handle the clearing of the controls. &lt;BR&gt;private void ctnClear_Click(object sender, EventArgs e) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBoxSales.Clear(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBxProduct.Clear(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBxProductNum.Clear(); &lt;BR&gt;} &lt;/P&gt;
&lt;P&gt;//Event to exit the application. &lt;BR&gt;private void btnExit_Click(object sender, EventArgs e) &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.Exit(); &lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;When executing the code, what will happen is that you can insert records from the client app via a service that then update the SharePoint list. So, why is this cool? Because you can use the same method described above to interact with many different areas of SharePoint—expanding the breadth of your OBA to include OM calls and data management with SharePoint. Here’s a final view of what the end result of the above code (selecting and executing each of the services in my Type of Service combo-box) looks like:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/FinalView_2.jpg" mce_href="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/FinalView_2.jpg"&gt;&lt;IMG title=FinalView style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=170 alt=FinalView src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/FinalView_thumb.jpg" width=534 border=0 mce_src="http://blogs.msdn.com/blogfiles/steve_fox/WindowsLiveWriter/WebServicesandSharePointHowdoIdoit_11846/FinalView_thumb.jpg"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Note that I’ve added the complete code-behind for my sample app below. &lt;/P&gt;
&lt;P&gt;Hope this helps you in your quest!&lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Complete Code-Behind for the WinForm App&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;using System; &lt;BR&gt;using System.Collections.Generic; &lt;BR&gt;using System.ComponentModel; &lt;BR&gt;using System.Data; &lt;BR&gt;using System.Drawing; &lt;BR&gt;using System.Linq; &lt;BR&gt;using System.Text; &lt;BR&gt;using System.Windows.Forms; &lt;BR&gt;using Microsoft.SharePoint; &lt;BR&gt;using System.Collections; &lt;BR&gt;using System.Data.SqlClient; &lt;BR&gt;using System.Xml.Linq; &lt;BR&gt;using System.Xml; &lt;BR&gt;using System.Xml.Serialization; &lt;BR&gt;using Microsoft.SharePoint.SoapServer; &lt;BR&gt;using System.ServiceModel; &lt;/P&gt;
&lt;P&gt;namespace TR8_ListServiceCall &lt;BR&gt;{ &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public partial class Form1 : Form &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Class-level variables &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string productName = ""; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string productNumber = ""; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string FY08Sales = ""; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string SalesSPSite = ""; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Form1() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; InitializeComponent(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void btnGetSPLists_Click(object sender, EventArgs e) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Setting the variables to link to specific site &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite = cmboBxSPSite.SelectedItem.ToString(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productName = txtBxProduct.Text; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; productNumber = txtBxProductNum.Text; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FY08Sales = txtBoxSales.Text; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //User can set whether they can call the service or not. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (cmbBxService.SelectedItem.ToString() == "Native SharePoint Web Service") &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useSPListWebService( &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (cmbBxService.SelectedItem.ToString() == "Standard SharePoint API") &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useNormalMOSSApi( &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (cmbBxService.SelectedItem.ToString() == "WCF Service") &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useWCFService( &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (cmbBxService.SelectedItem.ToString() == "ASP.NET Web Service") &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; useASMXService( &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //1. Using the Normal SP API. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void useNormalMOSSApi(string SalesSPSite, string productName, string productNumber, string FY08Sales) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string strDashListRoot = SalesSPSite; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPSite site = new SPSite(strDashListRoot)) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SPWeb web = site.OpenWeb()) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; web.AllowUnsafeUpdates = true; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPList list = web.Lists["TR8"]; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SPListItem Item = list.Items.Add(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item["Title"] = productName; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item["ProductNum"] = productNumber; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item["Sales"] = FY08Sales; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Item.Update(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Record Added (Via API)"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //2. Using the Native SP Web Service. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void useSPListWebService(string SalesSPSite, string productName, string productNumber, string FY08Sales) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Declare and initialize a variable for the Lists Web Service. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TR8_ListServiceCall.SPListService.Lists listService = new TR8_ListServiceCall.SPListService.Lists(); &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Authenticate to the current user. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listService.Credentials = System.Net.CredentialCache.DefaultCredentials; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Set the Url property of the service for the path to a subsite. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listService.Url = SalesSPSite + "/_vti_bin/Lists.asmx"; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Get Name attribute values (GUIDs) for list and view. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Xml.XmlNode ndListView = listService.GetListAndView("TR8", ""); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string strListID = ndListView.ChildNodes[0].Attributes["Name"].Value; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string strViewID = ndListView.ChildNodes[1].Attributes["Name"].Value; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create an XmlDocument object and construct a Batch element &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //and its attributes.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Xml.XmlElement batchElement = doc.CreateElement("Batch"); &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Create a CAML construct to insert data into the field into the TR8 list. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; batchElement.InnerXml = "&amp;lt;Method ID='1' Cmd='New'&amp;gt;&amp;lt;Field Name='Title'&amp;gt;" + productName + "&amp;lt;/Field&amp;gt;&amp;lt;Field Name='ProductNum'&amp;gt;" + productNumber + "&amp;lt;/Field&amp;gt;&amp;lt;Field Name='Sales'&amp;gt;" + FY08Sales + "&amp;lt;/Field&amp;gt;" + "&amp;lt;/Method&amp;gt;"; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Call the UpdateListItems method to insert the record into the list. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlNode ndReturn = listService.UpdateListItems(strListID, batchElement); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Record Added (Via Web Service)");&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //3. Using the ASMX Service. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void useASMXService(string SalesSPSite, string productName, string productNumber, string FY08Sales) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TR8_ListServiceCall.ASMX_WebService.TR8ASPWebService myService = new TR8_ListServiceCall.ASMX_WebService.TR8ASPWebService(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myService.UseDefaultCredentials = true; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myService.useNormalMOSSApi(SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Record Added (Via ASMX)"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myService.Dispose(); &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //4. Using the WCF Service. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void useWCFService(string SalesSPSite, string productName, string productNumber, string FY08Sales) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TR8_ListServiceCall.WCF_SPListService.InsertItemsClient proxy = new TR8_ListServiceCall.WCF_SPListService.InsertItemsClient(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy.useNormalMOSSApi(SalesSPSite, productName, productNumber, FY08Sales); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show("Record Added (Via WCF)"); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proxy.Close(); &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Events to handle the clearing of the controls. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void ctnClear_Click(object sender, EventArgs e) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBoxSales.Clear(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBxProduct.Clear(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; txtBxProductNum.Clear(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Event to exit the application. &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void btnExit_Click(object sender, EventArgs e) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; { &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Application.Exit(); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;BR&gt;}&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9406430" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MOSS+platform/default.aspx">MOSS platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBA+platform/default.aspx">OBA platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Web+service/default.aspx">Web service</category></item><item><title>Learn how to integrate PeopleSoft, Outlook and MOSS</title><link>http://blogs.msdn.com/steve_fox/archive/2009/02/08/learn-how-to-integrate-peoplesoft-outlook-and-moss.aspx</link><pubDate>Sun, 08 Feb 2009 06:51:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9406349</guid><dc:creator>Steve Fox</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9406349.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9406349</wfw:commentRss><description>&lt;p&gt;Office Business Application (OBA) development is growing in importance thus continues to be an integral part of the Office platform developer story. To that end, we recently completed a new resource that could be used for OBA training specific to PeopleSoft and Office integration. This HOL uses the OBA Starter Kit for PeopleSoft as the demo environment and provides a comprehensive walkthrough on how to a) create web services that wrap around PeopleSoft components (both native and custom), b) consume those services in a custom Outlook client (the design can be extrapolated to other Office custom clients), and c) integrate the service with the MOSS Business Data Catalog. &lt;/p&gt;  &lt;p&gt;The new resource, a hands-on lab that is now publicly available, is a great way for you or your customers to get ramped up on how to integrate Office and PeopleSoft. &lt;/p&gt;  &lt;p&gt;The OBA Starter Kit for PeopleSoft is available here: &lt;a href="http://msdn.microsoft.com/en-us/office/cc442491.aspx"&gt;http://msdn.microsoft.com/en-us/office/cc442491.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The new OBA PeopleSoft Hands-on Lab is available here: &lt;a href="http://www.microsoft.com/isv/oracle/"&gt;http://www.microsoft.com/isv/oracle/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;Steve&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9406349" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBA+platform/default.aspx">OBA platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBA+Sample+Application+Kit/default.aspx">OBA Sample Application Kit</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Business+Data+Catalog/default.aspx">Business Data Catalog</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/PeopleSoft/default.aspx">PeopleSoft</category></item><item><title>Silverlight RTM and SharePoint Blueprints Ship on Codeplex</title><link>http://blogs.msdn.com/steve_fox/archive/2009/01/09/silverlight-rtm-and-sharepoint-blueprints-ship-on-codeplex.aspx</link><pubDate>Fri, 09 Jan 2009 05:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9301206</guid><dc:creator>Steve Fox</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9301206.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9301206</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;Today,&amp;nbsp;additional&amp;nbsp;SharePoint and Silverlight Blueprints on CodePlex were uploaded to include two more Silverlight RTM samples: custom navigation in SharePoint and the colleague viewer. These blueprints provide samples for you to build and explore using Silverlight as an alternate way to develop and integrate powerful user experiences within SharePoint and add rich Internet application functionality to your SharePoint sites. Included in the overall set of samples are a Hello World sample, a Slider sample, and the recently added Custom Navigation and Colleague Viewer samples added today. You can download the samples along with documentation and screencasts at &lt;/FONT&gt;&lt;A href="http://www.codeplex.com/SL4SP"&gt;&lt;FONT face=Calibri size=3&gt;http://www.codeplex.com/SL4SP&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;Over the next few weeks, I'll publish a couple of other blog posts on Silverlight and SharePoint. I think there is tremendous opportunity here for building rich Internet applications that can also be thought of as OBAs. For example, think about skinning an integration with SAP with Silverlight and then dropping it into a SharePoint site. This not brings the LOB system world into SharePoint, but does it in a way that improves the look and feel of the UI as well as providing additional controls that you can build around the UI to, for example, filter on SAP, Dynamics or other LOB system&amp;nbsp;data. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;For more resources on how to integrate Silverlight and SharePoint, be sure to visit &lt;/FONT&gt;&lt;A href="http://mssharepointdeveloper.com/"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;http://mssharepointdeveloper.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;. Keep an eye out on this site over the next few weeks, as we're going publish a new round of content for WCM and MOSS. Some cool SharePoint and Silverlight stuff will be shipping. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;Happy coding!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri size=3&gt;Steve&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9301206" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MOSS+platform/default.aspx">MOSS platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight+Blueprint+for+SharePoint/default.aspx">Silverlight Blueprint for SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Announcing SharePoint for the Web Development Series</title><link>http://blogs.msdn.com/steve_fox/archive/2008/11/30/announcing-sharepoint-for-the-web-development-series.aspx</link><pubDate>Sun, 30 Nov 2008 20:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9158495</guid><dc:creator>Steve Fox</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9158495.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9158495</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;For those that are looking for more SharePoint development resources,&amp;nbsp;we'll be&amp;nbsp;launching a series of webcasts starting next week. More information below.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Announcing the &lt;/FONT&gt;&lt;A href="http://www.microsoft.com/events/series/sharepointserver.aspx?tab=webcasts"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;SharePoint Products and Technologies for Internet Site Development&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; webcast series.&amp;nbsp; This series shows how to use Microsoft Office SharePoint Server 2007 for your internet site.&amp;nbsp; We will leverage a fictitious site, Adventure Works, to demonstrate how to customize SharePoint to create your internet presence.&amp;nbsp; The series is presented by our &lt;/FONT&gt;&lt;A href="http://mvp.support.microsoft.com/"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;Microsoft Most Valued Professionals&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, experts in the technologies they are presenting on.&amp;nbsp; This material follows up on the labs and webcasts that were introduced on the &lt;/FONT&gt;&lt;A href="http://mssharepointdeveloper.com/"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;http://mssharepointdeveloper.com&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; site.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="WIDTH: 6.5in; BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 0in 0in 0in" cellSpacing=0 cellPadding=0 width=624 border=0 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: white 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #4f81bd; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 3pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;FONT face=Calibri size=3&gt;Date &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: white 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #4f81bd; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 3pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;FONT face=Calibri size=3&gt;Topic &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: white 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #4f81bd; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 3pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B&gt;&lt;FONT face=Calibri size=3&gt;Presenter &lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 1"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;12/2&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032396509&amp;amp;Culture=en-US"&gt;&lt;FONT face=Calibri size=3&gt;Getting Started&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Todd Baginski &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 2"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;12/4&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032396669&amp;amp;Culture=en-US"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;.COM Branding&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Doug Ware &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 3"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;12/9&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032396671&amp;amp;Culture=en-US"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;Custom Fields, Web Parts, and Lists&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Todd Bleeker &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 4"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;12/11&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032396941&amp;amp;Culture=en-US"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;FBA Authentication&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Todd Bleeker &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 5"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;12/16&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032396806&amp;amp;Culture=en-US"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;Web Interoperability&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Eric Shupps &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 6"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;12/18&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032396824&amp;amp;Culture=en-US"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;Search&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Rob Bogue &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 7"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;1/6&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032396926&amp;amp;Culture=en-US"&gt;&lt;FONT face=Calibri color=#0000ff size=3&gt;Content Deployment&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Andrew Connell &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 8"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;1/13&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Enabling Social Networking &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #e9edf4; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Brendon Schwartz and Matt Ranlett &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 29.2pt; mso-yfti-irow: 9; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: white 1pt solid; WIDTH: 102pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=136&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;1/15&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 192pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=256&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Site Customization with Silverlight 2.0 &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: white 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 5.4pt; BACKGROUND: #d0d8e8; PADDING-BOTTOM: 0in; BORDER-LEFT: #f0f0f0; WIDTH: 174pt; PADDING-TOP: 0.75pt; BORDER-BOTTOM: white 1pt solid; HEIGHT: 29.2pt" vAlign=top width=232&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;Sahil Malik &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9158495" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>SharePoint Connections Deck</title><link>http://blogs.msdn.com/steve_fox/archive/2008/11/13/sharepoint-connections-deck.aspx</link><pubDate>Thu, 13 Nov 2008 20:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9066804</guid><dc:creator>Steve Fox</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9066804.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9066804</wfw:commentRss><description>&lt;P&gt;I'm just wrapping up my week here in Las Vegas for SharePoint Connections, and one of the requests I had was to post my decks for those who attended my sessions. I've posted my decks to a public skydrive folder here: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://cid-40a717fc7fcd7e40.skydrive.live.com/self.aspx/SharePointConnections/Final%7C_Presentations.zip"&gt;http://cid-40a717fc7fcd7e40.skydrive.live.com/self.aspx/SharePointConnections/Final%7C_Presentations.zip&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;If you have any issues connecting and retrieving the decks, let me know. &lt;/P&gt;
&lt;P&gt;I'll also upload the code samples and some videos that go along with these, but wanted to get these uploaded first. As for the questions we discussed in the sessions, I'll be posting answers to those as well.&lt;/P&gt;
&lt;P&gt;Thanks to all of you who attended the sessions and made SharePoint Connections another successful event. &lt;/P&gt;
&lt;P&gt;Steve&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9066804" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MOSS+platform/default.aspx">MOSS platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+platform/default.aspx">Office platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+Business+Applications/default.aspx">Office Business Applications</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>End-to-End Sales Forecast OBA Released To Web! </title><link>http://blogs.msdn.com/steve_fox/archive/2008/10/25/end-to-end-sales-forecast-oba-released-to-web.aspx</link><pubDate>Sat, 25 Oct 2008 05:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9015625</guid><dc:creator>Steve Fox</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/9015625.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=9015625</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;It's been a while, but I wanted to let&amp;nbsp;all you OBA developers out there know of something cool that&amp;nbsp;we recently released, which is the End-to-End (E2E) Sales Forecast OBA. As you know from reading this blog, you know that OBA is an Office Business Application and involves mutltiple technologies within the Office platform. &lt;/FONT&gt;&lt;/o:p&gt;&lt;FONT face=Calibri size=3&gt;The E2E Sales Forecast OBA is a solution that walks you through a scenario where&amp;nbsp;a salesperson creates and submits a quarterly sales forecast. Using a customized Excel template (built using VS 2008/VSTO), our salesperson has the ability to navigate to the team Sales Forecast portal (SharePoint portal), invoke a custom Excel sales forecast template from the New button (content type mapping to a custom template), load line-of-business sales data into the document (via WPF custom actions pane), generate executive reports for the forecast (via Open XML), and submit the document for approval (through SharePoint workflow). It essentially uses all of the concepts and technologies that I've discussed thus far in this blog--plus a few that I haven't.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri size=3&gt;In the demo solution (which is available on CodePlex--see link below), the approving manager can interact directly with SharePoint or choose to approve the workflow via a custom Outlook Form Region (built using VS 2008/VSTO). Messaging of the workflow is marshaled by SharePoint, and Open XML enables the solution to parse out the necessary data and attach to workflow and to the custom Outlook from region. This is a great starter solution if you're looking to get your hands on some code, and includes the technologies below:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;SharePoint&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Office Client Ribbon and Action Pane Customizations (VS 2008/VSTO)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Outlook Custom Form Regions&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Open XML&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Unified Communications (UC)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;SharePoint Workflow&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Windows Presentation Foundation (WPF)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;-&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;++&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 'Courier New'"&gt;&lt;o:p&gt;&lt;FONT size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="COLOR: red; FONT-FAMILY: 'Courier New'"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#000000 size=3&gt;For the community source-code download and accompanying book, you can check out the following resources:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#000000 size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1"&gt;&lt;B&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;Sales Forecast Codeplex Source Code Site&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;A href="http://www.codeplex.com/obasales"&gt;&lt;FONT face=Calibri size=3&gt;http://www.codeplex.com/obasales&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level1 lfo1"&gt;&lt;B&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;Sales Forecast Wrox Book Accompaniment&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/LI&gt;
&lt;UL style="MARGIN-TOP: 0in" type=circle&gt;
&lt;LI class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;A href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470377313.html"&gt;&lt;FONT face=Calibri size=3&gt;http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470377313.html&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;The goal of the book is to walk you through all of the code and you would set up and deploy the sales forecast OBA. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri color=#000000 size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri color=#000000 size=3&gt;Enjoy!!&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri color=#000000 size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT face=Calibri color=#000000 size=3&gt;Steve&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; mso-list: l0 level2 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT color=#000000&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9015625" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MOSS+platform/default.aspx">MOSS platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+platform/default.aspx">Office platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+Business+Applications/default.aspx">Office Business Applications</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Steve+Fox/default.aspx">Steve Fox</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBAs/default.aspx">OBAs</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Custom+Outlook+Form+Region/default.aspx">Custom Outlook Form Region</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OFR/default.aspx">OFR</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category></item><item><title>Use Silverlight to Enhance your SharePoint-Based OBAs with the Silverlight Blueprints for SharePoint</title><link>http://blogs.msdn.com/steve_fox/archive/2008/08/19/use-silverlight-to-enhance-your-sharepoint-based-obas-with-the-silverlight-blueprints-for-sharepoint.aspx</link><pubDate>Tue, 19 Aug 2008 18:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8878936</guid><dc:creator>Steve Fox</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/steve_fox/comments/8878936.aspx</comments><wfw:commentRss>http://blogs.msdn.com/steve_fox/commentrss.aspx?PostID=8878936</wfw:commentRss><description>&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Silverlight Blueprints for SharePoint Released to CodePlex!&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Today we released the source code for the Silverlight Blueprints for SharePoint—based on the Silverlight Beta 2 release. The Silverlight Blueprints for SharePoint provide a way for developers to better understand how to integrate Silverlight applications with SharePoint. &lt;/FONT&gt;&lt;A href="http://www.silverlight.net/"&gt;&lt;FONT size=3 face=Calibri&gt;Silverlight&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt; is an incredibly popular technology and with the increase in SharePoint adoption we’re finding an increased call for integrating technologies like Silverlight with SharePoint. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;In this release, you’ll find five blueprint samples: &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Hello World &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Media Player&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Slider Control&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Custom Navigation&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1" class=MsoListParagraph&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;5.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3 face=Calibri&gt;Colleague Viewer&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Included in the release are documentation for each of the samples and the source code (go to the Releases tab of the CodePlex site). Also posted to the site is an FAQ document. In the coming days and week, we’ll publish additional screen-casts and any other supporting documentation we create or that is provided to us through the developer community. &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;The links to get to the Silverlight Blueprints for SharePoint are: &lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2" class=MsoListParagraph&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://www.ssblueprints.net/sharepoint/"&gt;&lt;FONT color=#800080 size=3 face=Calibri&gt;http://www.ssblueprints.net/sharepoint/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&amp;nbsp; --or direct at the CodePlex site&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2" class=MsoListParagraph&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3 face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://www.codeplex.com/SL4SP"&gt;&lt;FONT color=#800080 size=3 face=Calibri&gt;http://www.codeplex.com/SL4SP&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Enjoy!&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;o:p&gt;&lt;FONT size=3 face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt" class=MsoNormal&gt;&lt;FONT size=3 face=Calibri&gt;Steve&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8878936" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MOSS+platform/default.aspx">MOSS platform</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+Development/default.aspx">Office Development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Office+Business+Applications/default.aspx">Office Business Applications</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBAs/default.aspx">OBAs</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint+development/default.aspx">SharePoint development</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/SharePoint/default.aspx">SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight+Blueprint+for+SharePoint/default.aspx">Silverlight Blueprint for SharePoint</category><category domain="http://blogs.msdn.com/steve_fox/archive/tags/Silverlight/default.aspx">Silverlight</category></item></channel></rss>