-->

четверг, 14 апреля 2016 г.

Удаление ссылки с поля подстановки в представлении списка.

В этой статье я расскажу, как можно убрать ссылки с Lookup поля в представлении. Для этого мы переопределим шаблон рендера полей.
Для этого нам нужно или создать файл js и подключить его к веб-части через jsLink, можно добавить ссылку на файл через веб-часть «Редактор скриптов» или можно просто добавить код непосредственно в веб-часть «Редактор скриптов».



для начала нужно перечислить поля для которых мы будем переопределять шаблон рендера

(function () {
    var overrideCtx = {};
    overrideCtx.Templates = {};
    overrideCtx.Templates.Fields = {
        "Phone": { // интерал нейм поля 
            "View": RemoveLinkToField // для какого представления и с помощью какой функции осуществляем рендер
        }
    };

   SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();


далее сама функция RemoveLinkToField
в ней происходит проверка какого типа поле отправили в функцию и если "Lookup" или "LookupMulti", то убираем ссылку. для всех остальных типов полей значение возвращается как оно и было изначально.

function RemoveLinkToField(ctx) {  
    var fieldValue = ctx.CurrentItem[ctx.CurrentFieldSchema.Name];
    switch (ctx.CurrentFieldSchema.FieldType) {
        case "Lookup":
            return fieldValue[0].lookupValue;
            break;
        case "LookupMulti":
            var array = [];
            for (var i = 0; i < fieldValue.length; i++) {
                array.push(fieldValue[i].lookupValue);
            }
            return array.join("; ");
            break;
       default: return fieldValue;

    }
}


весь код:
(function () {
    var overrideCtx = {};
    overrideCtx.Templates = {};
    overrideCtx.Templates.Fields = {
        "Phone": {
            "View": RemoveLinkToField
        }
    };

    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);
})();

function RemoveLinkToField(ctx) {  
    var fieldValue = ctx.CurrentItem[ctx.CurrentFieldSchema.Name];
    switch (ctx.CurrentFieldSchema.FieldType) {
        case "Lookup":
            return fieldValue[0].lookupValue;
            break;
        case "LookupMulti":
            var array = [];
            for (var i = 0; i < fieldValue.length; i++) {
                array.push(fieldValue[i].lookupValue);
            }
            return array.join("; ");
            break;
       default: return fieldValue;

    }
}


надеюсь статья была вам полезна.