Не срабатывает фильтр, не обновляет записи

  updateFilters: function (filter) {
 
                    var esq = this.getGridDataESQ();
                    switch(filter) {
                        case "TsOwner":
                            var user = this.Terrasoft.SysValue.CURRENT_USER_CONTACT.value;
                           	esq.filters.add("CurrentUser", this.Terrasoft.createColumnFilterWithParameter(
                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user)); 
                            break;
                        case "TsOt": 
                            esq.filters.add("NotCurrentUser", this.Terrasoft.createColumnFilterWithParameter(
                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user)); 
                            break;   
                    }
                },

Есть такой метод, который должен срабатывать при нажатии на кастомную кнопку в разделе. При нажатии ничего не происходит. Нужна чтобы работала по аналогии базовых фильтров в разделе. 

Нравится

8 комментариев

Добрый день,

предоставьте, пожалуйста, конфигурацию кнопки в массиве diff.

Mykhailo Storozhuk,

 {

                    "operation": "insert",

                    "name": "SearchQueryButton",

                    "parentName": "ActionButtonsContainer",

                    "propertyName": "items",

                    "values": {

                        "caption": "Все клиенты филиала",

                        "itemType": Terrasoft.ViewItemType.BUTTON,

                        "style": Terrasoft.controls.ButtonEnums.style.GREEN,

                        "click": {"bindTo": "TsOwnerQueryFilter"},

                        "layout": {

                            "column": 6,

                            "row": 0,

                            // "colSpan": 9,

                            // "rowSpan": 1,

                        },

                    },

                    "index": 2

                },

 

 

  TsOwnerQueryFilter: function () {

                    this.updateFilters("TsOwner");

                },

После того как Вы добавили фильтр нужно получить данные с новым фильтром и перезагрузить страничку реестра через метод this.refreshGridData().

sad

Не помогло. 

Предоставьте код в методе, пожалуйста

Mykhailo Storozhuk, 

initQueryFilters: function (filter) {

                    var esq = this.getGridDataESQ();

                    if (filter == "TsOwner") {

                        var user = '{218A312F-C5FB-4E8F-E053-223E1EAC50CA}'; 

                        esq.filters.add("CurrentUser",

                        this.Terrasoft.createColumnFilterWithParameter(

                            this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user));

                    }

 

                    else if (filter == "TsNotOwner") {

                        var people = '{B1B7A389-130F-6EDB-E040-007F01000437}';

                        esq.filters.add("CurrenNottUser",

                            this.Terrasoft.createColumnFilterWithParameter(

                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", people));

                    }

                },



 

                updateFilters: function (filter) {

 

                    var esq = this.getGridDataESQ();

                    switch(filter) {

                        case "TsOwner":

                            var user = this.Terrasoft.SysValue.CURRENT_USER_CONTACT.value;

                            esq.filters.add("CurrentUser", this.Terrasoft.createColumnFilterWithParameter(

                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user)); 

                            break;

                        case "TsNotOwner": 

                            esq.filters.add("NotCurrentUser", this.Terrasoft.createColumnFilterWithParameter(

                                this.Terrasoft.ComparisonType.EQUAL, "TsOwner", user)); 

                            break;   

                    }

 

                    this.reloadGridData();

 

                },

 

 

2 метода, ни один не работает. привязаны к кнопке на странице. 

По логике в разделе должен обновлить и применить фильтр 

Прошу прощения, правильнее будет переопределить метод initQueryFilters и потом вызывать метод reloadGridData. Пример кода:

define("ContactSectionV2", [], function() {

    return {

        entitySchemaName: "Contact",

          attributes: {

            "UsrTest": {

                "dataValueType": Terrasoft.DataValueType.BOOLEAN

         }

        },

        methods: {

            onTestClick: function() {

                this.set("UsrTest", true);

                this.reloadGridData();

            },

              initQueryFilters: function(esq) {

                this.callParent(arguments);

                //номер в пп

                var usrTestFilter = this.get("UsrTest");

                if (usrTestFilter) {

                    esq.filters.add("UsrTestFiltertest", 

                      esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "Name", "111"));

                }

            }

        },

        diff: /**SCHEMA_DIFF*/[

            {

                "operation": "insert",

                "parentName": "ActionButtonsContainer",

                "propertyName": "items",

                "name": "MainContactSectionButton",

                "values": {

                    itemType: Terrasoft.ViewItemType.BUTTON,

                    caption: "Button test",

                    click: { bindTo: "onTestClick" },

                    "layout": {

                        "column": 1,

                        "row": 6,

                        "colSpan": 1

                    }

                }

            }

        ]/**SCHEMA_DIFF*/

    };

});

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