FormField игнорирует формулу проверки столбца - PullRequest
1 голос
/ 12 июля 2010

В 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) страниц элементов или мне нужно написать собственный графический интерфейс проверка в этом случае?

Спасибо!

1 Ответ

0 голосов
/ 30 июля 2010

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

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