Автоматически копировать данные из внешнего списка SP2010 в пользовательский список SP2010 - PullRequest
3 голосов
/ 21 апреля 2011

У меня есть внешний список SP 2010, который заполнен именами клиентов. Список периодически обновляется в течение дня. Я хотел бы автоматически копировать вновь добавленные имена в другой список SP 2010 при его обновлении или в установленное время (ежечасно).

Есть ли простой способ сделать это? А если нет, то есть ли хотя бы способ сделать это?

Спасибо за вашу помощь.

Ответы [ 5 ]

6 голосов
/ 21 апреля 2011

К сожалению, внешние списки не поддерживают рабочие процессы.Таким образом, рабочий процесс здесь не является решением.

Один из способов сделать это - создать настраиваемое задание таймера для синхронизации элементов и настройки его периодического запуска.Подробности о том, как создать и зарегистрировать пользовательское задание здесь .

, но у этого подхода есть свои недостатки:

  1. это достаточно сложно
  2. для регистрации работы вам понадобится функция области фермы + приемник.Причина в том, что в целях безопасности вы не можете зарегистрировать пользовательское задание из кода, работающего в Content Web-приложении (поэтому оно не будет работать в приемнике функций уровня семейства сайтов), только из кода, запущенного в приложении Central Admin.
2 голосов
/ 21 апреля 2011

Я бы создал службу Windows или временную работу в SharePoint, а затем подключил совместимый соединитель 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 использует API SharePointтак что вы можете запустить службу на третьем компьютере, и если у вас есть доступ, у вас все будет хорошо.

Есть несколько примеров и инструкции на http://blog.bendsoft.com

0 голосов
/ 29 ноября 2012

Я бы использовал MS-доступ, чтобы скопировать данные из одной таблицы и поместить их в другую таблицу.Я широко использовал Access / Sharepoint, и он немного глючит .. но обычно он работает.Это может привести к сбою, но для 90% маленьких столов, черт возьми, да, вы можете сделать это!

0 голосов
/ 22 апреля 2011

Почему вы хотите скопировать внешние данные в другой список? Какова цель сделать это? Возможно, есть лучшее решение для того, что вы пытаетесь сделать.

Причина, по которой я это говорю, заключается в том, что вы собираетесь реплицировать данные, и это может стать немного сложным, особенно если вы разрешите обновление данных в обоих местах.

0 голосов
/ 21 апреля 2011

Для этого можно легко создать рабочий процесс.Рабочий процесс может быть запущен, когда элемент создается или обновляется.Рабочий процесс может создать тот же элемент в другом списке.

Попробуйте создать рабочий процесс с помощью конструктора SharePoint, что довольно просто.

Надеюсь, это поможет.:)

...