.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
 
Sign In
Register
 
Win Surprise Gifts!!!
Congratulations!!!


Top 5 Contributors of the Month
david stephan

Home >> Articles >> SharePoint >> Post New Resource Bookmark and Share   

 Subscribe to Articles

SharePoint 2010 in Windows 7 Phone Tutorial

Posted By:Dhananjay Kumar       Posted Date: December 03, 2010    Points: 75    Category: SharePoint    URL: http://www.dotnetspark.com  

SharePoint 2010 in Windows 7 Phone Tutorial. In this tutorial we will retrieve data from SharePoint list and display it Windows 7 phone application
 

In this article we will retrieve data from SharePoint list and display it Windows 7 phone application. 


1.gif

The expected output is as below, 

2.gif

Flow Diagram

3.gif

Now we will follow the following steps to perform all above operations. 

Step 1: Setting up the SharePoint list 

 
We have a custom list 
  1. Name of the list is Test_Product. 
  2. Columns of  the list is as below

    4.gif

  3. There are two items in the list 

    5.gif

  4. URL of the SharePoint  site is    

    http://dhananjay-pc/my/personal/Test1

Now we will access the SharePoint site on above URL.

Step 2: Creating WCF Service 

Now we will create a WCF Service. WCF Service will have four operation contracts for CRUD operation on list. 

To create WCF service, open visual studio and from WCF tab select WCF Service application.

6.gif
 
Now to make sure that we are able to use SPLinq or LINQ to SharePoint we need to change the target framework and Platform target
So to do those follow as below, 
  1. Right click and click on Properties of WCF Service 

    7.gif

  2. Click on the Build tab and change Platform Target to Any CPU.

    8.gif

  3. Click on the Application tab and change the Target framework type to .Net Framework 3.5

    9.gif

Now we need to create DataContext class of SharePoint list such that we can perform LINQ against that class to perform CRUD operation. To create context class we need to perform the following steps.  
  1. Open the command prompt and change directory to 

    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN

    Type command CD C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN

    10.gif

  2. Now we need to create the class for corresponding list definitions. 

    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN> spme
    tal.exe /web:http://dhananjay-pc/my/personal/Test1 /namespace:nwind /code:Product.cs

    In the preceding command we are passing a few parameters to spmetal.exe, they are as below 

    a. /web:Url    

    Here we need to provide URL of SharePoint site 

    /web:http://dhananjay-pc/my/personal/Test1 /://dhananjay-pc/my/personal/Test1 / is  URL of SharePoint site, I created for myself. You need to provide your SharePoint site URL here.

    b. /namespace:nwind

    This would be the namespace under which class of the list will get created. In my case name of the namespace would be nwind.

    c. /code:Product.cs

    This is the file name of the generated class.  Since we are giving name Product for the file then class generated will be ProductDataContext

    The classes default gets saved in the same folder with SPMetal.exe. So to see where the class got created we need to navigate to folder 

    C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN

Add created class to the WCF Service project

Now add this class to the project. To do this, right click on the WCF Service project and select Add existing item.  Then browse to above path and select Product.cs

Host the WCF Service in IIS 

To work with SPLInq in WCF service, we need to host the service in IIS with the same application pool SharePoint is running. 
See the below link for step by step explanation on how to host WCF 4.0 Service in IIS 7.5

http://dhananjaykumar.net/2010/09/07/walkthrough-on-creating-wcf-4-0-service-and-hosting-in-iis-7-5/

Only we need to make sure that, 

Hosted WCF service is sharing the same application pool with SharePoint.  


11.gif

Select the Application pool to SharePoint-80 

Create Contracts 

We need to create DataContract or Data Transfer object. This class will represent the Product Data context class (We generated this class in previous step) 0
Create Data Contract, 
 
[DataContract]
 public class ProductDTO
 {
     [DataMember]
     public string ProductName;
     [DataMember]
     public string ProductId;
     [DataMember]
     public string ProductPrice;
 }
Add References to work with LINQ to SharePoint
 

Microsoft.SharePoint 
Microsoft.SharePoint.Linq 

Right click on Reference and select Add Reference. To locate Microsoft.SharePoint and Microsoft.SharePoint.Linq dll browse to C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI. All the SharePoint dll are here in this location. 

Add the namespace
 


12.gif

Nwind is the name of the namespace of the data context class we created in previous steps.  We need to make sure that we have added Product class to the WCF Service application project as Add an Existing item. 
Create Service Contract 
We need to create Service contract. There would be four operation contracts each for one operation on Sharepoint list. 
IService1.cs
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.Runtime.Serialization;
using System.ServiceModel.Description;
namespace WcfService1
{
 [ServiceContract ]
   public interface IService1
   {
     [OperationContract]
     List GetProduct();
   }
}
Implement the Service

