Dynamics CRM 2011检索所有主题

时间:2012-10-03 10:04:45

标签: javascript dynamics-crm-2011

我正在学习CRM 2011,同时使用它,我认为这可能是一个有用的例子。 在javascript函数中,我需要检索所有Subject实体记录并将其缓存在客户端上。 我还需要将它们缓存在他们的层次结构中。 我认为最好的方法是使用id和parent id返回每个主题记录,这样我就可以在javascript中构建一个客户端结构。

有CRM经验的人是否有任何关于如何编码此查询的建议?我很好处理数据,不知道如何返回我需要的结果!

由于

2 个答案:

答案 0 :(得分:2)

我发现使用OData服务是在客户端javascript中返回所需信息的最佳方式:CRM 2011, Getting started with OData

答案 1 :(得分:1)

您的回答可能有效,但是对我来说点击次数太多了。

这就是我最终做到的。 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);
}