将所有列表项复制到SharePoint 2010 WSS中的另一个列表

时间:2013-05-03 11:49:29

标签: sharepoint-2010 sharepoint-workflow custom-lists

我创建了两个自定义列表并且能够使用sharepoint designer 2010中的工作流将列表项从一个列表复制到其他列表。但我的要求是使用工作流将一个列表中的所有项目复制到另一个列表。我在google上搜索过同样的内容,我没有找到正确的解决方案,任何一个人都能提出相同的想法吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您应该创建一个新的自定义工作流活动来执行此操作。 以下是执行此操作的示例代码。有关创建新工作流活动的详细信息,请查看以下链接:http://msmvps.com/blogs/sundar_narasiman/archive/2010/12/26/develop-custom-workflow-activity-for-sharepoint-2010-workflow.aspx

    private void ProcessActivity(ISharePointService service)
    {
        using (SPWeb web = (SPWeb)(SPContext.Current.Web))
        {             
            SPList sourceList = web.Lists[sourceListid];                   
            SPListItemCollection ic = sourceList.Items;
            foreach (SPItem i in ic)
            {
                SPListItem item = sourceList.Items.GetItemById(Convert.ToInt32(i.["ID"].ToString()));                 
                CopyItems(item,DestinationListName);
            }
        }

    }

    private SPListItem CopyItems(SPListItem sourceItem, string destinationListName)
    {
        //Copy sourceItem to destinationList
        SPList destinationList = sourceItem.Web.Lists[destinationListName];
        SPListItem targetItem = destinationList.Items.Add();
        foreach (SPField f in sourceItem.Fields)
        {
            //Copy all except attachments.
            if (!f.ReadOnlyField && f.InternalName != "Attachments"
                && null != sourceItem[f.InternalName])
            {
                targetItem[f.InternalName] = sourceItem[f.InternalName];
            }
        }

        targetItem.Update();

        return targetItem;
    }
祝你好运。