Pregunta

Me han tratado de usar un receptor de eventos con el evento ItemAdding para establecer el campo título de un documento, de modo que cuando un usuario final carga un documento y se le presenta la página de edición de artículos en los que se ven obligados a rellenar los campos requeridos. ..I puede rellenar el campo Título u otros campos.

he utilizado:

properties.AfterProperties["Title"] = "blah";
base.ItemAdding(properties);

Esto no viene en el campo Título en el formulario en la página. Está provocando sin duda el método de receptor de eventos ya que he tenido que romper en el punto de ruptura.

He creado mi propio campo denominado "Número de contenedores Record" con el nombre interno "Container_x0020_Record_x0020_Number" curiosamente esto no funcionó:

properties.AfterProperties["Container_x0020_Record_x0020_Number"] = "blah";
base.ItemAdding(properties);

pero esto hizo!

properties.AfterProperties["Container Record Number"] = "blah";
base.ItemAdding(properties);

Así DisplayName parece ser la clave aquí ... y parece que el título está haciendo algo especial en el base.ItemAdding (propiedades) por alguna razón.

¿Alguna sugerencia?

ItemAdded trabajará guardando el "bla" en el título, pero no hasta después de que el usuario final ha hecho clic en Aceptar y se guarda la página de edición de artículos.

¿Fue útil?

Solución

introduzca la descripción enlace aquí hago siempre esto con Javascript (jQuery ahora siempre) basada en valores pasados ??en la cadena de consulta. Lo sé, no el desarrollo "real", pero funciona! ¿Qué está basando en el valor Título?

Bueno, si vas a llamarlo un "hack" ... ;-) Este artículo fue la base para todos los de mi pensamiento sobre esto: http://blogs.msdn.com/sharepointdesigner/archive/2007 /06/13/using-javascript-to-manipulate-a-list-form-field.aspx

selectores de jQuery hacen que encontrar los objetos de la página mucho más fácil. Algo como: $ ( "Entrada: [Título = 'Título']") es todo lo que necesita para encontrar el campo de entrada.

Todavía tengo que convertir este poco de jQuery, pero aquí está el código agarrar cadena de consulta:

var vals = new Object();
var qs = location.search.substring(1, location.search.length);
var args = qs.split("&");
for (var i=0; i < args.length; i++) {
  var nameVal = args[i].split("=");
  var temp = unescape(nameVal[1]).split('+');
  nameVal[1] = temp.join(' ');
  vals[nameVal[0]] = nameVal[1];
}

y sí, copio EditForm.aspx y añadir la secuencia de comandos en la copia, a continuación, establezca la copia como la forma de apoyo para la lista.

M.

EDITAR 2011-08-04 Añadí una función para SPServices llamado SPGetQueryString llama para este mucho tiempo atrás.

Otros consejos

Este es un problema común con los receptores de eventos ItemAdding / ItemUpdating al cargar documentos de Office 2007.

El documento XML analizador no honrará el nombre interno como un controlador paso a paso en la colección AfterProperties. En cambio, parece utilizar el título como un indexador en la mayoría de los casos. Incluso mejor que el título es el XmlConvert.Decode (InternalName) que parece funcionar de forma coherente.

Mi entendimiento es que los desatiende analizador XML después de los cambios en las propiedades de vista de las propiedades del documento de 2007 que se promueven a los campos de SharePoint, a menos que el después de propiedades son propiedades cambiaron.

Se vuelve más interesante en el receptor de eventos ItemUpdating con más campos que es despejado / volviendo a los valores de documentos pero no tienen una comprensión clara de las reglas de los usos del analizador de documentos para evaluar la promoción inmobiliaria. Idealmente, me gustaría tener una configuración que desactiva la promoción campo específicamente para mi campo personalizado porque yo soy la creación de valor en el después de propiedades.

Trate de usar BeforeProperties. También los usos tabla hash muestran los nombres de las teclas sólo como SPListItemVersion.

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