Вопрос

Ссылки в редактируемом реестре

Здравствуйте!

Хотим сделать чтобы в редактируемом реестре записи отображались как ссылки для удобного перехода, нашел что для этого необходимо добавить признак useLinks: true для DataGrid и метод-обработчик linkClicked, но это почему-то не меняет ситуацию, строки отображаются как обычно... ошибок в консоли нет

Код DataGrid:

{
    "operation": "merge",
    "name": "DataGrid",
    "values": {
        "className": "Terrasoft.ConfigurationGrid",
        "generator": "ConfigurationGridGenerator.generatePartial",
        "generateControlsConfig": {"bindTo": "generatActiveRowControlsConfig"},
        "changeRow": {"bindTo": "changeRow"},
        "unSelectRow": {"bindTo": "unSelectRow"},
        "onGridClick": {"bindTo": "onGridClick"},
        "activeRow": {"bindTo": "ActiveRow"},
        "selectedRows": {"bindTo": "SelectedRows"},
        "activeRowActions": [
            {
                "className": "Terrasoft.Button",
                "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                "tag": "save",
                "markerValue": "save",
                "imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
            },
            {
                "className": "Terrasoft.Button",
                "style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                "tag": "card",
                "markerValue": "card",
                "imageConfig": {"bindTo": "Resources.Images.CardIcon"}
            },
            {
                "className": "Terrasoft.Button",
                "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                "tag": "cancel",
                "markerValue": "cancel",
                "imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
            },
            {
                "className": "Terrasoft.Button",
                "style": this.Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
                "tag": "remove",
                "markerValue": "remove",
                "imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
            }
        ],
        "initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
        "activeRowAction": {"bindTo": "onActiveRowAction"},
        "multiSelect": false,
        "useLinks": true,
        "primaryColumnName": "Id",
        "sortColumnIndex": null,
        "listedZebra": true,
        "type": "listed"
    }
}

 

Посмотрите, пожалуйста, может я что-то упустил

Нравится

3 комментария
Лучший ответ

Добрый день!

Я бы Вам рекомендовал посмотреть в сторону метода addColumnLink в GridUtilitiesV2. Так же можно изучить поподробнее как формируются ссылки в FileDetailV2

Добрый день!

Я бы Вам рекомендовал посмотреть в сторону метода addColumnLink в GridUtilitiesV2. Так же можно изучить поподробнее как формируются ссылки в FileDetailV2

Обрати внимание на флаг showValueAsLink (и выше тебе уже ответили в системе множество примеров, потрать немного времени и разберись)

ПРимер использования ниже

{
    "operation": "insert",
    "name": "UsrURLpage",
    "values": {
        "layout": {
            "colSpan": 12,
            "rowSpan": 1,
            "column": 0,
            "row": 3,
            "layoutName": "Header"
        },
        "labelConfig": {},
        "enabled": true,
        "bindTo": "UsrURLpage",
        "showValueAsLink": true,
        "href": {
            "bindTo": "UsrURLpage",
            "bindConfig": {"converter": "getUsrURLpageLink"}
        },
        "controlConfig": {
            "className": "Terrasoft.TextEdit",
            "linkclick": { bindTo: "onUsrURLpageLinkClick"}
        }
    },
    "parentName": "Header",
    "propertyName": "items",
    "index": 6
}

 

Переопределил метод addColumnLink, спасибо Константину за наводку:

addColumnLink: function(item, column) {
    this.callParent(arguments);
 
    var columnPath = column.columnPath;
    if (columnPath === "UsrProduct") {
        item["on" + columnPath + "LinkClick"] = function() {
            var value = this.get(columnPath);
            return {
                caption: item.values.UsrProduct.displayValue,
                target: "_self",
                title: item.values.UsrProduct.displayValue,
                url: "/0/Nui/ViewModule.aspx#CardModuleV2/ProductPageV2/edit/" + item.values.UsrProduct.value
            };
        };
    }
}

При переходе по ссылке появились ошибки в консоли, видимо не мог поставить фокус при переходе, просто убрал фокус на это поле:

focusActiveRowControl: function(columnName) {
    if (!columnName || columnName === "UsrProduct") {
        return;
    }
    var activeRow = this.getActiveRow();
    activeRow.set("Is" + columnName + "Focused", true);
    this.currentActiveColumnName = columnName;
}

 

Всем спасибо за помощь...)

 

Показать все комментарии