FormField игнорирует формулу проверки столбца

В SP 2010 есть эта замечательная новая функция, где вы можете указать пользовательскую формулу проверки и сообщение об ошибке для любого столбца.

По какой-то причине это не работает, когда вы заменяете NewForm.aspx по умолчанию для списка пользовательской формой, используя конструктор SharePoint "Создать новую форму списка -> Новая форма элемента". Он создает aspx, где он помещает элемент управления FormField для каждого поля выбранного типа контента вместо ListFormWebpart, который выполняет итерацию и рендеринг каждого поля без полей, явно упомянутых на странице.

Код для каждого поля в только что созданной пользовательской форме похож на следующий (только для иллюстрации)

<tr>
  <td width="190px" valign="top" class="ms-formlabel">
    <H3 class="ms-standardheader">
    <nobr>PhoneNumber</nobr></H3>
  </td>
  <td width="400px" valign="top" class="ms-formbody">
    <SharePoint:FormField runat="server" id="ff4{$Pos}" ControlMode="New" FieldName="PhoneNumber" __designer:bind="{ddwrt:DataBind('i',concat('ff4',$Pos),'Value','ValueChanged','ID',ddwrt:EscapeDelims(string(@ID)),'@PhoneNumber')}"/>
    <SharePoint:FieldDescription runat="server" id="ff4description{$Pos}" FieldName="PhoneNumber" ControlMode="New"/>
  </td>
</tr>

Проблема заключается в том, что с формой "Создать новую форму списка -> Форма нового элемента" проверка формулы (новой sharepoint 2010) не работает: она проходит проверку формы только при сбое на этапе сохранения, что приводит к появлению страницы ошибки.

Настраивается ли это каким-либо образом с помощью элемента управления FormField, или я могу каким-либо иным образом воспользоваться преимуществом этого нового механизма проверки sp2010 при использовании пользовательских (не ListFormWebpart) страниц элементов или мне нужно написать собственную проверку GUI в этом случае?

Спасибо!

1 ответ

Решение

Проблема не в самом элементе управления FormField, а в веб-части DataFormWebPart, в которой я использовал эти поля. Есть 2 проблемы:

  1. С неуверенностью поле выдает исключение, которое должно правильно обрабатываться WebPart, показывая сообщение о том, что элемент с таким значением поля уже существует. Но DataFormWebPart не обрабатывает это исключение, в отличие от ListFormWebPart по умолчанию. Это похоже на формулу пользовательской проверки.
  2. Средства управления полями SharePoint реализуют интерфейс IValidator, так что веб-часть-владелец может проверять их и отображать соответствующие сообщения (например, для обязательных полей поиска), но DataFormWebPart этого не делает (ListFormWebPart делает)
Другие вопросы по тегам