2 개의 텍스트 필드와 선택 필드가있는 목록이 있습니다. Lists.asmx 웹 서비스를 사용하여 새 항목을 삽입하려면 어떻게합니까? lists.asmx 서비스에 대한 웹 참조를 만들 수 있으므로이를 알고 있다고 가정 할 수 있습니다.SharePoint - 목록 웹 서비스를 사용하여 새 항목을 삽입하려면 어떻게해야합니까?
코드 및 CAML 쿼리에 대한 XML을 포함하는 완전한 예제가 필요합니다. 이상적으로 샘플은 C#을 사용합니다.
2 개의 텍스트 필드와 선택 필드가있는 목록이 있습니다. Lists.asmx 웹 서비스를 사용하여 새 항목을 삽입하려면 어떻게합니까? lists.asmx 서비스에 대한 웹 참조를 만들 수 있으므로이를 알고 있다고 가정 할 수 있습니다.SharePoint - 목록 웹 서비스를 사용하여 새 항목을 삽입하려면 어떻게해야합니까?
코드 및 CAML 쿼리에 대한 XML을 포함하는 완전한 예제가 필요합니다. 이상적으로 샘플은 C#을 사용합니다.
목록 웹 서비스를 사용하여 SharePoint 목록에 항목을 삽입하는 것은 실제로 까다로울 수 있습니다. 이 메소드는 XML in, XML out과 같은 형식이므로 매개 변수를 올바르게 가져올 수 없습니다.
먼저 목록 정의를 살펴 봐야합니다. 아래에 도시 된 바와 같이, 상기 방법 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>
배치 요소는 XML의 루트 요소입니다. 내부에 다른 방법을 넣을 수 있습니다. 이들은 고유 한 ID (다시 오류를보고하는 데 사용됨)와 명령 (예 : "New"또는 "Update")을 가져와야합니다. 메서드 내에서 각 필드의 값을 지정하는 Field 요소를 넣습니다. 예를 들어 제목 필드는 값 "Abcdef"를 가져옵니다. GetList()가 반환하는 그대로 정확한 이름을 사용하도록주의하십시오.
XmlNode result = sharePointLists.UpdateListItems(listDefinition.Name, updates);
반환 값은 각각의 업데이트 상태를 포함하는 XML 단편이다
는() 메소드를 사용 UpdateListItems, 셰어에 쿼리를 실행한다. 예를 들면 다음과 같습니다.<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에 게시하는 데 사용되는 내부 유틸리티의 일부입니다. 그것은 회사 시간 동안 개발 되었기 때문에 여기에 게시 할 수 없습니다.
이 래퍼 클래스는 귀하의 회사가 제품에 포함시키는 것입니까, 아니면 귀하가 만든 내부 유틸리티 클래스입니까? 그냥 호기심 - 내 고용주는 유틸리티 코드를 공유하는 상관 없어,하지만 난 꽤 진보적 인 조직을 위해 일합니다. – cori
아주 좋은 대답, 모든 것을 다룬 API 문서에서 몇 가지 출발점을 제공했습니다. 나는 지금 학습 경험의 한 부분 인 내 자신의 래퍼를 작성할 수 있습니다. –