翻译

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文件应该是这样的:
<?xml version="1.0" encoding="utf-8"?>  
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对象模型菜谱。
文章最后发布于: 2014-05-13 17:08:15
展开阅读全文
0 个人打赏
私信求帮助

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览