ACTUALITZACIÓ: Això treballa però existeixen importants limitacions que es descriuen en els comentaris. Això encara pot ser útil en alguns cirumstances.
ACTUALITZACIÓ 2: En el meu projecte actual, els usuaris sempre carregar documents. Com a resultat, No corro a un problema on MS Word està funcionant i pensa que l'arxiu fou rebatejada en això. Corria a un problema, "l'arxiu va ser modificat per una altra persona" i això resolia mitjançant una bandera de tipus simple semàfor. Els usuaris necessiten canviar un camp de dades meta del seu valor per defecte a una altra cosa. La itemupdated() receptor busca un valor vàlid allà abans d'efectuar en realitat el canvi de nom i des d'aleshores, No he tingut cap problema. El seu quilometratge pot variar.
Tinc un requeriment del client a canviar el nom dels arxius pujats a una biblioteca de documents específics per ajustar-se amb una convenció de nomenclatura particular. L'API no proporciona un "canvi de nom()" mètode. En canvi, utilitzem "MoveTo(…)". Heus aquí una mica de codi per aconseguir això mínima:
públic invalidació buit ItemAdded(SPItemEventProperties Propietats) { SPFile f = propietats.ListItem.File; f.MoveTo(propietats.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
La mica complicat només és les propietats". ListItem.ParentList.RootFolder.Url". La MoveTo() mètode requereix una adreça URL. Que amassat amunt punts corda m a la carpeta arrel de la meva biblioteca de document actual. Això permet em d'evitar qualsevol codificació dura al meu auricular d'esdeveniment.
Aquesta és una versió més útil que fa el mateix, però assigna el nom del fitxer "Títol":
públic invalidació buit ItemAdded(SPItemEventProperties Propietats) { DisableEventFiring(); // Assignar el títol d'aquest element al nom d'arxiu propi. // NOTA: Aquesta tasca ha de tenir lloc abans que podem modificar l'arxiu mateix. // Anomenant actualització() en l'SPFile sembla invalidar les propietats de // una mica de sentit. Actualitzacions al títol"" fracassat fins que canvieu (i actualització de() convocatòria) // s'han desplaçat davant el canvi de nom del fitxer. propietats.Element de llista[Títol""] = propietats.ListItem.File.Name; propietats.ListItem.Update(); SPFile f = propietats.ListItem.File; // Aconseguir l'extensió del fitxer. Necessitem que més tard. corda spfileExt = nou FileInfo(f.Name).Extensió; // Rebategi l'arxiu a ID de l'element llista i utilitzeu l'extensió per mantenir // aquesta part del que intacta. f.MoveTo(propietats.ListItem.ParentList.RootFolder.Url + "/" + propietats.Element de llista["ID"] + spfileExt); // Cometre el moviment. f.Update(); EnableEventFiring(); } |