0

우리는이셰어 JSOM : SPFolder 사용자 정의 필드 값을 얻을

  1. 는 SharePoint 2013 문서 라이브러리
  2. 표준 "폴더"콘텐츠 유형에 따라 라이브러리에 추가 사용자 지정 콘텐츠 형식; 새로운 "표시 이름"텍스트 필드에 해당 사용자 지정 콘텐츠 형식의 몇 가지 폴더가 문서 라이브러리 나 라이브러리에서 폴더 구조를 시각화하는 자바 스크립트 컨트롤을 만들려고

에서 생성 된 콘텐츠 형식

  • 에 추가됩니다. 그러나 사용자 지정 "DisplayName"필드 값을 가져올 수 없습니다.

    this.clientContext = SP.ClientContext.get_current(); 
    
    var web = this.clientContext.get_web(); 
    this.clientContext.load(web); 
    
    this.clientContext.executeQueryAsync(function(sender, args) { 
    
        for (var i = 0; i < this.topLevelFoldersUrl.length; i++) { 
    
         var contextParams = {}; 
    
         contextParams.folderUrl = web.get_serverRelativeUrl() + "/" + this.topLevelFoldersUrl[i]; 
    
         // folder 
         contextParams.topLevelFolder = web.getFolderByServerRelativeUrl(contextParams.folderUrl); 
         this.clientContext.load(contextParams.topLevelFolder, 'Include(DisplayName)'); 
    
         // folder list item 
         contextParams.folderListItem = contextParams.topLevelFolder.get_listItemAllFields(); 
         this.clientContext.load(contextParams.folderListItem); 
    
         // subfolders 
         contextParams.folderCollection = contextParams.topLevelFolder.get_folders(); 
         this.clientContext.load(contextParams.folderCollection); 
    
         this.clientContext.executeQueryAsync(
    
          function (sender, args) { 
    
           var folderName = contextParams.topLevelFolder.get_name(); 
    
           // EXCEPTION goes here: "property has not been initialized" 
           var folderDisplayName = contextParams.folderListItem.get_item("DisplayName"); 
    
           // visualization code... 
    
          }, 
          this.onQueryFailed 
         ); 
        } 
    }, this.onQueryFailed); 
    

    폴더 사용자 지정 필드를 가져 오는 특별한 기술이 있습니까? 나는 모든 코드 샘플을 검색해 목록 항목과 사용자 정의 필드를 얻었지만 샘플은 제 경우에는 작동하지 않습니다.

  • 답변

    1

    "DisplayName"은 (는) SharePoint 2013 JSOM의 예약 된 식별자 인 것으로 보입니다. 필드 이름을 "ShownName"으로 변경 한 후 내 코드가 작동했습니다.

    this.clientContext = SP.ClientContext.get_current(); 
    
    var web = this.clientContext.get_web(); 
    this.clientContext.load(web); 
    
    this.clientContext.executeQueryAsync(function (sender, args) { 
    
        for (var i = 0; i < this.topLevelFoldersUrl.length; i++) { 
    
         var contextParams = {}; 
    
         contextParams.folderUrl = web.get_serverRelativeUrl() + "/" + this.topLevelFoldersUrl[i]; 
    
         contextParams.topLevelFolder = web.getFolderByServerRelativeUrl(contextParams.folderUrl); 
         this.clientContext.load(contextParams.topLevelFolder); 
    
         contextParams.folderListItem = contextParams.topLevelFolder.get_listItemAllFields(); 
         this.clientContext.load(contextParams.folderListItem, 'ShownName'); 
    
         contextParams.folderCollection = contextParams.topLevelFolder.get_folders(); 
         this.clientContext.load(contextParams.folderCollection);       
    
         this.clientContext.executeQueryAsync(
    
          function(sender, args) { 
    
           var folderName = folder.get_name(); 
           var folderDisplayName = folderItem.get_item("ShownName"); 
    
           // visualization code... 
          }, 
          this.onQueryFailed 
         ); 
        } 
    }, this.onQueryFailed); 
    
    관련 문제