SharePoint - 목록 웹 서비스를 사용하여 새 항목을 어떻게 삽입합니까?

StackOverflow https://stackoverflow.com/questions/85392

  •  01-07-2019
  •  | 
  •  

문제

2개의 텍스트 필드와 선택 필드가 있는 목록이 있습니다.Lists.asmx 웹 서비스를 사용하여 새 항목을 삽입하려면 어떻게 해야 합니까?list.asmx 서비스에 대한 웹 참조를 만들 수 있으므로 이것이 알려져 있다고 가정할 수 있습니다.

CAML 쿼리에 대한 코드와 XML이 포함된 전체 예제를 원합니다.이상적으로 샘플에서는 C#을 사용합니다.

도움이 되었습니까?

해결책

목록 웹 서비스를 사용하여 SharePoint 목록에 항목을 삽입하는 것은 실제로 까다로울 수 있습니다.이 방법의 형식은 다음과 같습니다.XML 입력, XML 출력, 매개변수를 올바르게 가져오는 것이 어려울 수 있습니다.

먼저 목록 정의를 살펴봐야 합니다.아래와 같이 GetList() 메서드를 사용하여 검색할 수 있습니다.

XmlNode listXml = sharePointLists.GetList(listName);
File.WriteAllText("listdefinition.xml", listXml.OuterXml);

여기서 중요한 것은 필드 이름과 해당 데이터 유형입니다.필드 이름은 SharePoint GUI에 표시되는 이름과 결코 동일하지 않습니다.좋은 예는 목록의 첫 번째 필드에 사용되는 제목 필드입니다.

이제 이를 알았으므로 SharePoint로 이동하는 쿼리를 만들 수 있습니다.예:

<Batch OnError="Continue">
    <Method ID="1" Cmd="New">
        <Field Name="Title">Abcdef</Field>
        <Field Name="Project_x0020_code">999050</Field>
        <Field Name="Status">Open</Field>    
    </Method>
</Batch>

Batch 요소는 XML의 루트 요소입니다.내부에는 다양한 방법을 넣을 수 있습니다.여기에는 오류를 다시 보고하는 데 사용되는 고유 ID와 "새로 만들기" 또는 "업데이트" 등의 명령이 있어야 합니다.메소드 내부에는 각 필드의 값을 지정하는 필드 요소를 넣습니다.예를 들어 제목 필드의 값은 "Abcdef"입니다.GetList()에 의해 반환되는 정확한 이름을 사용하도록 주의하십시오.

SharePoint에서 쿼리를 실행하려면 UpdateListItems() 메서드를 사용합니다.

XmlNode result = sharePointLists.UpdateListItems(listDefinition.Name, updates);

반환 값은 각 업데이트의 상태를 포함하는 XML 조각입니다.예를 들어:

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
    <Result ID="1,New">
    <ErrorCode>0x00000000</ErrorCode>
    <z:row ows_ContentTypeId="0x010036F3F587127F1A44B8BA3FEFED4733C6" 
         ows_Title="Abcdef" 
         ows_Project_x0020_code="999050" 
         ows_Status="Open" 
         ows_LinkTitleNoMenu="Abcdef" 
         ows_LinkTitle="Abcdef" 
         ows_ID="1005"            
         ... 
         xmlns:z="#RowsetSchema" />
    </Result>
</Results>

이를 구문 분석하고 ErrorCode를 확인하여 어떤 메서드가 실패했는지 확인할 수 있습니다.

실제로 나는 모든 더러운 세부 사항을 처리하는 래퍼 클래스를 만들었습니다.안타깝게도 이 정보는 제 고용주의 소유이므로 귀하와 공유할 수 없습니다.

이 래퍼 클래스는 프로젝트 데이터베이스에서 정보를 검색하고 이를 SharePoint에 게시하는 데 사용되는 내부 유틸리티의 일부입니다.회사 근무 중에 개발한 것이므로 여기에 게시할 수는 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top