SharePoint 常用写法
前端写法
- 查询
var camlqueryStr = ""; function FindData() { var siteUrl = _spPageContextInfo.webServerRelativeUrl; var clientContext = new SP.ClientContext(siteUrl); // 列表id(类似于表的id,不是表内容的id) var ListId = GetQueryString("ListId"); // 从url链接中获取列表id this.CurrentList = clientContext.get_web().get_lists().getById(ListId); // this.CurrentList = clientContext.get_web().get_lists().getByTitle("列表名称"); // 方法二 例:产品新规明细 // 根据具体的需要在这个地方写查询条件、排序等 camlqueryStr = "<View><Query /><ViewFields /><QueryOptions /></View>"; var SSDeilscamlQuery = new SP.CamlQuery(); SSDeilscamlQuery.set_viewXml(camlqueryStr); this.Currentitems = this.CurrentList.getItems(SSDeilscamlQuery); clientContext.load(this.Currentitems); clientContext.executeQueryAsync( Function.createDelegate(this, this.FindDataSucceeded), Function.createDelegate(this, this.FindDataFailed) ); } function FindDataSucceeded() { // 成功 var CurrentitemsEnumerator = this.Currentitems.getEnumerator(); while (CurrentitemsEnumerator.moveNext()) { var currentItem = CurrentitemsEnumerator.get_current(); // 获取字段值 var temp = currentItem.get_item('字段英文名称与caml中的对应'); } } function FindDataFailed() { // 失败 } - 新增/修改
var listItem; // 列表 var ctx; // 客户端上下文 function UpdateData(listItemID) { // 遮罩层 // ResetWarningDIV("warningsss", true, "<img src='https://olympus.sharepoint.cn/sites/GSPWF/Image/firstLoad.gif'>"); listItem = null; // ctx(客户端上下文)赋值,方法1 // var siteUrl = _spPageContextInfo.webServerRelativeUrl; // 当前url:"/sites/SSBGWFTest/OCSM" // ctx = new SP.ClientContext(siteUrl); // ctx(客户端上下文)赋值,方法2 ctx = SP.ClientContext.get_current(); var web = ctx.get_web(); list = web.get_lists().getByTitle("列表名称"); // 例:产品新规明细 ctx.load(list); var itemCreateInfo = new SP.ListItemCreationInformation(); // 如果listItemID没有值就新增,有值就更新 if (listItemID != "" && listItemID != null) { // 更新 listItem = list.getItemById(listItemID); } else { // 新增 listItem = list.addItem(itemCreateInfo); listItem.set_item('key1', value1); listItem.set_item('key2', value2); } listItem.set_item('key3', value3); listItem.update(); ctx.load(listItem); ctx.executeQueryAsync( Function.createDelegate(this, this.SucceededCallback), Function.createDelegate(this, this.FailedCallback) ); } function SucceededCallback() { // 成功 } function FailedCallback() { // 失败 } - 删除
function DelDate() { var siteUrl = _spPageContextInfo.webServerRelativeUrl; this.Context = new SP.ClientContext(siteUrl); this.delList = this.Context.get_web().get_lists().getByTitle("列表名称"); // 例: 揭示板申请 this.ApplyItem = delList.getItemById(Number(this.DelID)); // 参数为要删除数据的id this.ApplyItem.recycle(); // 放入回收站 Context.executeQueryAsync( Function.createDelegate(this, this.DelSucceeded), Function.createDelegate(this, this.DelFailed) ); } function DelSucceeded() { // 成功 } function DelFailed() { // 失败 } - 模态窗口
- 弹出
// 弹出框共通 function OpenFormPage(url, callback, ismode, addsiteurl, openblank, dlgtitle) { if (ismode) { var options = { url: (addsiteurl ? _spPageContextInfo.siteAbsoluteUrl : _spPageContextInfo.webAbsoluteUrl) + url, allowMaximize: false, showClose: true, dialogReturnValueCallback: callback }; if (dlgtitle != null && dlgtitle != undefined && dlgtitle != "") { options.title = dlgtitle; } try { SP.UI.ModalDialog.showModalDialog(options); } catch (error) { SP.SOD.execute('sp.ui.dialog.js', 'SP.UI.ModalDialog.showModalDialog', options); } } else { if (url.indexOf("Source") >= 0 || url.indexOf("source") >= 0) { url = _spPageContextInfo.webAbsoluteUrl + url; } else if (window.location.href.indexOf("?") >= 0) { if (url.indexOf("?") >= 0) { url = _spPageContextInfo.webAbsoluteUrl + url + "&Source=" + window.location.href.split('?')[0]; } else { url = _spPageContextInfo.webAbsoluteUrl + url + "?Source=" + window.location.href.split('?')[0]; } } else { if (url.indexOf("?") >= 0) { url = _spPageContextInfo.webAbsoluteUrl + url + "&Source=" + window.location.href; } else { url = _spPageContextInfo.webAbsoluteUrl + url + "?Source=" + window.location.href; } } if (openblank) { window.open(url); } else { window.location.href = url; } } } // 页面具体应用(回调部分) function formcallback(dialogResult, returnValue) { // 具体逻辑 } - 弹出页面处理
function ReturnValue() { window.frameElement.commitPopup("返回值"); }后端写法
- 弹出
- 查询
/// <summary> /// 方法说明 /// </summary> /// <param name="webUrl"></param> /// <param name="date"></param> /// <returns></returns> private List<NonMedicalProductsModel> GetNonMedicalProductsList(string webUrl, string date) { LogHelper.MethodStart("方法说明"); // 最终返回结果 List<NonMedicalProductsModel> resultList = new List<NonMedicalProductsModel>(); NonMedicalProductsModel products = new NonMedicalProductsModel(); try { ClientContext context = SPContext.CreateClientContext(webUrl); List productsList = context.Web.Lists.GetByTitle("列表名称"); // 例:产品新增 CamlQuery camlQuery = new CamlQuery(); // 查询系统时间前一天的数据 // ApprovalFinishTime 审批完成时间 // ApplyStatus 审批状态:草稿;提交;审批中;同意;拒绝;已取消;取消首营; camlQuery.ViewXml = @"<View><Query><Where> <And> <Eq> <FieldRef Name='ApprovalFinishTime' /> <Value Type='DateTime'>" + date + @"</Value> </Eq> <Or> <Eq> <FieldRef Name='ApplyStatus' /> <Value Type='Choice'>同意</Value> </Eq> <Eq> <FieldRef Name='ApplyStatus' /> <Value Type='Choice'>拒绝</Value> </Eq> </Or> </And> </Where></Query></ViewFields></View>"; ListItemCollection productsListItems = productsList.GetItems(camlQuery); // 加载查询结果(因为后面需要用到,所以需要Load) context.Load(productsListItems); // 查询 // context.ExecuteQueryWithIncrementalRetry(SSBGConfig.RETRY_COUNT, SSBGConfig.DELAY_SECOND); // 为了解决具体问题增加的自定义方法 context.ExecuteQuery(); // 与上面的效果相同 foreach (ListItem item in productsListItems) { products = new NonMedicalProductsModel(); products.Title = item["Title"].SafeToString(); resultList.Add(products); } } catch (Exception ex) { LogHelper.Error("【Method.GetNonMedicalProductsList】查询异常"); LogHelper.Error(ex); throw ex; } LogHelper.MethodEnd("方法说明"); return resultList; } - 新增
/// <summary> /// 新增 /// </summary> public void AddListItem() { try { ClientContext ctx = SPContext.CreateClientContext(rootWebUrl); List addList = ctx.Web.Lists.GetByTitle("列表名称"); // 例:基础数据 ListItemCreationInformation info = new ListItemCreationInformation(); ListItem addItem = addList.AddItem(info); addItem["key1"] = "value1"; addItem["key2"] = "value2"; addItem["key3"] = "value3"; addItem.Update(); // 更新语句不能少 // 如果后面需要用到的话,进行Load ctx.Load(addItem); // 执行插入 ctx.ExecuteQuery(); } catch (Exception ex) { LogHelper.Error(ex); } } - 修改
/// <summary> /// 更新 /// </summary> /// <param name="Id">条目Id</param> public void UpdateListItem(string Id) { try { ClientContext ctx = SPContext.CreateClientContext(rootWebUrl); List updateList = ctx.Web.Lists.GetByTitle("列表名称"); // 例:基础数据 ListItem updateItem = updateList.GetItemById(Id); updateItem["key1"] = "value1"; updateItem["key2"] = "value2"; updateItem["key3"] = "value3"; updateItem.Update(); // 如果后面需要用到的话,进行Load ctx.Load(updateItem); // 执行更新 ctx.ExecuteQuery(); } catch (Exception ex) { LogHelper.Error(ex); } } - 删除
public void DeleteData(string alistid) { try { ClientContext context = SPContext.CreateClientContext(rootWebUrl); List detailedlist = context.Web.Lists.GetByTitle("列表名称"); CamlQuery delcaml = new CamlQuery(); // 根据具体情况进行查询 delcaml.ViewXml = "<View><Query></Query><ViewFields><FieldRef Name='ID'/></ViewFields></View>"; // 获取查询所有数据 ListItemCollection listitems = detailedlist.GetItems(delcaml); // 加载(如果后面不使用可以不用Load) context.Load(listitems); // 执行 context.ExecuteQuery(); // 循环 for (int i = listitems.Count - 1; i >= 0; i--) { // 删除 ListItem listitem = listitems[i]; listitem.Recycle(); } // 执行 context.ExecuteQuery(); } catch (Exception) { throw; } }
后记说明
- 如果后面不使用那么就可以不用加载到内存(执行Load()方法),直接执行ExecuteQuery()方法就可以了;
- 遮罩层对应html代码
<div id="warningsss" class="divwarning" style="font-size: 20px; color: green;display:none;"> 正在加载,请稍后...</div>ResetWarningDIV("warningsss", true, ""); // 显示遮罩 ResetWarningDIV("warningsss", false, ""); // 隐藏遮罩 function ResetWarningDIV(idorclass, ishow, innerhtml) { if ($("." + idorclass).length > 0 && !$("." + idorclass).hasClass("divwarning")) { $("." + idorclass).addClass("divwarning"); } if ($("#" + idorclass).length > 0 && !$("#" + idorclass).hasClass("divwarning")) { $("#" + idorclass).addClass("divwarning"); } $(".divwarning").html(innerhtml); if (ishow) { $(".divwarning").show(); } else { $(".divwarning").hide(); } } - caml语句中的
<view>标签不能少,如果少了会把所有的数据都查询出来(不会报语法错误) - rootWebUrl:网站url地址;例:https://xxx.sharepoint.cn/sites/Test/OCSM
- Load()后面跟ExecuteQuery()才会把数据加载到内存,只有Load()不会把数据加载到内存
- 参考文档:sharepoint 2010 弹出模式窗口showModalDialog并返回值returnResult方法
首页 > 学习总览 > 开发语言 > SharePoint