自动将数据从SP2010外部列表复制到SP2010自定义列表

时间:2011-04-20 21:25:36

标签: sharepoint sharepoint-2010 sharepoint-designer sharepoint-workflow

我有一个SP 2010外部列表,其中填充了客户名称。该列表会在一天中偶尔更新。我想在更新时或在设定的时间(每小时)自动将新添加的名称复制到另一个SP 2010列表。

有一种简单的方法吗?如果没有,至少有办法吗?

感谢您的帮助。

5 个答案:

答案 0 :(得分:6)

不幸的是,外部列表不支持工作流程。所以工作流程不是解决方案。

执行此操作的方法之一是创建自定义计时器作业以同步项目&配置为定期运行它。详细了解如何创建&注册自定义作业here

但这种方法有其自身的缺点:

  1. 这很复杂
  2. 您需要一个农场范围的功能+     接收者注册工作。该     原因是出于安全目的     您无法注册自定义作业     在Content中运行的代码中     Web应用程序(因此无法使用     在网站集级别功能     接收器),仅来自运行的代码     中央管理员应用

答案 1 :(得分:2)

我在SharePoint中构建一个Windows服务或定时作业,然后将兼容的ado.net连接器连接到我的进程。这样,您可以在两个列表之间复制或同步数据,就像它们在普通SQL表中一样。

private void example()
{    
    // Fetch data from your left sharepoint
    SharePointConnection leftConnection = new SharePointConnection(@"
        Server=mysharepointserver.com;
        Database=mysite/subsite
        User=spuser;
        Password=******;
        Authentication=Ntlm;
        TimeOut=10;
        StrictMode=True;
        RecursiveMode=RecursiveAll;
        DefaultLimit=1000;
        CacheTimeout=5");

    leftConnection.Open();

    string leftQuery = "SELECT * FROM LeftList";
    SharePointDataAdapter adapter = new SharePointDataAdapter(leftQuery, leftConnection);

    DataTable dt = new DataTable();
    adapter.Fill(dt);


    // Insert data in right sharepoint
    SharePointConnection rightConnection = new SharePointConnection(@"
        Server=anothersharepointserver.com;
        Database=whateversite
        User=spuser;
        Password=******;
        Authentication=Ntlm;
        TimeOut=10;
        StrictMode=True;
        RecursiveMode=RecursiveAll;
        DefaultLimit=1000;
        CacheTimeout=5");

    rightConnection.Open();

    // build your rightQuery here
    string rightQuery = "Insert into"...

    SharePointCommand command = new SharePointCommand(rightQuery, rightConnection);
    command.ExecuteNonQuery();

}

你可以试试这个http://www.bendsoft.com/net-sharepoint-connector/。这个ado.net连接器使用SharePoint的API,因此您可以在第三台计算机上运行该服务,只要它具有访问权限就可以了。

http://blog.bendsoft.com

有一些例子和方法

答案 2 :(得分:0)

可以轻松地为此创建工作流程。在新创建或更新项目时,可以触发工作流程。工作流可以将相同的项创建到另一个列表中。

尝试使用SharePoint设计器创建工作流程,这很安静。

希望这会有所帮助。 :)

答案 3 :(得分:0)

为什么要将外部数据复制到另一个列表?这样做的目的是什么?也许对于你想要做的事情有一个更好的解决方案。

我说这个的原因是因为你要复制数据并且可能会有点棘手,特别是如果你允许在两个地方都更新数据。

答案 4 :(得分:0)

我使用MS访问来从一个表中复制数据,然后将其推送到另一个表中。我已经广泛使用了Access / Sharepoint,而且它有点儿马车..但它通常有效。它可能会崩溃 - 但对于90%的小桌子,哎呀,你可以做到这一点!