2016-10-12 3 views
0

전체 솔루션이 JavaScript로 작성되었으며 마지막 부분이므로 JavaScript로이 작업을 수행해야합니다.답글 쓰기 토론 (토론토) - SharePoint Online JavaScript

기존 토론에 대한 답장 메시지 (의견)를 업데이트 할 수 있어야합니다. 토론 필드는 변경할 수 있지만 메시지 필드는 변경할 수 없습니다. 나는 메시지와 토론이 서로 다른 두 가지 유형의 콘텐츠이고 회신 메시지는 토론을위한 폴더 아래에 있지만 회신 메시지를 편집하는 방법을 모르겠다는 것을 알고 있습니다. (답장 메시지를 추가 할 수는 있지만 편집 할 수는 없습니다.)

이것은 5 개의 답글을 볼 수있는 토론의 샘플이며, JavaScript를 통해 답장의 본문을 변경하고 싶습니다. 이 코드를 사용하여 업데이트하는 것을 시도했다

Image of Replies that I want to change the body text

하지만, 그것은 단지 토론이 아닌 메시지를 변경합니다

Image of the Discussion Showing Replies I would like to update

그리고 예를 들어

, 나는 아래의 메시지를 변경하고 싶습니다.

메시지를 찾고 본문 텍스트를 변경하려면 시스템에 해당 폴더로 들어가야한다고 느끼는 느낌이 들지만이 작업을 수행하는 방법과 interwebs에서 2 일간 검색 한 후에는 확실하지 않습니다. 대답을 찾지 못했습니다. 작동하지 않는 코드 : 기능 aeditListItem() {

var clientContext = new SP.ClientContext(); 
    var oList = clientContext.get_web().get_lists().getById('40b2fbd4-4f87-d92fb05f8044'); //ID changed to protect client 

    this.oListItem = oList.getItemById(getParameterByName('commentid')); 

    oListItem.set_item('Body', document.getElementById("ideaDetails").value.replace(/\r?\n/g, '<br />')); 

    oListItem.update(); 

    clientContext.load(oListItem); 
    clientContext.executeQueryAsync(
     Function.createDelegate(this, this.onQuerySucceeded), 
     Function.createDelegate(this, this.onQueryFailed) 
    ); 

} 

function onQuerySucceeded() { 
    alert('Item Updated: ' + oListItem.get_id()); 
} 

function onQueryFailed(sender, args) { 
    alert('Request failed. ' + args.get_message() + 
     '\n' + args.get_stackTrace()); 
} 

많은 많은 감사합니다! 분명히 선에서

답변

0

:

this.oListItem = oList.getItemById(getParameterByName('commentid')); 

getParameterByName('commentid')

는, 적절한 메시지 ID를 반환 메시지 목록 항목 ID가 지정되어 있는지 확인하지 않습니다.

  • 새로운 몸

var listTitle = "Discussions"; 
var oldMessageBody = ""; 
var newMessageBody = ""; 

var ctx = SP.ClientContext.get_current(); 
var list = ctx.get_web().get_lists().getByTitle(listTitle); 
var items = list.getItems(createMessageFindQuery('Body',oldMessageBody)); 
ctx.load(items); 
ctx.executeQueryAsync(
    function(){ 

     if(items.get_count() == 1){ 
      var foundItem = items.getItemAtIndex(0); 
      foundItem.set_item('Body',newMessageBody); 
      foundItem.update();  

      ctx.executeQueryAsync(
       function(){ 
        console.log("Updated"); 
       }, 
       function(sender,args){ 
        console.log(args.get_message()); 
       }); 

     } 
     else 
     console.log('Not found or multiple items are found') 
    }, 
    function(sender,args){ 
     console.log(args.get_message()); 
    }); 

}); 


function createMessageFindQuery(fieldName,fieldVal){ 
     var qry = new SP.CamlQuery; 
     qry.set_viewXml(String.format('<View Scope="RecursiveAll"><Query><Where><Contains><FieldRef Name="{0}" /><Value Type="Text">{1}</Value></Contains></Where></Query></View>',fieldName,fieldVal)); 
     return qry; 
} 
+1

와 메시지를 교환 몸

  • 하여 메시지를 찾을 : 개념 증명으로

    는 다음 예는 방법을 보여줍니다 완벽하게 일했고, 대답 해 주셔서 감사합니다. –

  • 관련 문제