2011-12-14 4 views
0

В моем гибком приложении им с помощью DataGrid, который имеет флажок ItemRenderer столбца им, используя следующий кодFlex управления Флажком в DataGrid

<mx:DataGridColumn headerText="Select" dataField="isSelect" editable="false" textAlign="center" > 
         <mx:itemRenderer > 
          <mx:Component> 

           <mx:CheckBox selected="{data.isSelect}" change="outerDocument.addDetail(data)" > 
           </mx:CheckBox> 
          </mx:Component> 
         </mx:itemRenderer> 
        </mx:DataGridColumn> 

        <mx:DataGridColumn headerText="FirstName" dataField="firstName" color="black" editable="false" width="125" /> 
        <mx:DataGridColumn headerText="SecondName" dataField="lsecondName" color="black" editable="false" width="125"/> 

после выбора флажка и сохранения им детали в моей БД. сейчас, Когда я прихожу для получения данных, выбранные детали из db должны быть выбраны в флажке. как я могу отличить выбранную запись и невыбранную запись. ?? thanxx заблаговременно

ответ

1
<mx:itemRenderer> 
         <mx:Component> 
          <mx:HBox horizontalAlign="center" verticalAlign="middle"> 
           <mx:Script> 
            <![CDATA[ 
             var objTemp:Object = new Object(); 

             override public function set data(value:Object):void 
             { 
              if(value != null) 
              { 
               var xml:XML = XML(value); 
               super.data = value; 
               objTemp = outerDocument.xmlToObject(xml.toString()); 
               if(objTemp.story['quiz_score'] != null) 
               { 
                chkAssignment.visible = false; 
               } 
               else 
               { 
                chkAssignment.visible = true; 
               } 
               if(objTemp.story.is_selected == false) 
               { 
                chkAssignment.selected = false; 
               } 
               else 
               { 
                chkAssignment.selected = true; 
               } 

              } 
             } 

             private function deleteAssignment():void 
             { 


              if(chkAssignment.selected) 
              { 
               outerDocument.isChanged = true; 

               objTemp.story.is_selected = true; 
               var xml:XML = outerDocument.objectToXML(objTemp,"record"); 

               var xmlList:XMLList = xml.children(); 
               xml = xmlList[0] as XML; 

               outerDocument.dgListeningLog.dataProvider[outerDocument.dgListeningLog.selectedIndex] = xml; 

               outerDocument.arrAssignment.push({"story_name": XML(outerDocument.dgListeningLog.selectedItem).story_title.toString() ,"student_assignmentId": XML(outerDocument.dgListeningLog.selectedItem).assignment_id.toString(),"session_key": XML(outerDocument.dgListeningLog.selectedItem).session_key.toString(),"selectedIndex": outerDocument.dgListeningLog.selectedIndex.toString()}); 
              } 
              else 
              { 
               outerDocument.isChanged = true; 

               objTemp.story.is_selected = false; 
               var xml:XML = outerDocument.objectToXML(objTemp,"record"); 

               var xmlList:XMLList = xml.children(); 
               xml = xmlList[0] as XML; 

               outerDocument.dgListeningLog.dataProvider[outerDocument.dgListeningLog.selectedIndex] = xml; 

               for(var i:int =0; i < outerDocument.arrAssignment.length; i++) 
               { 
                if(outerDocument.arrAssignment[i].selectedIndex == outerDocument.dgListeningLog.selectedIndex) 
                { 
                 outerDocument.arrAssignment.splice(i,1); 
                 break; 
                } 
               } 
              } 

             } 

            ]]> 
           </mx:Script> 
           <mx:CheckBox id="chkAssignment" change="{deleteAssignment();}"/> 
          </mx:HBox> 
         </mx:Component> 
        </mx:itemRenderer> 

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

Если вы столкнулись с проблемой при прокрутке DataGrid CheckBox показывает неправильное значение, чем скопировать следующий метод из кода:

отменяет общественные функции набора данных (значение: Object): недействительные

0

Уверены, что data предоставлен в строке itemRenderer имеет правильное значение isSelect property? Попробуйте trace это.