Как добавить новое поле в пользовательский список (см. правка!)

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/12664

Вопрос

Я использую шаблон Microsoft для добавления тренингов и курсов, на которые люди должны зарегистрироваться.Все работает нормально, но я хочу добавить поле в список Курсов.Я хочу добавить поле, указывающее, для какого типа персонала предназначен этот курс, например, для отдела кадров, охраны труда, администратора и т.д.

Итак, я повсюду искал ответы на этот вопрос, документация по SharePoint шокирует, и я сделал следующее:

  • Настройки > Создать столбец на странице Курсов.
  • Ввел все необходимые данные
  • В DispForm добавлены EditForm и NewForm (.aspx) @fStaffType, Staff Type; Для DataFields Раздел.(Staff Type это название поля`)
  • В DispForm добавлена новая строка для отображения данных:

    <tr>
        <td width="190px" valign="top" class="ms-formlabel">
           <H3 class="ms-standardheader">
               <nobr>Staff Type</nobr>
           </H3>
        </td>
       <td width="400px" valign="top" class="ms-formbody">
           <xsl:value-of select="@fStaffType"/>
        </td>
    </tr>
    
  • В EditForm и NewForm добавлена новая строка для редактирования / ввода данных:

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

В EditForm и NewForm я получаю сообщение об ошибке:

Управление отображением ошибок - ff12description_1

Возникло необработанное исключение.Ссылка на объект не установлена на экземпляр объекта.

Если я закомментирую описание, оно покажет первое td (Имя поля), но второй td это просто пустота.

Мы были бы очень признательны за любую помощь!

Редактировать:Связанная с этим проблема, не знаю, должен ли я создать новый вопрос или нет.Но Марк Д. Андерсон ответил ниже, и я смог добавить и отобразить новое поле.Тем не менее, я прекрасно могу добавить новый курс, но если я отредактирую его и изменю поле Тип персонала, новый курс будет создан в текущий день и время.Но если другие поля редактируются, они редактируются правильно.

Есть какие-нибудь идеи?

Это было полезно?

Решение

Многие из Шаблоны "Сказочные 40" имейте индивидуальные формы.(Вероятно, на этом этапе вы будете спорить о сказочной части названия.)

Похоже, что вы делаете примерно правильные вещи в формах, но немного сложно сказать, к чему это приведет.

Когда вы создавали новый столбец, вы дали ему имя "fStaffType"?Если нет, то в этом-то и проблема.Если вы назвали его "Staff Type", то внутренним именем (или StaticName) столбца будет "Staff_x0020_Type".(Пробел в имени будет закодирован.) Редактировать:Вы можете найти StaticName для столбца, зайдя в настройки списка и отредактировав этот столбец.StaticName будет находиться в конце URL-адреса в качестве параметра строки запроса.В зависимости от того, какие символы вы использовали, они могут быть закодированы двояко, например Staff%5Fx0020%5FType .

Вам не нужно добавлять столбцы DisplayName и StaticName в раздел DiataFields - честно говоря, это не служит какой-либо очевидной цели.Вам просто нужно убедиться, что имя столбца в SharePoint:FormField и SharePoint:FieldDescription совпадает с именем StaticName для добавленного вами имени столбца.

Завершающий символ "_1" в ошибке является частью уникального имени, которое SharePoint присваивает каждому экземпляру этого столбца на странице (возможно, вы разрешаете редактировать несколько элементов в одной форме), добавляя значение переменной $ Pos.

Другие советы

Похоже, что ff12 уже определен где-то еще на странице, и, вероятно, он переписывается с _1 в конце.

  1. Можете ли вы просто попробовать перетащить поле из источника данных и позволить разработчику самому определить названия полей?

или

  1. Можете ли вы попробовать добавить "Пользовательскую форму редактирования" на другую страницу, а затем скопировать описание поля?

Возможно, я не читал или плохо понял ваши потребности.Почему бы не реализовать Content Type?У вас могла бы быть функция для ваших пользовательских полей (она же столбцы) и установить атрибут типа diplay в edit form = true, show в view = true (и т.д.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top