ClientOMProxy

来源:互联网 发布:精华液 推荐 知乎 编辑:程序博客网 时间:2024/04/30 15:34
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Configuration;using System.Xml;using System.Net;using Microsoft.SharePoint.Client;namespace ADSK.AEC.SP2010.ClientOM{    public class ClientOMProxy:IDisposable    {        private ClientContext clientContext = null;        public ListItemCollection listItems = null;        public ClientOMProxy(string siteURL)        {            this.SiteURL = siteURL;            clientContext = new ClientContext(this.SiteURL);        }        public override void GetListItemsAsync(string listName, string viewXML, out ListItemCollection listItems,  ClientRequestSucceededEventHandler successEventHandler, ClientRequestFailedEventHandler failEventHandler)        {            clientContext.Load(clientContext.Web);            List targetList = clientContext.Web.Lists.GetByTitle(listName);            clientContext.Load(targetList);            CamlQuery camlQuery = new CamlQuery();            camlQuery.ViewXml = viewXML;            listItems = targetList.GetItems(camlQuery);            clientContext.Load(listItems);            clientContext.ExecuteQueryAsync(successEventHandler, failEventHandler);        }        public void CreateListItemAsync(string listName, Dictionary<string, object> fieldValueDic, ClientRequestSucceededEventHandler onSuccess, ClientRequestFailedEventHandler onFail)        {            clientContext.Load(clientContext.Web);            List targetList = clientContext.Web.Lists.GetByTitle(listName);            clientContext.Load(targetList);            ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();            ListItem oListItem = targetList.AddItem(itemCreateInfo);            foreach (KeyValuePair<string, object> pair in fieldValueDic)            {                oListItem[pair.Key] = pair.Value;            }            oListItem.Update();            clientContext.Load(oListItem);            clientContext.ExecuteQueryAsync(onSuccess, onFail);        }        public void UpdateListItemAsync(string listName, ListItem item, Dictionary<string, object> fieldValueDic, ClientRequestSucceededEventHandler onSuccess, ClientRequestFailedEventHandler onFail)        {            clientContext.Load(clientContext.Web);            List targetList = clientContext.Web.Lists.GetByTitle(listName);            clientContext.Load(targetList);            ListItem oListItem = item;            foreach (KeyValuePair<string, object> pair in fieldValueDic)            {                oListItem[pair.Key] = pair.Value;            }            oListItem.Update();            clientContext.Load(oListItem);            clientContext.ExecuteQueryAsync(onSuccess, onFail);        }        public void Dispose()        {            if (null != clientContext)                clientContext.Dispose();        }    }}
其中的 ClientRequestSucceededEventHandler onSuccess, ClientRequestFailedEventHandler onFail 分别为异步操作成功和失败后的回调委托,可以在调用方法的时候传出这两个委托的具体实现。由于是客户端程序,所以真正的操作都是在 ExecuteQueryAsync方法调用时才开始执行的。
http://www.silverlightchina.net/html/tips/2010/1016/2694.html