Tin tức

Sử dụng mô hình đố tượng Silverlight trong SharePoint 2010

05/06/2013

Microsoft SharePoint Foundation 2010 hỗ trợ thực hiện mô hình đối tượng Silverlight client theo hai ngữ cảnh: bên trong Web Part Silverlight, và bên trong hệ thống Cross-Domain Data Access, thông qua đó một ứng dụng Silverlight tương tác với dữ liệu Microsoft SharePoint Foundation 2010. Khả năng thứ ba - sửa đổi chính sách truy cập cross-domain trên máy chủ - điều này mở ra nguy cơ bảo mật và không được hỗ trợ trong SharePoint Foundation 2010

Bởi vì việc thực hiện truy vấn là bất đồng bộ khi bạn sử dụng mô hình đối tượng SharePoint Foundation Silverlight, bạn truyền các ủy quyền cho phương thức callback dưới dạng các tham số trong phương thức ExecuteQueryAsync (ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler), tương tự như truy vấn thực hiện trong mô hình đối tượng ECMAScript. Tuy nhiên, để chạy mã để thực thi cho những thay đổi trong giao diện người dùng (UI) thông qua mô hình đối tượng Silverlight, bạn phải ủy quyền công việc này cho đối tượng Dispatcher  của các luồng đã tạo UI bằng cách gọi BeginInvoke(), như thấy trong thí dụ sau đây.

Triển khai mã thông qua một Web Part Silverlight

Để sử dụng mô hình đối tượng SharePoint Foundation Silverlight bên trong Web part Silverlight, bạn có thể tạo một ứng dụng Silverlight trong Visual Studio, và thêm mã của cho lớp Page trong tệp tin ngầm định Page.xaml.cs của dự án. Sau khi build dự án, tải tệp tin gói ứng dụng của dự án (XAP.) vào một thư viện tài liệu. Chèn Web Part Silverlight vào một trang Web Parts và chỉ nguồn URL của Web Part đến xap. Trong thư viện tài liệu.

Các ví dụ sau đây giả định có nút điều khiển và điều khiển TextBox trong các tập tin MainPage.xml của dự án.
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.SharePoint.Client;
  
namespace Microsoft.SDK.SharePointServices.Samples
{
    public partial class MainPage : UserControl
    {
        Web oWebsite;
        ListCollection collList;
        IEnumerable<List> listInfo;
  
        public MainPage()
        {
            InitializeComponent();
        }
  
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            ClientContext clientContext = ClientContext.Current;
            oWebsite = clientContext.Web;
            ListCollection collList = oWebsite.Lists;
  
             clientContext.Load(oWebsite,
                website=>website.Title);
  
             listInfo = clientContext.LoadQuery(
                collList.Include(
                    list=>list.Title,
                    list=>list.Fields.Include(
                        field=>field.Title).Where(
                        field=>field.Required  == true
                        && field.Hidden != true)));
  
            clientContext.ExecuteQueryAsync(onQuerySucceeded, onQueryFailed);
        }
  
        private void onQuerySucceeded(object sender, ClientRequestSucceededEventArgs args)
        {
            UpdateUIMethod updateUI = DisplayInfo;
            this.Dispatcher.BeginInvoke(updateUI);
        }
  
        private void onQueryFailed(object sender, ClientRequestFailedEventArgs args)
        {
            MessageBox.Show = "Request failed. " + args.Message + "\n" + args.StackTrace;
        }
  
        private void DisplayInfo()
        {
            MyOutput.Text = "Title: " + oWebsite.Title;
            collList = oWebsite.Lists;
  
            foreach (List oList in listInfo)
            {
                MyOutput.Text += "\n\tList: " + oList.Title;
  
                FieldCollection collField = oList.Fields;
                foreach (Field oField in collField)
                {
                    MyOutput.Text += "\n\t\tField: " + oField.Title;
                }
            }
        }
  
        private delegate void UpdateUIMethod();
    }
}

Trong ví dụ trên sử dụng thuộc tính Current để xác định ngữ cảnh yêu cầu hiện tại, thay vì sử dụng hàm tạo ClientContext(String) và chỉ ra một URL. Bạn có thể tải tệp .xap lên Shared Documents trong web site gốc của site collection, và tạo ra một trang Web Parts trong một trang web con bất cứ nơi nào bên dưới trang web gốc, và thêm Web Part Silverlight  trỏ tới tệp .xap. Nói cách khác, mã của bạn có thể hoạt động trong các trang web gốc, nhưng về logic nó có sẵn cho bất kỳ trang web nào trong site collection.

Tạo một list item

Dưới đây là ví dụ hướng dẫn cách tạo một list item trong danh sách chỉ đinh. Ví dụ sử dụng một ủy quyền để hiển thị thông tin của mục tin mới trong giao diện người sử dụng.
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.SharePoint.Client;
 
namespace Microsoft.SDK.SharePointServices.Samples
{
    public partial class MainPage : UserControl
    {
        private List oList;
        private string siteUrl = "http://MyServer/sites/MySiteCollection/MyWebSite";
 
        public MainPage()
        {
            InitializeComponent();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            ClientContext clientContext = new ClientContext(siteUrl);
            Web oWebsite = clientContext.Web;
            ListCollection collList = oWebsite.Lists;
 
            oList = clientContext.Web.Lists.GetByTitle("Announcements");
 
            ListItem oListItem = oList.AddItem(new ListItemCreationInformation());
            oListItem["Title"] = "My new item";
            oListItem["Body"] = "This is my new Silverlight item.";
            oListItem.Update();
 
            clientContext.Load(oList,
                list => list.Title);
 
            clientContext.ExecuteQueryAsync(onQuerySucceeded, onQueryFailed);
        }
 
        private void onQuerySucceeded(object sender, ClientRequestSucceededEventArgs args)
        {
            UpdateUIMethod updateUI = DisplayInfo;
            this.Dispatcher.BeginInvoke(updateUI);
        }
 
        private void DisplayInfo()
        {
            MyOutput.Text = "New item created in " + oList.Title;
        }
 
        private delegate void UpdateUIMethod();
         
        private void onQueryFailed(object sender, ClientRequestFailedEventArgs args)
        {
            MessageBox.Show("Request failed. " + args.Message + "\n" + args.StackTrace);
        }
    }
}

Quý khách có nhu cầu Đào tạo Hãy liên hệ với chúng tôi để được tư vấn và hỗ trợ thông tin đào tạo một cách tốt nhất!
Email: dungdq@esvn.com.vn
ĐT: 098-953.2900
Công ty ESVN luôn sẵn hàng hợp tác về lĩnh vực: Đào tạo sharepoint 1013 đào tạo sharepoint 2010,  đào tạo lập trình sharepointhọc lập trình sharepoint,  đào tạo lập trình windows 8, lập trình windows 8Cổng thông tin SharePoint , thiết kế web


Công ty Cổ phần Eastern Sun Việt Nam