我有一个SP 2010外部列表,其中填充了客户名称。该列表会在一天中偶尔更新。我想在更新时或在设定的时间(每小时)自动将新添加的名称复制到另一个SP 2010列表。
有一种简单的方法吗?如果没有,至少有办法吗?
感谢您的帮助。
答案 0 :(得分:6)
不幸的是,外部列表不支持工作流程。所以工作流程不是解决方案。
执行此操作的方法之一是创建自定义计时器作业以同步项目&配置为定期运行它。详细了解如何创建&注册自定义作业here。
但这种方法有其自身的缺点:
答案 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,因此您可以在第三台计算机上运行该服务,只要它具有访问权限就可以了。
有一些例子和方法答案 2 :(得分:0)
可以轻松地为此创建工作流程。在新创建或更新项目时,可以触发工作流程。工作流可以将相同的项创建到另一个列表中。
尝试使用SharePoint设计器创建工作流程,这很安静。
希望这会有所帮助。 :)
答案 3 :(得分:0)
为什么要将外部数据复制到另一个列表?这样做的目的是什么?也许对于你想要做的事情有一个更好的解决方案。
我说这个的原因是因为你要复制数据并且可能会有点棘手,特别是如果你允许在两个地方都更新数据。
答案 4 :(得分:0)
我使用MS访问来从一个表中复制数据,然后将其推送到另一个表中。我已经广泛使用了Access / Sharepoint,而且它有点儿马车..但它通常有效。它可能会崩溃 - 但对于90%的小桌子,哎呀,你可以做到这一点!