Вопрос

как получить значение поля

не отрабатывает this. get("Status") , в консоле ругается на метод get 

пытаюсь получить значение поля активной строки детали.

 

Нравится

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

Посмотрите еще раз на предложенный пример. В вашем случае валидный код будет таким:

			isMyselected : function () {
				var activeRow = this.getActiveRow();
				if (!activeRow)
				{return false;}
 
				var activeRowId =activeRow.get("UsrState");	  //   если колонка справочная, то тут будет объект
 
				if (activeRowId && activeRowId.value ==="d44d767e-ebc3-4982-8669-577dbc048327") { //
					var ican2 = this.isAnySelected();
					return ican2;
				}
			},
 
//activeRowId.value потому что справочные колонки представляют из себя объект. примерно такой. и id хранится у них в value:
//{value: "4b8be1bc-aaca-48a3-bb76-3bd916916b03", displayValue: "Состояние1", primaryImageValue: ""}

 

var activeRow = this.getActiveRow();
var activeRowId = activeRow.get("Status");

 

пробовал так , не получается

в консоле ошибка

message: Cannot read property 'get' of undefined 

а в какой момент и где именно пытаетесь  метод этот вызывать?

пытаюсь написать метод по результату которого делается видимым пункт меню в Действиях Детали  

                    Caption : "Отклонена",

                     Enabled: {"bindTo": "isMyselected"},  

а в методах описание isMyselected  далее в зависимости от тог чему равно поле  Status включаю видимость пункта меню   this.isAnySelected();

можете полный код странички привести?

вот полный код

define("UsrSchema2Detail", [], 

            function() {

    return {

        entitySchemaName: "UsrReqVis",

        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,

        diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/,

        methods: {

             addToolsButtonMenuItems: function() {

                this.callParent(arguments);

                var tbm = this.get("ToolsButtonMenu"); 

                tbm.addItem(this.getButtonMenuSeparator());

                tbm.addItem(this.getButtonMenuItem({ 

                    "Caption": {"bindTo": "Resources.Strings.ApproveButton"},

                     "Enabled": {"bindTo": "isMyselected"},

                     "Click": {"bindTo": "isApprove"},

                        "Visible": true

                        })

                   );

                   tbm.addItem(this.getButtonMenuSeparator());

                   tbm.addItem(this.getButtonMenuItem({                    

                     Caption : "Отклонена",

                     Enabled: {"bindTo": "isMyselected"},

                     Click: {"bindTo": "isNotApprove"},

                     Visible: true

                     })      

                 ); 

                 this.set("ToolsButtonMenu", tbm);

                 

            },

       

        isMyselected : function () {

   

       var activeRow = this.get("ActiveRow");

       var activeRowId =this.activeRow.get("UsrState");

      //   this.showInformationDialog(activeRowId); 

        

        if (activeRowId ==="d44d767e-ebc3-4982-8669-577dbc048327") {

             var ican2 = this.isAnySelected(); return ican2;}

            

        },

     },

            

    };

});

для проверки вывожу this.showInformationDialog(activeRowId);   в окне пусто

 

Посмотрите еще раз на предложенный пример. В вашем случае валидный код будет таким:

			isMyselected : function () {
				var activeRow = this.getActiveRow();
				if (!activeRow)
				{return false;}
 
				var activeRowId =activeRow.get("UsrState");	  //   если колонка справочная, то тут будет объект
 
				if (activeRowId && activeRowId.value ==="d44d767e-ebc3-4982-8669-577dbc048327") { //
					var ican2 = this.isAnySelected();
					return ican2;
				}
			},
 
//activeRowId.value потому что справочные колонки представляют из себя объект. примерно такой. и id хранится у них в value:
//{value: "4b8be1bc-aaca-48a3-bb76-3bd916916b03", displayValue: "Состояние1", primaryImageValue: ""}

 

А еще для отладки можно использовать debugger, точки останова. И на крайний случай:

console.log("вывод информации в консоль бразуера");

Попробуйте так 

var activeRowId = this.get("ActiveRow");
var gridData = this.get("GridData");
var status = gridData.get(activeRowId).get("Status");

Только что бы колонка со статусом была на гриде.

Как вариант добавьте атрибут логического типа 

isMyselected = false 
а при инициализации выполните проверку и если условия соблюдены сделайте его true. Оставьте биндинг вашего свойства на добавленный атрибут те оставьте
 Enabled: {"bindTo": "isMyselected"},   оста

 

Дмитрий А.,

cпасибо, все получилоь

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