LoginSignup
0
0

More than 5 years have passed since last update.

【SharePoint 2013】カスタムフォームで文字列の状態で項目の表示・非表示を切り替える

Last updated at Posted at 2018-11-15

SharePoint Designer 2013 でリストのカスタムフォームを作成した際に、
ある列の状態によって項目の表示/非表示を制御したいという要望は多いと思います。

文字列を XPath で比較する際のサンプルです。[承認状況(ApprovalStatus)]列の文字列を比較し、それぞれ [一次承認]、[二次承認]、[承認済] の時に表示する項目を切り替えます。

前方一致、部分一致、完全一致のサンプルを書きました。

<xsl:choose>
  <xsl:when test="starts-with(@ApprovalStatus, '一次承認')"><!-- 前方一致 -->
    <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="ff16{$Pos}" ControlMode="Edit" FieldName="PrimaryApproved" __designer:bind="{ddwrt:DataBind('u',concat('ff16',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@PrimaryApproved')}" />
        <SharePoint:FieldDescription runat="server" id="ff16description{$Pos}" FieldName="PrimaryApproved" ControlMode="Edit" />
      </td>
    </tr>
  </xsl:when>
  <xsl:when test="contains(@ApprovalStatus, '二次承認')"><!-- 部分一致 -->
    <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="ff17{$Pos}" ControlMode="Edit" FieldName="SecondaryApproved" __designer:bind="{ddwrt:DataBind('u',concat('ff17',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@SecondaryApproved')}" />
        <SharePoint:FieldDescription runat="server" id="ff17description{$Pos}" FieldName="SecondaryApproved" ControlMode="Edit" />
      </td>
    </tr>
  </xsl:when>
  <xsl:when test="@ApprovalStatus = '承認済'"><!-- 完全一致 -->
    <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">
        <xsl:value-of select="ddwrt:FormatDateTime(string(@ApprovalDate), 1041, 'yyyy/MM/dd (ddd) HH:mm')" />
      </td>
    </tr>
  </xsl:when>
</xsl:choose>

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0