アドバンスド · ソリューション株式会社 畑中真由子
「SharePoint 2013のフォームだと縦に入力列が並んでいて味気ないため、レイアウトを変更したい。」
「Excelの申請書のようなフォームにしたい。」
そのような場合、SharePoint Designer 2013を利用してフォームのレイアウトをカスタマイズすることができます。
はじめに
紹介するカスタマイズデザインはSharePoint Designer 2013の知識、HTMLの知識が必要となります。
今回はリストの入力フォームのレイアウトデザインのみカスタマイズします。
カスタマイズ箇所は以下の通りです。
- 全体に枠線を付ける。
- 新規入力フォームとわかりやすいようにタイトルをつける。
- 各入力項目タイトルに背景色をつける。
- 入力項目の配置を変える。
まず、リストフォームを編集するため、SharePoint Designer 2013で入力フォームを新規作成しましょう。
入力フォームの新規作成
該当のSharePoint リストをSharePoint Designer 2013で開きます。
続いて、新規作成した入力フォームをカスタマイズします。
- 新規作成したフォームのファイル名をクリックします。フォームのソースが開きます。
- <table border="0" cellspacing="0" width="100%">~</table>までがフォームのソースコードになります。この部分をカスタマイズします。
(「タイトル」で検索すると見つけやすいです。)
<table border="0" cellspacing="0" width="100%">
<tr>
<td width="190px" valign="top" class="ms-formlabel">
<H3 class="ms-standardheader">
<nobr>タイトル<span class="ms-formvalidation"> *</span>
</nobr>
</H3>
</td>
…</table>
補足:ソースコードを編集する前に
1行に黄色の部分は列の名前、緑色の部分は入力するSharePointコントロールが配置されています。
黄色と緑色のソースは入力項目なので消さないでください。フォームを新規作成した際に、既定で青枠の「保存」、「キャンセル」ボタン、「添付ファイル」行ができます。
-
2で開いたソース(SharePoint標準のフォームのソース)を変更します。
変更箇所は以下の「フォームの編集前ソース」と「フォーム編集後のソース」を参照してください。
赤文字部分が変更する箇所、橙背景部分が変更した箇所となります。
フォーム編集前ソース
<table border="0" cellspacing="0" width="100%">
<!-- ここに<tr><tdcolspan="4"valign="middle"style="text-align:center">
< H1style="text-align:center;background-color:#FFFFCC;">新規入力フォーム
</H1>
< /td>
< /tr>を追加します。 -->
<!-- 受付日、メール通知のタグを以下の<tr>~</tr>の間に移動します。-->
< tr>
< /tr>
<tr>
<!-- td タグ内に style="background-color:#CCFFCC"を追加します。-->
<td width="190px" valign="top" class="ms-formlabel">
< H3 class="ms-standardheader">
< nobr>タイトル<span class="ms-formvalidation"> *</span>
< /nobr>
< /H3>
< /td>
<td width="400px" valign="top" class="ms-formbody">
< SharePoint:FormField runat="server" id="ff1{$Pos}" ControlMode="New" FieldName="Title" __designer:bind="{ddwrt:DataBind('i',concat('ff1',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Title')}"/>
< SharePoint:FieldDescription runat="server" id="ff1description{$Pos}" FieldName="Title" ControlMode="New"/>
< /td>
< /tr>
<tr>
<!-- td タグ内に style="background-color:#CCFFCC"を追加し、フォームタイトル下の<tr>~</tr>に移動します。-->
<td width="190px" valign="top" class="ms-formlabel">
< H3 class="ms-standardheader">
< nobr>受付日</nobr>
< /H3>
< /td>
<td width="400px" valign="top" class="ms-formbody">
< SharePoint:FormField runat="server" id="ff2{$Pos}" ControlMode="New" FieldName="_x53d7__x4ed8__x65e5_" __designer:bind="{ddwrt:DataBind('i',concat('ff2',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@_x53d7__x4ed8__x65e5_')}"/>
< SharePoint:FieldDescription runat="server" id="ff2description{$Pos}" FieldName="_x53d7__x4ed8__x65e5_" ControlMode="New"/>
< /td>
< /tr>
< tr>
<!-- td タグ内に style="background-color:#CCFFCC"を追加します。-->
<td width="190px" valign="top" class="ms-formlabel">
< H3 class="ms-standardheader">
< nobr>内容</nobr>
< /H3>
< /td>
<td width="400px" valign="top" class="ms-formbody">
< SharePoint:FormField runat="server" id="ff3{$Pos}" ControlMode="New" FieldName="_x5185__x5bb9_" __designer:bind="{ddwrt:DataBind('i',concat('ff3',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@_x5185__x5bb9_')}"/>
< SharePoint:FieldDescription runat="server" id="ff3description{$Pos}" FieldName="_x5185__x5bb9_" ControlMode="New"/>
< /td>
< /tr>
<tr>
<!-- td タグ内に style="background-color:#CCFFCC"を追加、フォームタイトル下の<tr>~</tr>に移動します。-->
<td width="190px" valign="top" class="ms-formlabel">
< H3 class="ms-standardheader">
< nobr>メール通知</nobr>
< /H3>
< /td>
<td width="400px" valign="top" class="ms-formbody">
< SharePoint:FormField runat="server" id="ff4{$Pos}" ControlMode="New" FieldName="_x30e1__x30fc__x30eb__x901a__x77" __designer:bind="{ddwrt:DataBind('i',concat('ff4',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@_x30e1__x30fc__x30eb__x901a__x77')}"/>
< SharePoint:FieldDescription runat="server" id="ff4description{$Pos}" FieldName="_x30e1__x30fc__x30eb__x901a__x77" ControlMode="New"/>
< /td>
< /tr>
<tr id="idAttachmentsRow">
< td nowrap="true" valign="top" class="ms-formlabel" width="20%">
< SharePoint:FieldLabel ControlMode="New" FieldName="Attachments" runat="server"/>
</td>
< td valign="top" class="ms-formbody" width="80%">
< SharePoint:FormField runat="server" id="AttachmentsField" ControlMode="New" FieldName="Attachments" __designer:bind="{ddwrt:DataBind('i','AttachmentsField','Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Attachments')}"/>
< script>
var elm = document.getElementById("idAttachmentsTable");
if (elm == null || elm.rows.length == 0)
document.getElementById("idAttachmentsRow").style.display='none';
< /script>
</td>
</tr>
< xsl:if test="$dvt_1_automode = '1'" ddwrt:cf_ignore="1">
<tr>
< td colspan="99" class="ms-vb">
< span ddwrt:amkeyfield="ID" ddwrt:amkeyvalue="ddwrt:EscapeDelims(string(@ID))" ddwrt:ammode="view"></span>
< /td>
< /tr>
< /xsl:if>
< /table>
フォーム編集後ソース
編集前のソースで赤文字部分が編集後のソースでは、橙色背景色のソースコードになっています。
<tableborder="1"cellspacing="1"width="100%">
<!-- フォームのタイトルになる部分です。画像① -->
<tr>
< tdcolspan="4"valign="middle"style="text-align:center">
< H1style="text-align:center;background-color:#FFFFCC;">新規入力フォーム
</H1>
< /td>
< /tr>
<tr>
<!-- 受付日項目の入力。画像② -->
<tdwidth="100px"valign="top"class="ms-formlabel"style="background-color:#CCFFCC">
< H3class="ms-standardheader">
< nobr>受付日</nobr>
< /H3>
< /td>
< tdwidth="100px"valign="top"class="ms-formbody">
< SharePoint:FormFieldrunat="server"id="ff2{$Pos}"ControlMode="New"FieldName="_x53d7__x4ed8__x65e5_"__designer:bind="{ddwrt:DataBind('i',concat('ff2',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@_x53d7__x4ed8__x65e5_')}"/>
< SharePoint:FieldDescriptionrunat="server"id="ff2description{$Pos}"FieldName="_x53d7__x4ed8__x65e5_"ControlMode="New"/>
</td>
<!-- メール通知項目の入力。画像③ -->
< tdwidth="100px"valign="top"class="ms-formlabel"style="background-color:#CCFFCC">
< H3class="ms-standardheader">
< nobr>メール通知</nobr>
< /H3>
< /td>
< tdwidth="100px"valign="middle"class="ms-formbody"style="text-align:center">
< SharePoint:FormFieldrunat="server"id="ff4{$Pos}"ControlMode="New"FieldName="_x30e1__x30fc__x30eb__x901a__x77"__designer:bind=
"{ddwrt:DataBind('i',concat('ff4',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@_x30e1__x30fc__x30eb__x901a__x77')}"/>
< SharePoint:FieldDescriptionrunat="server"id="ff4description{$Pos}"FieldName="_x30e1__x30fc__x30eb__x901a__x77"ControlMode="New"/>
< /td>
</tr>
< tr>
<!-- タイトル項目の部分です。画像④ -->
< tdwidth="100px"valign="top"class="ms-formlabel"style="background-color:#CCFFCC">
< H3class="ms-standardheader">
< nobr>タイトル<spanclass="ms-formvalidation">*</span>
< /nobr>
< /H3>
< /td>
< tdcolspan="3"width="400px"valign="middle"class="ms-formbody"style="text-align:center">
< SharePoint:FormFieldrunat="server"id="ff1{$Pos}"ControlMode="New"FieldName="Title"__designer:bind="{ddwrt:DataBind('i',concat('ff1',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Title')}"/>
< SharePoint:FieldDescriptionrunat="server"id="ff1description{$Pos}"FieldName="Title"ControlMode="New"/>
</td>
</tr>
<tr>
<!-- 内容項目の部分です。画像⑤ -->
<tdwidth="100px"valign="top"class="ms-formlabel"style="background-color:#CCFFCC">
<H3class="ms-standardheader">
<nobr>内容</nobr>
</H3>
</td>
<tdcolspan="3"width="400px"valign="top"class="ms-formbody"style="text-align:left">
<SharePoint:FormFieldrunat="server"id="ff3{$Pos}"ControlMode="New"FieldName="_x5185__x5bb9_"__designer:bind="{ddwrt:DataBind('i',concat('ff3',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@_x5185__x5bb9_')}"/>
<SharePoint:FieldDescriptionrunat="server"id="ff3description{$Pos}"FieldName="_x5185__x5bb9_"ControlMode="New"/>
</td>
</tr><!-- 添付ファイル項目の部分です。削除するとファイルが添付できなくなります。画像青枠-->
<trid="idAttachmentsRow"><tdnowrap="true"valign="top"class="ms-formlabel"width="20%"><SharePoint:FieldLabelControlMode="New"FieldName="Attachments
"runat="server"/></td><tdvalign="top"class="ms-formbody"width="80%"><SharePoint:FormFieldrunat="server"id="AttachmentsField"
ControlMode="New"FieldName="Attachments"__designer:bind="{ddwrt:DataBind('i','AttachmentsField','Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Attachments')}"/><script>
varelm=document.getElementById("idAttachmentsTable");
if(elm==null||elm.rows.length==0)
document.getElementById("idAttachmentsRow").style.display='none';
</script></td></tr>
<xsl:iftest="$dvt_1_automode='1'"ddwrt:cf_ignore="1">
<tr>
<tdcolspan="99"class="ms-vb">
<spanddwrt:amkeyfield="ID"ddwrt:amkeyvalue="ddwrt:EscapeDelims(string(@ID))"ddwrt:ammode="view"></span>
</td>
</tr>
</xsl:if>
</table>