使用JavaScript获取与项目相关联的SharePoint任务,而无需使用关联项目



我有一个不寻常的环境,客户端不想支持SharePoint组件,因此我有一个O365 SharePoint网站,我只能通过工作流或JavaScript编程来做事情。

我有一个正在启动任务的工作流,除了一些原因,我偶尔会得到一个没有得到"相关项目"填充的任务。因此,查找具有与它们关联的任务的项时失败了,因为我正在查找与我正在使用的ID对应的Related Item。我仍然可以从列表项,到工作流程,到任务。有没有其他方法,比如使用WorkflowItemId,我可以将任务与这些项关联起来?

下面是一些代码,我必须通过项目Id找到任务,它要么删除任务(当列表项被删除时),要么填充taskId以显示在表单中,这是在O365 SharePoint在线中使用的。为它指定列表项的ID,并将列表标题更改为任务列表标题。如果还有什么问题请告诉我。

     $.fn.get_taskIds = function (param) {
     var itemTitle, taskId, curID = param.ItemId, foundAction = param.action;
     get_listData(appWebUrl + "/_api/web/lists/getbytitle('ExpirationTaskList')/items?$select=RelatedItems,Id,Title").done(
        function (data) {
            var itemJSON;
            $.each(data.d.results, function (index, item) {
                itemJSON = $.parseJSON(item.RelatedItems);
                itemTitle = item.Title;
                taskId = item.Id;
                $(itemJSON).each(function (i, val) {
                    $.each(val, function (k, v) {
                        if (k == 'ItemId') {
                            if (v == curID) {
                                switch (foundAction) {
                                    case 'view':
                                        if (itemTitle == 'Warranty Expiration') { $('#WTaskId').val(taskId); $('#wTaskRadio').attr('disabled', false); }
                                        if (itemTitle == 'Lease Expiration') { $('#LTaskId').val(taskId); $('#lTaskRadio').attr('disabled', false); }
                                        break;
                                    case 'delete':
                                        delete_Task(taskId);
                                        break;
                                } 
                            }
                        }
                    })
                })
            });
        }).fail(function (arg) {
            $('#jsError').html('Fail in Async Query to Retrieve task data: <br />');
            var jsonResp = $.parseJSON(arg.responseText);
            $('#jsError').append(jsonResp.error.message.value);
        });
}

get_listData(url) {

    var dfrd = $.Deferred(function (dfrd) {
        $.ajax({
            url: aurl,
            type: "Get",
            contentType: "application/json;odata=verbose",
            headers: {
                "Accept": "application/json;odata=verbose"
            },
            success: function (data) {
                dfrd.resolve(data);
            },
            error: function (args) {
                dfrd.reject(args);
            }
        });
    });
    return dfrd.promise();
}

最新更新