Flex CheckBox Вопрос - PullRequest
       20

Flex CheckBox Вопрос

0 голосов
/ 17 сентября 2009
<mx:DataGrid x="10" y="10" width="180" height="302" id="dgActions" dataProvider="{actionCollection}">
   <mx:columns>
      <mx:DataGridColumn headerText="Action" dataField="name"/>
         <mx:DataGridColumn headerText="" dataField="setting"  width="30" rendererIsEditor="true"> 
         <mx:itemRenderer >
            <mx:Component>
               <mx:Box width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
                  <mx:CheckBox selected="{data.setting}" click="setActionSetting()">
                     <mx:Script>
                       <![CDATA[
                        private function setActionSetting(){
                           data.setting = String(this.selected);
                        }
                        ]]>
                     </mx:Script>
                  </mx:CheckBox>
               </mx:Box>
            </mx:Component>
         </mx:itemRenderer>
      </mx:DataGridColumn>
   </mx:columns>
</mx:DataGrid>

По какой-то причине я получаю сообщение об ошибке в строке data.setting = String (this.selected), которая говорит: «Доступ к возможно неопределенному свойству, выбранному через ссылку со статическим типом».

[править] Решение вышеупомянутой проблемы (хотя и не всей путаницы) состояло в том, что как только вы находитесь внутри тега <mx:Component>, вы попадаете в область действия указанного компонента. Чтобы получить доступ к сценарию и узлам вне этого компонента, вы должны использовать объект outerDocument . [конец редактирования]

Я не уверен, что он ожидает, я предполагаю, что он передаст значение true / false выбранного (ness) флажка в метод, но, похоже, не понимает, что это "это" в этом контексте.

Я что-то делаю явно неправильно? Все, что я хочу, это чтобы источник данных отражал изменение статуса, который он первоначально вводил в флажок.

EDIT: Я только заметил, что когда я добавляю trace ('foo') к функции, она никогда ничего не записывает обратно в консоль. Предотвращает ли собственное поведение флажка (и захват событий) его появление в моей функции?

Кроме того, когда я добавляю ссылки на объекты снаружи в остальной части документа, он говорит мне, что не распознает их. Я полностью сбит с толку относительно того, как Flex справляется со своими задачами ... любые дополнительные указания или ссылки на ссылки были бы действительно полезными.

Ответы [ 4 ]

1 голос
/ 17 сентября 2009

this в данном (ха) случае относится к компоненту рендеринга, а не к окружающему классу (или флажку, столбцу данных, сетке данных и т. Д.). Вам действительно лучше разбить рендерер на реальный компонент, так что вы не будете запутывать область так, как при использовании подхода встроенного компонента.

Серия Питера Энта о itemRenderers чрезвычайно полезна и должна объяснить все, что вы хотите знать по этому вопросу.

0 голосов
/ 18 сентября 2009

Итак, после долгих мучений я наконец понял, как все это работает ...

Джоэл на правильном пути, это не относится к тому, на что, как вы надеетесь, оно относится (а именно к флажку). Кроме того, даже если вы передадите this в метод ОТ узла флажка, он ссылается на родительский класс-оболочку, а не на сам флажок. Итак, решение состоит в том, чтобы передать событие, а затем получить доступ к его цели, которая, наконец, является флажком. И тогда ты дома.

Другими словами ...

<mx:CheckBox  selected="{data.setting}" click="setActionSetting(event)">
    <mx:Script>
        <![CDATA[
            private function setActionSetting(e:Event):void{
                data.setting = e.target.selected;
                trace("n=" + data.name + " set to " + data.setting);
                //the name is the other piece of the data that I omitted for clarity
            }
        ]]>
    </mx:Script>
</mx:CheckBox>
0 голосов
/ 17 сентября 2009

CheckBox.selected требует значения Boolean. Тот факт, что вы устанавливаете data.setting в значение String, говорит мне, что data.setting НЕ является Boolean.

0 голосов
/ 17 сентября 2009

Если бы мне пришлось угадать, что это - элемент mx: Script, попробуйте "parent.selected".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...