2012-10-03 66 views
0

,我想這可能是一個有用的例子。 在javascript函數中,我需要檢索所有Subject實體記錄並將它們緩存在客戶端上。 我也需要將它們緩存在它們的層次中。 我想做到這一點的最好辦法是與它的ID和父ID返回每個主題記錄,這樣我就可以在JavaScript建立一個客戶端結構。Dynamics CRM中2011檢索目前,我正在學習CRM 2011年,它的工作,而所有科目

有誰與CRM的經驗有什麼建議,如何這應該爲查詢編碼?我對處理數據很滿意,只是不知道如何返回我需要的結果!

感謝

回答

1

你的答案很可能有效,但TBH有太多的點擊我。

這是我如何做它到底。 cacheSubjects的主要功能是:

var sgc_subjectCache = []; 
var sgc_subjectCacheCount = 0; 

function cacheSubjectsCallback(data) { 
    // update subjects 
    // loop through retrieved subjects and add to cache 
    for(i=0; i < data.length; i++) 
    { 
     var subject = data[i]; 
     subject.Root = subject.Title; 
     // var subjectid = subject.SubjectId; 
     sgc_subjectCache.push(subject); 
     sgc_subjectCacheCount += 1; 
    } 
}  

function cacheSubjectsComplete() { 
    // now update title with ancestors 
    var done = false; 
    while(done==false) 
    { 
     done = true; 
     // outer loop 
     var len = sgc_subjectCache.length; 
     for(var i=0; i < len-1; i++) 
     { 
      subject = sgc_subjectCache[ i ]; 
      // inner loop 
      for(var j=0; j < len-1; j++) 
      { 
       subject2 = sgc_subjectCache[ j ]; 
       if(subject.ParentSubject.Id === subject2.SubjectId) 
       { 
        // found the parent 
        var newTitle = subject2.Title + ' : ' + subject.Title; 
        sgc_subjectCache[ i ].Title = newTitle; 
        sgc_subjectCache[ i ].Root = subject2.Root; 
        sgc_subjectCache[ i ].ParentSubject.Id = subject2.ParentSubject.Id; 
        done = false; // more to do 
       } 
      } 
     } 
    } 

} 

function cacheSubjects() { 
    sgc_subjectCache = []; 
    var options = "$select=Title,SubjectId,ParentSubject"; 
    SDK.REST.retrieveMultipleRecords("Subject", options, cacheSubjectsCallback, function(error) { 
     alert(error); 
    }, cacheSubjectsComplete); 
} 
2

我使用OData服務發現是回到您在客戶端的JavaScript需要信息的最佳方式:CRM 2011, Getting started with OData

+0

並配有位研究到$選擇和$擴展語法,你可以返回的關係是你需要。 – glosrob