2010-08-05 7 views
2

J'ai une solution qui copie tout le contenu des listes SharePoint dans un fichier, puis copie le contenu du fichier sur SharePoint (utilisé pour les sauvegardes et les commutateurs d'environnement scène/live).SharePoint List - Copier SPListItem ID

Maintenant, je peux copier tous les champs dont j'ai besoin sauf un: ID

Je comprends qu'il est un champ en lecture seule, mais une autre lecture que des champs peuvent être mis à jour (Créé, Auteur, Modifié, rédacteur en chef, _ModerationStatus et _ModerationComments d'après ce que j'ai testé)

Je ne peux pas utiliser la méthode CopyTo car je ne peux pas accéder à la liste de destination. Je veux être en mesure de conserver les ID parce que je ne veux pas casser toutes les URL http://siteCollection//Lists/Posts/Post.aspx?ID= ... qui apparaissent partout sur le contenu de mon site Web.

Donc, fondamentalement, le système que j'ai maintenant (qui pousse tout sauf l'ID) fonctionne bien, tant que rien n'est supprimé de la liste. Quand quelque chose est supprimé (disons ID = 1) le premier élément devient ID = 2 et quand je le pousse dans la liste de destination vide, il devient ID = 1.

Existe-t-il un moyen de forcer un ID pour un SPListItem? Ce serait presque certainement un hack, mais peut-être que quelqu'un a un moyen?

Merci!

Répondre

3

Eh bien, si vous voulez juste cela, pourquoi ne pas créer un élément factice avec ID = 1, puis le supprimer? il ne devrait pas être trop difficile d'ajouter cette logique

+0

J'espérais que j'éviterais de faire quelque chose comme ça mais je vais y aller si c'est ma seule option. –

+0

Fini par aller avec ça. Merci! –

2

Il pourrait y avoir quelque chose dans l'API Content Deployment and Migration pour vous permettre de le faire.

La première chose que je regarderais est cependant Gary Lapointe STSADM extensions car il a fait un excellent travail sur l'extension des commandes intégrées, y compris imports that keep original GUID's intact.

+0

Wow, je ne peux pas croire que je n'avais jamais entendu parler de l'API de déploiement et de migration de contenu. Je vais y jeter un coup d'oeil et faire quelques tests. À première vue, je ne suis pas sûr qu'il puisse faire ce que je veux, mais il offre beaucoup d'options à coup sûr. –

+2

Merci pour les suggestions. J'ai réussi à garder les GUID, les champs, etc. Fondamentalement, tout sauf les identifiants que je voulais garder. L'API Content Deployment and Migration ne l'autorisait pas non plus. Je suppose que vous ne pouvez pas vraiment forcer un champ d'identité dans une base de données ... Terminé la création d'éléments factices pour combler les lacunes d'identification. –

+0

Merci pour la mise à jour - semble un oubli flagrant! – Ryan

Questions connexes