2012-02-12 18 views
0

DataGridにチェックボックスを挿入するコードを実装しました。問題は、チェックボックスをオンにして下にスクロールすると、他のチェックボックスもチェックされていることです。私が再びスクロールすると、最初にチェックしたチェックボックスはもうチェックされません。誰でも私を助けてくれますか?ここでDataGridのチェックボックスが選択された後、スクロールダウンされます。3

はコードです:ここでは

<?xml version="1.0" encoding="utf-8"?> 
    <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    initialize="main()" textAlign="right" textRotation="rotate270" title="HomeView"> 
    <fx:Script> 
     <![CDATA[ 

      import mx.collections.ArrayList; 
      import mx.graphics.SolidColorStroke; 

      import spark.primitives.Rect; 
      import spark.skins.spark.DefaultComplexItemRenderer; 
      import spark.skins.spark.DefaultItemRenderer; 
      private var bL:ArrayList; 

      public function main():void{ 


      hey.dataProvider=dataprovider;  
      } 




     ]]> 
    </fx:Script> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
     <s:ArrayList id="dataprovider"> 


      <fx:Object actName="myact1" actnumber="2" name="1"/> 
       <fx:Object actName="myact2" actnumber="55" name="2"/> 
      <fx:Object actName="myact1" actnumber="2" name="3"/> 
      <fx:Object actName="myact2" actnumber="55" name="4"/> 
      <fx:Object actName="myact1" actnumber="2"/> 
      <fx:Object actName="myact2" actnumber="55"/> 
      <fx:Object actName="myact1" actnumber="2"/> 
      <fx:Object actName="myact2" actnumber="55"/> 
      <fx:Object actName="myact1" actnumber="2" name="1"/> 
      <fx:Object actName="myact2" actnumber="55" name="2"/> 
      <fx:Object actName="myact1" actnumber="2" name="3"/> 
      <fx:Object actName="myact2" actnumber="55" name="4"/> 
      <fx:Object actName="myact1" actnumber="2"/> 
      <fx:Object actName="myact2" actnumber="55"/> 
      <fx:Object actName="myact1" actnumber="2"/> 
      <fx:Object actName="myact2" actnumber="55"/> 
      <fx:Object actName="myact1" actnumber="2" name="1"/> 
      <fx:Object actName="myact2" actnumber="55" name="2"/> 
      <fx:Object actName="myact1" actnumber="2" name="3"/> 
      <fx:Object actName="myact2" actnumber="55" name="4"/> 
      <fx:Object actName="myact1" actnumber="2"/> 
      <fx:Object actName="myact2" actnumber="55"/> 
      <fx:Object actName="myact1" actnumber="2"/> 
      <fx:Object actName="myact2" actnumber="55"/> 
     </s:ArrayList> 
    </fx:Declarations> 
    <s:DataGrid id="hey" x="-2" y="-1" width="323" height="415"> 
     <s:columns> 
      <s:ArrayList> 

       <s:GridColumn id="my" dataField="wierd"> 

       </s:GridColumn> 

       <s:GridColumn id="hi" dataField="checkboxes"> 

        <s:itemRenderer> 
         <fx:Component> 
          <s:GridItemRenderer> 

           <fx:Script> 
            <![CDATA[ 
      protected function checkbox1_clickHandler(event:MouseEvent):void 
             { 
            trace("clicked"); 
             } 
            ]]> 
           </fx:Script> 

       <s:CheckBox click="checkbox1_clickHandler(event)"> 

           </s:CheckBox> 
          </s:GridItemRenderer> 

         </fx:Component> 

        </s:itemRenderer> 

       </s:GridColumn> 

      </s:ArrayList> 

     </s:columns> 



    </s:DataGrid> 
    </s:View> 

答えて

0

は、この問題を解決する方法です。 (回避する)

この理由は、Datagridの実装方法と関係があります。

例:Datagridの内部に50個の行を作成する場合。同じ行に異なるデータが入力されています(スクロールと表示のシームレスな操作を提供します)

だから、この問題を解決するためのトリックは、あなたがサンプルで見つかったセルレンダラークラスのコードを解析する必要があります。このリンクで

http://www.actionscript.org/forums/attachment.php3?attachmentid=38409&d=1335099663

を発見したサンプルを研究することです。あなたの場合はDatagrid列で使用されているDefaultItemRendererまたはDefaultComplexItemRendererを修正する必要があります。

関連する問題