Sharepoint Условные поля в Edit.aspx - PullRequest
1 голос
/ 11 декабря 2008

Я хотел бы отобразить определенные поля метаданных в форме редактирования на основе значения полей.

Пример: пользователи загружают документ в Doclib для утверждения его менеджером. Им разрешено изменять метаданные Имя, Номер дела, Местоположение, пока элемент не будет утвержден менеджером. Как только предмет будет одобрен, я хотел бы установить имя и номер дела только для чтения.

Каков наилучший способ удовлетворить это требование?

Если утверждено = да установить имя и номер дела = только для чтения еще ничего не делать.


Я пробовал этот метод около 5 часов. Я полагал, что это может отличаться для ModerationStatus. Может потребоваться что-то особенное

print("<xsl:choose>
<xsl:when test="@_ModerationStatus != '0;#approved'">               
<SharePoint:FormField runat="server" id="ff12{$Pos}" ControlMode="Edit" FieldName="Test_x0020_Session" __designer:bind="{ddwrt:DataBind('u',concat('ff12',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Test_x0020_Session')}"/>
<SharePoint:FieldDescription runat="server" id="ff12description{$Pos}" FieldName="Test_x0020_Session" ControlMode="Edit"/>                      
</xsl:when>
<xsl:otherwise>
     <xsl:value-of select="@Test_x0020_Session"></xsl:value-of>
</xsl:otherwise>

");

Я могу заставить его работать с другими полями, но не с ModerationStatus. Я также попытался изменить его на! = '0' и! = 'Approved' и '0; #Approved'. Я что-то не так делаю?

Похоже, он застрял на 0; # Одобрен

Ответы [ 2 ]

1 голос
/ 14 декабря 2008

Эту проблему легко решить с помощью SharePoint Designer.

  • Вам нужно будет изменить EditForm.aspx для вашего списка
  • Скрыть значение по умолчанию ListFormWebPart (Не удаляйте его!)
  • Вставить форму редактирования элемента ( подробнее ... )

Пользовательская форма будет выглядеть точно так же, как и форма по умолчанию, но вы сможете настроить ее с помощью SharePoint Designer. Приведенный ниже код можно использовать для списка проблем WSS по умолчанию. Заголовок проблемы будет отображаться только для чтения, когда Состояние проблемы = Закрыто .

<xsl:choose>
    <xsl:when test="@Status != 'Closed'">
        <SharePoint:FormField runat="server" id="ff1{$Pos}" ControlMode="Edit" FieldName="Title" __designer:bind="{ddwrt:DataBind('u',concat('ff1',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@Title')}"/>
        <SharePoint:FieldDescription runat="server" id="ff1description{$Pos}" FieldName="Title" ControlMode="Edit"/>
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="@Title"></xsl:value-of>
    </xsl:otherwise>
</xsl:choose>

Вы можете применять ту же логику для своих пользовательских списков или / и требований.

Как обычно, вы можете столкнуться с некоторыми дополнительными проблемами. Мне не удалось получить значение @_ModerationStatus в веб-части просмотра данных. Я не знаю точную причину ...

Вот простой обходной путь:

  1. Создать столбец в вашей библиотеке документов
  2. Создание нового рабочего процесса в SharePoint Designer.

Должен срабатывать при изменении элемента и копировать значение статуса утверждения во вновь созданный столбец.

Вы можете использовать пользовательский столбец для условного форматирования.

0 голосов
/ 18 декабря 2008

Следуйте комментариям Тони, но для вашего поля _ModerationStatus используйте следующую функцию XSLT:

<xsl:when test="not(starts-with(@_ModerationStatus,'0'))">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...