Domanda

ho cercato di utilizzare un ricevitore di eventi con l'evento ItemAdding per impostare il campo titolo di un documento, in modo che quando un utente finale carica un documento e si presenta con la pagina Modifica elemento in cui sono costretti a compilare i campi richiesti. ..Io possono popolare il campo Titolo o altri campi.

ho usato:

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

Questa non venire nel campo Titolo nella forma sulla pagina. E 'sicuramente innescando il metodo ricevitore di eventi come ho avuto rompere il punto di rottura.

Ho creato il mio campo chiamato "Container Numero record" con il nome interno "Container_x0020_Record_x0020_Number" È interessante notare questo non ha funzionato:

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

, ma questo fatto!

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

Quindi DisplayName sembra essere la chiave qui ... e sembra che titolo sta facendo qualcosa di speciale nel base.ItemAdding (proprietà) per qualche motivo.

Qualche suggerimento?

ItemAdded lavorerà salvando il "bla" nel titolo, ma non fino a dopo l'utente finale ha fatto clic su OK e salvato la pagina di Modifica elemento.

È stato utile?

Soluzione

entrare Descrizione Link qui faccio sempre questo con JavaScript (ora sempre jQuery) basata su valori passati sulla stringa di query. Lo so, non lo sviluppo "reale", ma funziona! Cosa stai basando il valore Titolo su?

Bene, se hai intenzione di chiamare un "hack" ... ;-) Questo articolo è stato alla base di tutto il mio pensiero su questo: http://blogs.msdn.com/sharepointdesigner/archive/2007 /06/13/using-javascript-to-manipulate-a-list-form-field.aspx

selettori di jQuery fare trovare gli oggetti sulla pagina in modo molto più facile. Qualcosa di simile a: $ ( "Ingresso: [Title = 'Titolo']") è tutto ciò che serve per trovare il campo di immissione.

Devo ancora per convertire questo po 'di jQuery, ma qui è il codice che afferra Stringa query:

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];
}

e sì, copio EditForm.aspx e aggiungi lo script nella copia, quindi impostare la copia come forma di supporto per la lista.

M.

EDIT 2011-08-04 Ho aggiunto una funzione per SPServices chiamato SPGetQueryString chiamato per questo molto tempo fa.

Altri suggerimenti

Questo è un problema comune con i ricevitori di eventi ItemAdding / ItemUpdating durante il caricamento di documenti di Office 2007.

Il parser documento XML non onorare il Nome interno come un indicizzatore nella collezione AfterProperties. Invece, sembra di usare il titolo come un indicizzatore nella maggior parte dei casi. Ancora meglio di quanto il titolo è la XmlConvert.Decode (InternalName), che sembra funzionare in modo coerente.

La mia comprensione è che i parser XML con deroghe alle proprietà dopo cambiamenti nella visualizzazione delle proprietà del documento 2007 è promosso ai campi di SharePoint, a meno che il dopo proprietà vengono modificate le proprietà.

Si fa più interessante nel ricevitore evento ItemUpdating con più campi che è eliminato / ritornando ai valori del documento ma non avere una chiara comprensione delle regole degli usi parser del documento per valutare la promozione proprietà. Idealmente, mi piacerebbe avere un ambiente che la promozione disabili campo specifico per il mio campo personalizzato perché sto impostando il valore nel dopo proprietà.

Provare a usare BeforeProperties. Anche gli usi Hashtable visualizzare i nomi per le chiavi, proprio come SPListItemVersion.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top