我有一个用客户姓名填充的 SP 2010 外部列表。该列表全天不时更新。我想在更新时或在设定的时间(每小时)自动将新添加的名称复制到另一个 SP 2010 列表。
是否有捷径可寻?如果没有,是否至少有办法做到这一点?
谢谢您的帮助。
我有一个用客户姓名填充的 SP 2010 外部列表。该列表全天不时更新。我想在更新时或在设定的时间(每小时)自动将新添加的名称复制到另一个 SP 2010 列表。
是否有捷径可寻?如果没有,是否至少有办法做到这一点?
谢谢您的帮助。
不幸的是,外部列表不支持工作流。所以工作流在这里不是一个解决方案。
一种方法是创建一个自定义计时器作业来同步项目并配置为定期运行它。在此处查看有关如何创建和注册自定义作业的详细信息。
但是这种方法有它自己的缺点:
我会在 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上有一些示例和操作方法
可以为此轻松创建工作流。新创建或更新项目时可以触发工作流。工作流可以将相同的项目创建到另一个列表中。
尝试使用 SharePoint 设计器创建工作流,这很简单。
希望这可以帮助。:)
为什么要将外部数据复制到另一个列表?这样做的目的是什么?对于您正在尝试做的事情,也许有更好的解决方案。
我之所以这么说,是因为您将要复制数据并且可能会有点棘手,尤其是如果您允许在两个地方更新数据。
我会使用 MS 访问来将数据从一个表中复制出来,然后将其推送到另一个表中。我已经广泛使用了 Access/Sharepoint,它有一点问题......但它通常可以工作。它可能会崩溃——但对于 90% 的小桌子,你可以做到这一点!