SP2010开发和VS2010专家"食谱"--第七章节--使用客户端对象模型(5)--Using a Silverlight Object Model

SP2010开发和VS2010专家"食谱"--第七章节--使用客户端对象模型(5)--Using a Silverlight Object Model

        Silverlight是一个开发平台,用来开发富Internet应用程序,跨浏览器、跨平台兼容。Silverlight应用程序可以通过一个浏览器插件执行,意味着它可以在客户机的IE中运行。通过使用Silverlight和SharePoint作为数据源,你可以为用户开发视觉上引人的客户端。
        本次食谱中,我们使用Silverlight创建一个Silverlight应用程序。像之前的食谱一样,此应用程序将显示来自联系人列表的列表项目。

Getting ready

        之前的食谱必须被成功完成。另外,在你的网站创建一个新的文档库XAPFiles。

How to do it...

        为了使用Silverllight对象模型,请遵循下面步骤:
1. 以管理员身份打开VS。
2. 创建新空白SP项目SilverlightOM,接受后面步骤的默认。
3. 添加新Silverlight应用程序ContactsListSilverlight。
4. 添加新模块,命名XAPFiles。
5. 删除Sample.txt文件。Elements.xml文件将会自动更新。
6. 在属性窗口,点击Project Output References:

7. 这会打开Project Output References窗口。点击添加按钮,将ContactsListSilverlight项目作为成员,设置Deployment Type为ElementFile。

8. VS自动更新模块中元素文件。打开模块中Elements.xml文件,添加一个URL属性到Module元素,设置其值为文档库名。这里是XAPFiles。添加Type属性到文件元素,设置为GhostableInLibrary。现在你的Elements.xml文件应该是这样的:

   
     

   
     
    
    
      
        
     
       
    
    
      

   
   
9. 添加引用到Silverlight客户端对象模型程序集到ContactsListSilverlight项目。
10. 添加一个datagrid和按钮到MainPage.xaml,你的XAML文件应该是这样的:

   
   
    
    
    
        
     
     
        
     
     
    
    
    

   
   
11. 添加代码从联系人列表抽取联系人。你的代码应该是这样的:
namespace ContactsListSilverlight
{
    public class MyContacts
    {
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public string BusinessPhone { get; set; }
        public string EmailAddress { get; set; }
    }
    public partial class MainPage : UserControl
    {
        private Microsoft.SharePoint.Client.Web _web;
        private Microsoft.SharePoint.Client.List _list;
        private ListItemCollection _listItemCol;
        public MainPage()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender,RoutedEventArgs e)
        {
            ClientContext context = new ClientContext(ApplicationContext.Current.Url);
            _web = context.Web;
            context.Load(_web);
            _list = _web.Lists.GetByTitle("Contacts");
            var query = new CamlQuery();
            var rowLimit = "
   
   
    
    
     
     5
    
    
   
   ";
            query.ViewXml = rowLimit;
            _listItemCol = _list.GetItems(query);
            context.Load(_listItemCol);
            context.Load(_list);
            context.ExecuteQueryAsync(new ClientRequestSucceededEventHandler(OnSuccessRequest), new ClientRequestFailedEventHandler(
OnFailedRequest));
        }
        private void OnSuccessRequest(Object sender,ClientRequestSucceededEventArgs args)
        {
            Dispatcher.BeginInvoke(FillGrid);
        }
        private void OnFailedRequest(Object sender,ClientRequestFailedEventArgs args)
        {
            MessageBox.Show("Request Failed: " + args.Message + ",Stack Trace:" + args.StackTrace);
        }
        private void FillGrid()
        {
            List
   
   
    
     _myContacts = new List
    
    
     
     ();
            foreach(ListItem item in _listItemCol)
            {
                _myContacts.Add(new MyContacts
                {
                    LastName = item["Title"].ToString(),
                    FirstName = item["FirstName"].ToString(),
                    BusinessPhone = item["WorkPhone"].ToString(),
                    EmailAddress = item["Email"].ToString()
                });
            }
            dataGrid1.ItemsSource = _myContacts;
        }
    }
}

    
    
   
   
12. 生成并部署项目。你会看到XAP文件部署到你的文档文件夹XAPFiles中。
13. 添加Silverlight WebPart到页面,提供XAP文件的URL如下:

14. Silverlight WebPart输出如下:

How it works...

        Silverlight对象模型中类和方法和托管、JS对象模型类似。Silverlight中程序使用异步执行(像JS一样)。代码也和JS菜谱中差不多。
与JS OM相似,我们为SuccessRequest和FailedRequest定义事件处理器。我们也有回调方法用联系人填充grid。无论什么时候使用客户端对象模型创建Silverlight应用程序,你都将遵循此步骤。

There's more...

        Silverlight应用程序中错误处理和其他两个方法遵循相同模式。你可以使用ExceptionScopeHandling(修改的try和catch块)。

See also

  1. 使用客户端对象模型创建列表菜谱;
  2. 处理异常菜谱;
  3. 使用JS对象模型菜谱。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值