如何将 DataTable 复制到 SharePoint SPList?

3
我有一个源列表数据在sourceList数据表中,并希望将该数据复制到其根列表中。
我该如何做呢?
private void MoveToTopTaskList(DataTable sourceList, SPSite DestinationSiteCollection)
{
    SPWeb Destinationsite = DestinationSiteCollection.OpenWeb();
    SPList DestinationList = Destinationsite.Lists[TASKS];
    SPListItem DestinationListItem = DestinationList.Items.Add();

    foreach (DataRow row in sourceList.Rows)
    {

    }
}
1个回答

2
上述情况的最佳方法是使用 SPWeb 对象的 ProcessBatchData 方法。这将帮助您批量更新列表中的列表项。
  1. 您需要构建一个 XML 标记,其中包含将数据插入到列表中的详细信息。
  2. 如果需要将大量记录插入到列表中,请考虑将其拆分为较小的批次。例如,如果有 1000 条记录,则可以分成两个 500 组。
  3. 在构建 XML 时,请确保使用 StringBuilder 类来追加字符串。
  4. 请参阅这些链接 [Link1][1] [Link2][2] [Link3][3] 获取有关 ProcessBatchData 的更多信息。

如果要使用 OM 进行操作,请按照以下代码进行操作。

`SPWeb Destinationsite = DestinationSiteCollection.OpenWeb();
SPList DestinationList = Destinationsite.Lists[TASKS];    
SPListItem DestinationListItem = DestinationList.Items.Add();
  foreach (DataRow row in sourceList.Rows)
{
    DestinationListItem = DestinationList.Items.Add();
    DestinationListItem["Field1"]=row["Col"].ToString();
    DestinationListItem["Fieldn"]=row["Coln"].ToString();
    DestinationListItem.Update()

}

` [1]:https://learn.microsoft.com/en-us/previous-versions/office/developer/sharepoint-services/cc404818%28v=office.12%29 [2]:http://www.sharepointblogs.com/smc750/archive/2008/04/03/spweb-processbatchdata-a-list-is-a-list-is-a-list.aspx [3]:https://web.archive.org/web/20121029142042/http://blog.dynatrace.com:80/2009/01/20/sharepoint-using-batch-updates-to-speed-up-performance/


我的列表不是很长,但是我能否以某种方式使用datatable的默认视图呢? - Azra
是的,您可以利用DefaultView。您也可以使用For Each代码迭代DataTable的默认视图,并执行上述代码片段中提到的操作。 - Kusek
请问您能否提供一些代码示例,其中使用了默认视图属性?我可能听起来有些傻,但我感到困惑。 - Azra
你需要 DataTable 默认视图或 SP 列表默认视图的代码示例吗? - Kusek
如果您已经完成了,请发布您的代码,以便其他遇到这个问题的人参考。 - Anthony Graglia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接