Лучший способ создания ссылок на рабочий процесс элемента списка с использованием результатов SPServices - GetListItems

Я использую SPServices - GetListItems ajax для извлечения данных из SharePoint 2010 для Kendo Grid. Затем я привязываю заголовок к шаблону URL. Это работает нормально (за исключением одной разметки сетки генерирует ошибку межсайтового скриптинга, которая щелкает по элементу. Это странно, потому что страница и ссылка находятся на одном сайте).

Я бы предпочел сослаться на базовый экземпляр Workflow, но не могу найти уникальный идентификатор, требуемый ни в одном из результатов или лежащих в основе данных XML (при просмотре через Stramit Caml Viewer), возвращаемых GetListItems.

Это кажется неуклюжим и жестко запрограммированным, и, вероятно, сломается, если кто-то изменит определенную среду.

В идеальном мире я мог бы получить всю ссылку из ListItem, как это показано в SharePoint, и выдать ее на своей пользовательской странице.

Есть какой-либо способ сделать это?

Изменить элементы списка, которые я получаю, взяты из библиотеки со столбцами, в которых отображаются ссылки, которые ведут вас к связанному рабочему процессу элемента. Я хочу напрямую связать этот рабочий процесс с элементом, отображаемым в моей сетке, как если бы я смотрел на саму библиотеку документов в SharePoint. Код:

var carformData = [];
$(document).ready(function () {
    $().SPServices({
        operation: "GetListItems",
        async: false,
        listName: "CAR Form",
        CAMLViewFields: "<ViewFields><FieldRef Name='WorkflowInstanceID' /><FieldRef Name='Title' /><FieldRef Name='Modified' /><FieldRef Name='CAR_x0020_ID' /><FieldRef Name='Phase1Fi' /><FieldRef Name='Phase2Ex' /><FieldRef Name='APPceo' /></ViewFields>",
        CAMLQuery: "<Query><Where><Eq><FieldRef Name='Author' /><Value Type='User'><UserID /></Value></Eq></Where><OrderBy><FieldRef Name='Modified' Ascending='False' /></OrderBy></Query>",
        completefunc: function (xData, Status) {
            $(xData.responseXML).SPFilterNode("z:row").each(function () {
                carformData.push({
                    Title: $(this).attr("ows_Title"),
                    Modified: $(this).attr("ows_Modified"),
                    CARID: $(this).attr("ows_CAR_x0020_ID") != undefined ? $(this).attr("ows_CAR_x0020_ID") : "",
                    Phase1: $(this).attr("ows_Phase1Fi") != undefined ? workflowStatusCodes[$(this).attr("ows_Phase1Fi")] : "",
                    Phase2: $(this).attr("ows_Phase2Ex") != undefined ? workflowStatusCodes[$(this).attr("ows_Phase2Ex")] : "",
                    Phase3: $(this).attr("ows_APPceo")!= undefined ? workflowStatusCodes[$(this).attr("ows_APPceo")] : "",
                    WorkflowID: $(this).attr("ows_WorkflowInstanceID") //Note: This never has a value, even though these list items are associated with a Workflow, and display a link to them when viewing the Library
                });
            });
        }
    });
    $("#gridCar").kendoGrid({
        sortable: true,
        columns: [
            { field: "Title", title: "Name", template: "<a href='/CIS/CAR%20Form/${ Title }'>${ Title }</a>" },
            { field: "Modified", title: "Modified", format: "{0: MM/dd/yyyy}",  width: 80, headerAttributes: { style: "text-align: center" }, attributes: { style: "text-align: center" } },
            { field: "CARID", title: "CAR ID", width: 80, headerAttributes: { style: "text-align: center" }, attributes: { style: "text-align: center" } },
            { field: "Phase1", title: "Phase 1 - Finance & Accounting", width: 192 },
            { field: "Phase2", title: "Phase 2 - Executive Approval", width: 182 },
            { field: "Phase3", title: "Phase 3 - CEO Approval", width: 151 }
        ],
        dataSource: {
            data: carformData,
            schema: {
                model: {
                    fields: {
                        Title: { type: "string" },
                        Modified: { type: "date" },
                        CARID: { type: "string" },
                        Phase1: { type: "string" },
                        Phase2: { type: "string" },
                        Phase3: { type: "string" }
                    }
                }
            }
        }
    });
});

0 ответов

Другие вопросы по тегам