Добрый день!
Возник вопрос, как на странице раздела можно изменить значение поля на странице редактирования по нажатии кнопки?
Добавил в совмещенном режиме в раздел "Активности" кнопку "завершить", добавил метод обработчик нажатия, необходимо чтобы при прохождении всех проверок изменялся Статус и результат активности. Все изменения должны быть выполнены на клиенте и отобразиться сразу
//Метод-обработчик нажатия кнопки завершить doneActivityClick: function(){ var activeRow = this.get("ActiveRow"); if (activeRow) { var cOwnerId = $("#ActivityPageV2OwnerLookupEdit-link-el").attr('href').split('ViewModule.aspx#CardModuleV2/ContactPageV2/edit/')[1].toUpperCase(); var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "Activity" }); esq.addColumn("Opportunity.Owner.Id","OpportunityOwnerId"); esq.addColumn("Opportunity.UsrSaleAgreemAmountPlan", "OpportunityCountAgreem"); esq.addColumn("Opportunity.UsrSalePriseSum","OpportunityPriseSum"); esq.addColumn("Opportunity.UsrObjCountPlan","UsrObjCountPlan"); esq.getEntity(activeRow, function(result) { if (!result.success) { // обработка/логирование ошибки, например this.showInformationDialog("Ошибка запроса данных"); return; } var oSumPrise = result.entity.get("OpportunityPriseSum"); var oOwnerId = result.entity.get("OpportunityOwnerId"); var oCountAgreem = result.entity.get("OpportunityCountAgreem"); var oCountObj =result.entity.get("UsrObjCountPlan"); var mesSumPrise= (oSumPrise<=0)?"Планируемая премия\n":""; var mesCountAgreem=(oCountAgreem<=0)?"Планируемое количество договоров\n":""; var mesCountOdj= (oCountObj<=0)?"Количество объектов\n":""; if (cOwnerId!=oOwnerId.toUpperCase()) { this.showInformationDialog("Ответственный по задаче отличается от ответственного по активности"); } else{ if (oCountAgreem<=0 || oSumPrise<=0|| oCountObj<=0){ this.showInformationDialog("Заполните поля в продаже:\n"+mesSumPrise+mesCountAgreem+mesCountOdj); } //завершение задачи else{ var newStatus ={ displayValue: "Завершена", value: "4BDBB88F-58E6-DF11-971B-001D60E938C6" }; var newResult ={ displayValue: "Реализовано", value: "BB360D72-1AD7-4BBC-BADC-AABC0E334A74" }; // как установить в данные поля значения? this.set("Status", newStatus); this.set("Result", newResult ); this.set("ButtonEnabled", false); //сохраняем все изменения var cardModuleSandboxId = this.getCardModuleSandboxId(); var resultMes = this.sandbox.publish("OnCardAction", "save", [cardModuleSandboxId]); } } },this); }//if(activeRow) }
Нравится
Добрый день, Владислав!
Используя this.set() отобразить изменения сразу, Вы можете проверить это добавив обработчик кнопки в котором без проверок измените значения полей, в результате при нажатии на кнопку изменения сразу отобразятся.
Судя из Вашего кода, значения не меняются так как this содержит другую область видимости.
Потому, рекомендую передать внешний скоуп используя bind:
... esq.getEntity(activeRow, function(result) { ... }.bind(this)); ...