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; } },
Есть такой метод, который должен срабатывать при нажатии на кастомную кнопку в разделе. При нажатии ничего не происходит. Нужна чтобы работала по аналогии базовых фильтров в разделе.
Нравится
Добрый день,
предоставьте, пожалуйста, конфигурацию кнопки в массиве 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().
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*/
};
});