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