예제 #1
0
        public static void CopyFiles(SPDocumentLibrary sourceDocLib, SPDocumentLibrary targetDocLib,
                                     bool overwrite = false, bool includeHistory = false, string queryStr = "", string targetContentTypeName = "")
        {
            SPQuery query = new SPQuery {
                RowLimit = MaxRowLimit, Folder = sourceDocLib.RootFolder, Query = queryStr
            };

            SPListItemCollectionPosition listItemCollectionPosition;

            do
            {
                SPListItemCollection items = sourceDocLib.GetItems(query.InScope(SPViewScope.FilesOnly));
                listItemCollectionPosition = items.ListItemCollectionPosition;

                foreach (SPListItem item in items)
                {
                    SPFile   file         = item.File;
                    SPFolder targetFolder = targetDocLib.RootFolder;

                    if (!file.Exists)
                    {
                        continue;
                    }

                    SPFile newFile = includeHistory
                                         ? CopyFileAndHistory(file, targetFolder, overwrite)
                                         : CopyFile(file, targetFolder, overwrite);

                    SPListItem newItem = newFile.Item;

                    newItem[SPBuiltInFieldId.ContentType] = string.IsNullOrEmpty(targetContentTypeName)
                                                                ? item.ContentType.Name
                                                                : targetContentTypeName;

                    newItem[SPBuiltInFieldId.Created] = file.TimeCreated;
                    //newItem[SPBuiltInFieldId.Modified] = file.TimeLastModified;

                    newItem[SPBuiltInFieldId.Author] = newFile.Author;
                    //newItem[SPBuiltInFieldId.Editor] = newFile.ModifiedBy;
                    newFile.Item.SystemUpdate(false);
                }
            } while (listItemCollectionPosition != null);
        }
예제 #2
0
        public static void Clear(this SPList list, SPQuery spQuery, bool recycleBinDisabled = false)
        {
            if (list == null)
            {
                throw new ArgumentNullException("list");
            }

            int itemCount = list.ItemCount;

            if (itemCount == 0)
            {
                return;
            }

            SPListItemCollectionPosition listItemCollectionPosition;

            do
            {
                SPListItemCollection items = list.GetItems(spQuery.InScope(SPViewScope.Recursive));
                listItemCollectionPosition = items.ListItemCollectionPosition;

                if (list.ItemCount != 0)
                {
                    Clear(items, recycleBinDisabled);
                }

                itemCount -= (int)spQuery.RowLimit;

                if (itemCount <= 0)
                {
                    break;
                }
            } while (listItemCollectionPosition != null);

            if (list.ItemCount != 0)
            {
                list.Update();
            }
        }