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() + "\r\n\r\n" + 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 }