2017-11-14 1 views
0

프로그래밍 방식으로 목록 항목을 만들어서 문제가 있습니다. szenario :프로그래밍 방식으로 만든 문서 세트 항목은 항상 폴더입니다.

  • 사용자 지정 콘텐츠 형식과 필드

  • 변경 내용 목록의 새/편집 양식을 포함 2 개 목록 (변경-CustomDocSet 해방, 위험 - 사용자 지정 작업 목록) 데이터 그리드 마녀가 보여 위험 목록 항목

위험 목록에 수동으로 만든 모든 항목이 표시됩니다. 이제 추가 버튼을 사용하여 변경 목록의 새/편집 양식에서 추가 항목을 추가 할 수 있습니다. 삽입 할 수 있지만 항목이 눈금에 표시되지 않습니다. 변경 목록의 새로운 형태 내에서

위험 항목 :

enter image description here

이유는 무엇입니까? 내 Risk 목록을 보면 삽입 된 항목을 볼 수 있지만 항목이 아니므로 폴더 유형으로 표시됩니다. 항목을 추가 할

enter image description here

이 내 구현됩니다 :

새로운 위험 항목을 추가

SPListItem item = list.Items.Add(); 
item["ChangeReference"] = "1"; 
item[SPBuiltInFieldId.Title] = title.Text; 
item["Title"] = title.Text; 
item["Risk"] = risk.Text; 
item["Probability"] = probability.Text; 
item.Update(); 

리스트 정의는 단지 내 사용자 지정 콘텐츠 형식이 있습니다

<List xmlns:ows="Microsoft SharePoint" Title="Risks" FolderCreation="FALSE" Direction="$Resources:Direction;" EnableContentTypes="TRUE" Url="Lists\Risks" BaseType="0" xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <MetaData> 
    <ContentTypes> 
     <ContentTypeRef ID="0x0108009007F1B9465C48F2AE80B77CC58A4AA7" /> 
    </ContentTypes> 
... 

수동으로 생성 된 항목은 list.Items, programmitcally 만든 항목은 항상 list.folders에서 만들어 지지만 그 이유와 변경 방법을 알지 못합니까? 폴더가 아니라 일반적인 항목이 필요합니다.

수동으로 대 음식물 항목 :

enter image description here

모든 idears?

업데이트 :

이미 성공적으로 CT를 설정하려고합니다. 이제 사용자 지정 콘텐츠 형식없이 표준 작업 목록을 사용하지만 항상 항목 대신 폴더를 만들었습니다.

디버깅하는 동안, 모든 것이 잘 보인다 : 당신이 목록 항목을 추가 할 때마다 콘텐츠 유형이 설정되지 않습니다처럼

Debugging item creation

답변

0

보인다.

콘텐츠 유형 이름이 Example Content Type이라고 가정하면 아래 코드를 시도해 볼 수 있습니다. 콘텐츠 유형 이름에 따라 수정하십시오.

SPContentType spctExampleContentType = list.ContentTypes["Example Content Type"]; 

SPListItem item = list.Items.Add(); 
item["ChangeReference"] = "1"; 
item[SPBuiltInFieldId.Title] = title.Text; 
item["Title"] = title.Text; 
item["Risk"] = risk.Text; 
item["Probability"] = probability.Text; 
spliNewItem["ContentTypeId"] = spctExampleContentType.Id; 
item.Update(); 
+0

이미 성공없이, 그렇게하려고합니다. 이제 사용자 지정 콘텐츠 형식없이 표준 작업 목록을 사용하지만 항상 항목 대신 폴더를 만들었습니다. –

0

해결 방법을 찾을 수 없으므로 CSOM과 함께 해결 방법을 사용합니다.

var clientContext = new ClientContext(SPContext.Current.Web.Url); 
var oList = clientContext.Web.Lists.GetByTitle("Risks"); 
var itemCreateInfo = new ListItemCreationInformation(); 
var oListItem = oList.AddItem(itemCreateInfo); 
oListItem["Title"] = title.Text; 
oListItem["Risk"] = risk.Text; 
oListItem["Probability"] = probability.Text; 
oListItem["Severity"] = severity.Text; 
oListItem["ChangeReference"] = int.Parse(this.Page.Request.QueryString["ItemId"]); 
oListItem.Update(); 
clientContext.Load(oListItem); 
clientContext.ExecuteQuery(); 
0

시도 대신 RootFolder.Items에 항목을 추가하려면 :

SPListItem item = list.RootFolder.Items.Add(); 
관련 문제