1,项目有个需求:项目表每更新一次,就把跟该项目有关的任务创建一个静态页(历史版本功能)!
注意事项:需要在页面上拖一个ContentEditer!将代码放在ContentEditer里面,因为我试过发现,如果直接在SPD里面写代码,保存时,下面那段引用程序集的代码会提示不安全字符串,然后会被修改掉。
1 function createListItem(version,itemTitle) { 2 3 var clientContext = new SP.ClientContext.get_current(); 4 var oWebsite = clientContext.get_web(); 5 var oList = oWebsite.get_lists().getByTitle("项目计划历史"); 6 7 var fileCreateInfo = new SP.FileCreationInformation(); 8 fileCreateInfo.set_url(version+".aspx"); 9 fileCreateInfo.set_content(new SP.Base64EncodedByteArray()); 10 var fileContent ="<%@ Assembly Name="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%> <%@ Page Language="C#" Inherits="Microsoft.SharePoint.WebPartPages.WikiEditPage" MasterPageFile="~masterurl/default.master" MainContentID="PlaceHolderMain" meta:webpartpageexpansion="full" meta:progid="SharePoint.WebPartPage.Document" %><%@ Import Namespace="Microsoft.SharePoint.WebPartPages" %> <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint" %> <%@ Assembly Name="Microsoft.Web.CommandUI, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %><%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %><asp:Content ContentPlaceHolderId="PlaceHolderPageTitle" runat="server"> <SharePoint:ProjectProperty Property="Title" runat="server"/> - <SharePoint:ListItemProperty runat="server"/></asp:Content><asp:Content ContentPlaceHolderId="PlaceHolderPageImage" runat="server"><SharePoint:AlphaImage ID=onetidtpweb1 Src="/_layouts/15/images/wiki.png?rev=32" Width=145 Height=54 Alt="" Runat="server"/></asp:Content><asp:Content ContentPlaceHolderId="PlaceHolderAdditionalPageHead" runat="server"> <meta name="CollaborationServer" content="SharePoint Team Web Site" /> <SharePoint:ScriptBlock runat="server"> var navBarHelpOverrideKey = "WSSEndUser"; </SharePoint:ScriptBlock> <SharePoint:RssLink runat="server"/> </asp:Content> <asp:Content ContentPlaceHolderId="PlaceHolderMiniConsole" runat="server"> <SharePoint:FormComponent TemplateName="WikiMiniConsole" ControlMode="Display" runat="server" id="WikiMiniConsole"/> </asp:Content> <asp:Content ContentPlaceHolderId="PlaceHolderLeftActions" runat="server"> <SharePoint:RecentChangesMenu runat="server" id="RecentChanges"/> </asp:Content> <asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server"> <span id="wikiPageNameDisplay" style="display: none;" runat="server"> <SharePoint:ListItemProperty runat="server"/> </span> <span style="display:none;" id="wikiPageNameEdit" runat="server"> <asp:TextBox id="wikiPageNameEditTextBox" runat="server"/> </span> <SharePoint:VersionedPlaceHolder UIVersion="4" runat="server"> <SharePoint:SPRibbonButton id="btnWikiEdit" RibbonCommand="Ribbon.WikiPageTab.EditAndCheckout.SaveEdit.Menu.SaveEdit.Edit" runat="server" Text="edit"/> <SharePoint:SPRibbonButton id="btnWikiSave" RibbonCommand="Ribbon.WikiPageTab.EditAndCheckout.SaveEdit.Menu.SaveEdit.SaveAndStop" runat="server" Text="edit"/> <SharePoint:SPRibbonButton id="btnWikiRevert" RibbonCommand="Ribbon.WikiPageTab.EditAndCheckout.SaveEdit.Menu.SaveEdit.Revert" runat="server" Text="Revert"/> </SharePoint:VersionedPlaceHolder> <SharePoint:EmbeddedFormField id="WikiField" FieldName="WikiField" ControlMode="Display" runat="server"></SharePoint:EmbeddedFormField> <WebPartPages:WebPartZone runat="server" ID="Bottom" CssClass="ms-hide" Title="loc:Bottom"><ZoneTemplate></ZoneTemplate></WebPartPages:WebPartZone></asp:Content>"; 11 12 for (var i = 0; i < fileContent.length; i++) { 13 fileCreateInfo.get_content().append(fileContent.charCodeAt(i)); 14 } 15 16 clientContext.load(oWebsite); 17 var folder = oWebsite.getFolderByServerRelativeUrl(_spPageContextInfo.webServerRelativeUrl + "/ProjectHistory/"+itemTitle); 18 this.newFile = folder.get_files().add(fileCreateInfo); 19 clientContext.load(this.newFile); 20 clientContext.executeQueryAsync( 21 Function.createDelegate(this, successHandler), 22 Function.createDelegate(this, errorHandler) 23 ); 24 function successHandler() { 25 26 this.file = oWebsite.getFileByServerRelativeUrl(this.newFile.get_serverRelativeUrl()); 27 this.listItem = this.file.get_listItemAllFields(); 28 var htmlconter=$("#taskcont").html(); 29 this.listItem.set_item("WikiField", htmlconter); 30 31 this.listItem.update(); 32 this.onConversionToMasterPageSuccess = function (sender, args) { 33 34 }; 35 this.onConversionToMasterPageFailure = function (sender, args) { 36 alert(args.get_message() + " " + args.get_stackTrace()); 37 }; 38 clientContext.executeQueryAsync( 39 Function.createDelegate(this, this.onConversionToMasterPageSuccess), 40 Function.createDelegate(this, this.onConversionToMasterPageFailure)); 41 } 42 function errorHandler() { 43 alert("Request failed: " + arguments[1].get_message()); 44 }