Now we need to implement the service to perform operations 

Retrieving all the list items 

 
public List GetProduct()
{
   using (ProductDataContext context = new ProductDataContext("http://dhananjay-pc/my/personal/Test1"))
   {
       ProductDTO product;
       List lstProducts = new List();
       var result = from r in context.Test1_Product select r;
       foreach (var r in result)
       {
           product = new ProductDTO { ProductId = r.ProductId, ProductName = r.ProductName, ProductPrice = r.ProductPrice.ToString ()
};
           lstProducts.Add(product);
       }
       return lstProducts;
   }
}

In the preceding code 
  1. Creating instance of ProductDataContext. 
  2. Using LINQ to SharePoint retrieving all the list items.
  3. Creating instance of ProductDTO class with values fetched from SharePoint list
  4. Adding the instance of ProductDTO class in List of ProductDTO. 
  5. Returning list of ProductDTO 

Modify the Web.Config
  1. We will put Binding as  basicHttpBinding. 
  2. In ServiceBehavior attribute , we will enable the servicemetadata
  3. In ServiceBehavior , we will make IncludeserviceException  as false. 
  4. We will configure MetadataExchnagePoint in the service 


So, Now in Web.Config Service configuration will look like 
 

         
                 
                           
                                     
         

                                     
                           
                 
                 
                           
                                     
                                     
                                     
                                               
                                                         
                                               
                                     
                           
                 
                 
         


Now our service is created. We will be hosting this service in IIS as we discussed in previous step.  From IIS we will browse to test whether service is up and running or not. 

For reference, full source code for service implementation is as below , 

Service1.svc.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using Microsoft.SharePoint.Linq;
using Microsoft.SharePoint;
using nwind;
 
namespace WcfService1
{
   public class Service1 : IService1 
   {
       public List GetProduct()
       {
           using (ProductDataContext context = new ProductDataContext("http://dhananjay-pc/my/personal/Test1"))
           {
               ProductDTO product;
               List lstProducts = new List();
               var result = from r in context.Test1_Product select r;
               foreach (var r in result)
               {
                   product = new ProductDTO { ProductId = r.ProductId, ProductName = r.ProductName, ProductPrice = r.ProductPrice.ToString () };
                   lstProducts.Add(product);
               }
               return lstProducts;
           }
       }
}


Creating a Windows 7 Phone application 


Open visual studio and create a new Windows Phone application from Silverlight from Windows phone project tab.

13.gif
 
Add the service reference. Right click and add the Service reference of the WCF service created in previous step to the phone application. 
Create the Product Client class

ProductClient.cs 

public class ProductatClient
{
   public string ProductId { get; set; }
   public string ProductName { get; set; }
   public string ProductPrice { get; set; }
}

Divide the content grid in two rows and put button in first row and list box in second row. We will create button and on click event of this button we will fetch data from the WCF service.


14.gif

Now we will create a List box to bind the SharePoint list data  


15.gif

So the full XAML is as below,

MainPage.xaml 


   
       
           
           
       
       
           
           
       
       
           
               
               
           
           
                        
                                
                   
                       
   
                           
                           
                       
 
               
                  
       
   


Now at the code behind, we need to fetch the data from WCF service 


16.gif

So the full source code is as below ,

MainPage.xaml.cs
 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using WindowsPhoneApplication1.ServiceReference1;
 
namespace WindowsPhoneApplication1
{
   public partial class MainPage : PhoneApplicationPage
   {
       // Constructor
       public MainPage()
       {
           InitializeComponent();
           btnGetData.Click += new RoutedEventHandler(btnGetData_Click);
       }
       void btnGetData_Click(object sender, RoutedEventArgs e)
       {
         // MessageBox.Show("Dhananjay");
           Service1Client proxy = new Service1Client();
           proxy.GetProductCompleted += new EventHandler(proxy_GetProductCompleted);
           proxy.GetProductAsync();
       }
       void proxy_GetProductCompleted(object sender, GetProductCompletedEventArgs e)
       {
               List lstResults = new List();
               ProductatClient p;
       List results = e.Result.ToList();
               foreach (var r in results)
               {
                   p = new ProductatClient { ProductName = r.ProductName,
                                           ProductId = r.ProductId,
 ProductPrice = r.ProductPrice };
                   lstResults.Add(p);
               }
               lstBox.ItemsSource = lstResults; 
       }
   }
}

Now when we run the application, we will get the output as below, 


17.gif

 Subscribe to Articles

     

Further Readings:

Responses

No response found. Be the first to respond this post

Post Comment

You must Sign In To post reply
Find More Articles on C#, ASP.Net, Vb.Net, SQL Server and more Here

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend