新しいドキュメント セット フォームの作成
最終更新日: 2010年4月15日
適用対象: SharePoint Server 2010
Microsoft SharePoint Server 2010 には、ドキュメント セットの作成に使用される新しいフォームが含まれます。このフォームは、_layouts フォルダーに配置されます。すべてのドキュメント セット コンテンツ タイプで使用される 1 つのフォームがあります。ユーザー設定フォームを使用すると、メタデータを自動的に入力したり、条件付き書式を含めたりできるため、ユーザーが選択するオプションに従って、特定のフィールドのみを表示するようにできます。
ドキュメント セット コンテンツ タイプには、NewFormUrl と呼ばれるプロパティが含まれます。このプロパティを変更することで、ドキュメント セット コンテンツ タイプごとに 1 つの新しいフォームを指定できます。このプロパティを変更する前に、新しい .aspx フォームを作成し、_layouts フォルダー、または _layouts 内のフォルダーに格納します。フォームをフォルダー内に格納する場合、ドキュメント セット アセンブリに関する情報を含む web.config ファイルを追加する必要があります。ドキュメント セット オブジェクト モデルでは、ドキュメント セットを作成するために、web.config ファイルが必要です。
CustomNewDocSet.aspx
ドキュメント セット フォームを作成するには
.aspx フォームを作成し、_layouts フォルダー、または _layouts 内のフォルダーに格納します。
CustomNewDocSet.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CustomNewDocset.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <asp:Literal ID="litList" runat="server" /> <asp:Literal ID="litCt" runat="server" /> </body> </html>
分離コード ページ
using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Microsoft.SharePoint; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SPList list = SPContext.Current.List; litList.Text = list.Title; SPContentTypeId ctid = new SPContentTypeId(Request.QueryString.GetValues("ContentTypeId")[0]); SPContentType ct = list.ContentTypes[ctid]; litCt.Text = ct.Name; } }
カスタムの新しいドキュメント セット ページを使用するように、ドキュメント セット コンテンツ タイプの URL を更新します。
ヒント ChangeNewDocSetPage.ps1 を使用してドキュメント セット コンテンツ タイプの URL を更新できます。例のスクリプトでは、変更するドキュメント セット コンテンツ タイプを含むサイトへの URL が渡されます。ctid は、変更するコンテンツ タイプの適切なコンテンツ タイプ ID を表します。スクリプトでは、既定のページではなく、カスタマイズされた新しいドキュメント セット ページを使用するように NewFormUrl プロパティが更新されます。また、以下のパラメーターが使用されます。スクリプトでは、カスタムの新しいドキュメント セット ページが作成され、新しいページを使用するように newFormUrl が更新されます。ドキュメント ライブラリ内の [新しいドキュメント] ドロップダウン リストを使用して新しいドキュメント セットを作成すると、カスタム ページがリストに表示されます。
表 1. ChangeNewDocSetPage.ps1 オブジェクト参照
オブジェクト参照
説明
$contentType.NewFormUrl
カスタムの新しいドキュメント セット フォームを含む _layouts フォルダーに関連する場所。
$ctid
変更するドキュメント セットのコンテンツ タイプ ID。
$siteurl
カスタムのドキュメント セット コンテンツ タイプを指定する URL。
ChangeNewDocSetPage.ps1
$siteUrl = "http://mysite" $ctid = "0x0120D520" param($siteUrl) $site = New-Object Microsoft.SharePoint.SPSite($siteUrl) $web = $site.RootWeb; $contentTypeId = New-Object Microsoft.Sharepoint.SPContentTypeId($ctid) $contentType = $web.ContentTypes[$contentTypeId] $contentType.NewFormUrl = "_layouts/CustomNewDocset/CustomNewDocset.aspx" $contentType.Update() $web.Dispose() $site.Dispose()
web.config ファイル (新しいドキュメント セット コンテンツ タイプのページで必要) を作成し、カスタムの新しいドキュメント セットの .aspx ページを含むフォルダーに配置します。
注意
新しいドキュメント セット コンテンツ タイプのページを _layouts のルートに追加した場合、このステップをスキップできます。必要に応じて、他のアセンブリへの参照を追加できます。
Web.Config<?xml version="1.0"?> <!-- Note: As an alternative to manually editing this file, you can use the Web admin tool with the ASP.NET Configuration option to configure settings for your application. A full list of settings and comments can be found in machine.config.comments, usually located in \Windows\Microsoft.Net\Framework\v2.x\Config --> <configuration> <system.web> <!-- Set compilation debug="true" to insert debugging symbols into the compiled page. Because this affects performance, set this value to true only during development. --> <compilation debug="false"> <assemblies> <add assembly="Microsoft.Office.DocumentManagement, Version=14.0.0.0, Culture=neutral,PublicKeyToken=94DE0004B6E3FCC5"/> </assemblies> </compilation> </system.web> </configuration>