2017-02-20 54 views
0

У меня есть служба SOAP, которая берет USERID и Квалификационный код и возвращает логическое значение (true), если Пользователь был найден, и Квалификационный код был добавлен к их имени. Внутри Visual Studio у меня не возникло проблем с написанием простой страницы с двумя текстовыми полями, где я взял информацию из этих текстовых полей и отправил ее в веб-службу. Я не могу понять, как это сделать в SharePoint или SharePoint Designer, как в 2013 году. Я следовал these directions, чтобы добавить службу в качестве источника данных, но я не уверен, как с ней работать.Отправка данных в службу мыла с помощью SharePoint 2013 или SPD2013

Общий проект: у меня есть учебный сайт, и когда сотрудник проходит тест, я хочу передать пользователя и квалификацию веб-службе SOAP для обновления в другой среде. Да, это дублированная информация, но именно так хочет компания. Информация в SharePoint хранится в списке.

Редактировать Так что я думаю, что мне нужно сделать это в ParameterBindings. Если я просто изменил местоположение на Controls (textboxid), я предполагаю, что это вызовет веб-службу с тем, что находится в этих текстовых полях, но пока это не так.

<parameterbindings> 
     <ParameterBinding Name="userID" Location="Control(UserIDTB)" DefaultValue="domain\user"/> 
     <ParameterBinding Name="qualificationCode" Location="Control(QualCode)" DefaultValue="PIT"/> 
     <ParameterBinding Name="dvt_apos" Location="Postback;Connection"/> 
     <ParameterBinding Name="ManualRefresh" Location="WPProperty[ManualRefresh]"/> 
     <ParameterBinding Name="UserID" Location="CAMLVariable" DefaultValue="CurrentUserName"/> 
     <ParameterBinding Name="Today" Location="CAMLVariable" DefaultValue="CurrentDate"/> 
     <ParameterBinding Name="dvt_firstrow" Location="Postback;Connection"/> 
     <ParameterBinding Name="dvt_nextpagedata" Location="Postback;Connection"/> 
    </parameterbindings> 

ответ

0

Так что для меня я не мог понять, или, возможно, это невозможно сделать в SharePoint Designer. Мне пришлось создать приемник событий внутри Visual Studio, который подключается к службе SOAP, а затем отправляет данные из моего списка в эту службу. Завершенный код приведен ниже. Я сомневаюсь, что мне нужны все дополнения наверху, но я просто оставил их, поскольку он работал.

using System; 
using Microsoft.SharePoint; 
using Microsoft.SharePoint.Utilities; 
using Microsoft.SharePoint.Workflow; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Net; 

namespace CompletedTraining.TrainingCompleteListener 
{ 
    /// <summary> 
    /// List Item Events 
    /// </summary> 
    public class TrainingCompleteListener : SPItemEventReceiver 
    { 
     /// <summary> 
     /// An item was added. 
     /// </summary> 
     public override void ItemAdded(SPItemEventProperties properties) 
     { 
      //Item was just added to the list 
      base.ItemAdded(properties); 
      using (SPWeb web = properties.OpenWeb()) 
      { 
       try 
       { 
        //get the item that was just added 
        SPListItem currentItem = properties.ListItem; 
        //create a new connection to the NavSoapService 
        NAVSoapService.EmployeeQualificationMgt service = new NAVSoapService.EmployeeQualificationMgt(); 
        //Use the default credentials for this service 
        service.Credentials = CredentialCache.DefaultCredentials; 
        //convert the Name field from the list to a string we'll use to pass to the NavSoapService. We need the username(superb\user) instead of just name(first last) the next 3 lines do this conversion 
        string nameField = currentItem["Name"].ToString(); 
        SPFieldUserValue userField = (SPFieldUserValue)currentItem.Fields["Name"].GetFieldValue(nameField); 
        SPUser user = userField.User; 
        //Once we have user id we need to get their login name(superb\user) and remove the 7 junk characters to the left 
        string loginName = (user.LoginName).Substring(7); 
        //Call the service with the login name and the Qualification code store the result in the result variable. 
        bool result = service.AddEmployeeQualification(loginName, (string)currentItem["Qualification Code"]); 
        //write the result in the Uploaded to NAV column 
        currentItem["Uploaded to NAV"] = result; 
        //update the current item in the list. 
        currentItem.Update(); 
       } 
       catch (Exception ex) 
       { 
        throw ex; 
       } 
      } 

     } 


    } 
} 

Две другие предметы необходимы и 1 в вашем проекте вам необходимо подключиться к веб-службы и 2, чтобы изменить файл Elements.xml, если вы только хотите, чтобы это иметь влияние на 1 списка.

<!--<Receivers ListTemplateId="100">--> 
    <Receivers ListUrl="Lists/Completed Training">