2016-08-12 4 views
9

구현하려는 전반적인 요구 사항은 목록에 항목별로 작성된 주석을 표시하는 것입니다.Sharepoint : 교차 게시 시나리오에서 표시 템플릿에 AppendOnlyHistory를 표시하는 방법

목록에서 버전을 활성화하고 "기존 텍스트에 변경 내용 추가"이 true로 설정된 텍스트 필드를 추가하여 제작 측면에서 기능을 추가했습니다. 사실이 항목을 사용하여 항목에 주석을 달고 연대순으로 표시 할 수 있지만 제작 측면에서만 볼 수 있습니다. 문제는 UI 부분이 다른 사이트 모음에서 수행되고 모든 주석을 가져 오는 간단한 방법을 찾을 수 없다는 것입니다.

<SharePoint:AppendOnlyHistory runat="server" FieldName="YourCommentsFieldName" ControlMode="Display"/> 

것은이에

지금까지, 모든 자원 내가 찾은 점은, 내가 디스플레이 템플릿 내부에서 이것을 사용 (방법을 모르는) 수 없습니다. 지금까지,이 날 최신 코멘트입니다 제공 무엇

 var siteUrl=_spPageContextInfo.webAbsoluteUrl.replace("publishing","authoring"); 
     $.ajax({ 
      url: siteUrl + "/_api/web/lists/getbytitle('" + listname + "')/items(" + id + ")", 
      type: 'GET', 
      async:false, 
      headers: {"accept": "application/json;odata=verbose",}, 
      dataType: 'JSON', 
      success: function(json) { 
       console.log(json); 
       //var obj = $.parseJSON(JSON.stringify(json.d.results)); 
       //alert(obj); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       alert("error :"+XMLHttpRequest.responseText); 
      } 
     }); 

을 통해, 나머지 API를 사용하여 내 모든 데이터를 얻고있다. 전체 스레드를 유지하는 간단한 방법이 필요합니다.

답변

0

나는 그렇게처럼 그들을 얻기 위해 자바 스크립트 객체 모델을 사용하여 종료 :

function GetComments(listname, itemId) { 
    var siteUrl = _spPageContextInfo.webAbsoluteUrl.replace("publishing", "authoring"); 
    if ($(".comments-history").length) { 
     $().SPServices({ 
      operation: "GetVersionCollection", 
      async: false, 
      webURL: siteUrl, 
      strlistID: listname, 
      strlistItemID: itemId, 
      strFieldName: "Comments", 
      completefunc: function (xData, Status) { 

       $(xData.responseText).find("Version").each(function (data, i) { 

        var xmlComment = $(this)[0].outerHTML; 
        var arr = xmlComment.split(/comments|modified|editor/g); 
        var comment = arr[1].trim().substring(2, arr[1].length-2); 
        var dateSt = Date.parse((arr[2].substring(1, arr[2].length)).replace('/"', '')); 
        var user = getUsername(arr[3]); 

        var st = "<div class='comment-item'><div class='comment-user'>" + user + "(" + FormatDate(dateSt) + ")</div>"; 
        st += "<div class='comment-text'>" + comment + "</div></div>"; 
        $(".comments-history").append(st); 
       }); 
      } 
     }); 
    } 
} 

구문 분석이 더 좋을 수 있지만, 이것은 단지 초기 작업 아이디어

입니다