Pregunta

Estoy usando una plantilla de Microsoft para agregar capacitación y cursos para que las personas se registren. Todo funciona bien, pero quiero agregar un campo a la lista de cursos. Quiero agregar un campo para indicar para qué tipo de personal es este curso, por ejemplo, HR, salud y seguridad, administrador, etc.

Así que he buscado en todas partes respuestas a esto, la documentación en SharePoint es impactante e hice lo siguiente:

  • Configuración> Crear columna en la página de cursos.
  • Ingresó todos los detalles necesarios
  • En Dispform, EditForm y NewForm (.aspx) agregado @fStaffType, Staff Type; a DataFields sección. (Staff Type es el nombre del campo ')
  • En Dispform se agregó una nueva fila para mostrar los datos:

    <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>
    
  • En EditForm y NewForm agregó una nueva fila para editar/ingresar datos:

    <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>
    

En EditForm y NewForm obtengo el error:

Control de renderizado de errores - FF12Description_1

Se ha producido una excepción no controlada. Referencia a objeto no establecida como instancia de un objeto.

Si comento la descripción, mostrará el primero td (Nombre de campo) pero el segundo td está solo vacío.

¡Cualquier ayuda sería muy apreciada!

Editar: un problema relacionado, no sé si debería crear una nueva pregunta o no. Pero Marc D Anderson respondió a continuación y pude agregar y mostrar un nuevo campo. Sin embargo, puedo agregar un nuevo curso perfectamente, pero si edito uno, y cambio el campo de tipo de personal, se creará un nuevo curso en el día y hora actuales. Pero si se editan otros campos, editan correctamente.

¿Algunas ideas?

¿Fue útil?

Solución

Mucho de Plantillas "fabulosas 40" tienen formularios personalizados. (Probablemente debatirás la parte fabulosa del nombre en este punto).

Parece que estás haciendo las cosas correctas en las formas, pero es un poco difícil saber a dónde va hacia el sur.

Cuando creaste la nueva columna, ¿le diste un nombre de "fstafftype"? Si no, ese es el problema. Si lo nombró "tipo de personal", entonces el nombre interno (o staticName) para la columna es "staff_x0020_type". (El espacio en el nombre estará codificado.) Editar: puede encontrar el nombre de staticName para una columna entrando en la configuración de la lista y editando esa columna. El nombre de staticName estará al final de la URL como un parámetro de cadena de consulta. Dependiendo de los personajes que haya usado, puede codificar con colonización, como el personal%5FX0020%5ftipo.

No necesita agregar la columna DisplayName y StaticName a la sección DiataFields; en realidad no tiene ningún propósito obvio, francamente. Solo deberá asegurarse de que el nombre de la columna en SharePoint: Formfield y SharePoint: FieldDescription coincida con el nombre de staticName para el nombre de la columna que ha agregado.

El seguimiento "_1" en el error es parte del nombre único que SharePoint ofrece cada instancia de esa columna en la página (podría permitir que las ediciones sean múltiples elementos en la misma forma) agregando el valor de la variable $ POS.

Otros consejos

Parece que FF12 ya está definido en otro lugar de la página y probablemente se vuelva a escribir con _1 al final.

  1. ¿Puede intentar arrastrar y soltar el campo desde la fuente de datos y dejar que el diseñador descubra los nombres de campo?

O

  1. ¿Puede intentar agregar el "formulario de edición personalizado" en otra página y luego copiar la reducción de campo?

Es posible que no haya leído ni haya tenido una buena comprensión de sus necesidades. ¿Por qué no implementar el tipo de contenido? Puede tener una función para sus campos personalizados (también conocidos como columnas) y establecer atributo como Diplay en editar form = true, mostrar en view = true (etc.)

Licenciado bajo: CC-BY-SA con atribución
scroll top