2014-12-05 9 views
0

Я немного новичок в Flex и столкнулся с проблемой с itemRenderer, что я не могу найти решение. Я попросил коллегу с большим опытом гибки, и я пробовал искать в Интернете без везения.
Моя проблема в том, что у меня есть dataGrid, в котором каждый столбец использует itemRenderer для отображения информации, и по какой-то причине это приводит к тому, что пользователь не может выбрать ни одну из строк dataGrid. Я думаю, что это должно иметь какое-то отношение к itemRenderer, потому что, когда я добавил фиктивный столбец без itemRenderer, я смог выделить и выбрать строку, щелкнув на этом фиктивном столбце, но остальные все еще не работают. Я пробовал сравнивать мой код с кодом для других dataGrids с itemRenderers, которые действительно работают, но я не смог найти никаких различий, которые могли бы вызвать проблему, которая мне дает. Кто-нибудь знает, почему это произойдет?
Спасибо!flex itemrenderer предотвращает выбор элемента datagrid

Мои DataGrid (я попытался включить только то, что я думаю, что должно быть уместным только, чтобы держать вещи кратким Если кто-то думает, что необходима дополнительная информация, пожалуйста, дайте мне знать.!):

<mx:DataGrid id="servicegridUI" left="10" right="10" top="10" bottom="85" selectable="true" 
       styleName="formDataGrid" variableRowHeight="true" toolTip="Double-click to view."> 
     <mx:columns> 
      <mx:DataGridColumn headerText="ID" dataField="ID" width="175"> 
       <mx:itemRenderer> 
        <mx:Component> 
         <mx:HBox paddingBottom="3" height="70" paddingLeft="5" horizontalGap="1" paddingTop="2" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
          <mx:Text height="100%" width="100%" id="id" htmlText="" selectable="true" doubleClick="openDoc(event)" doubleClickEnabled="true"/> 
          <mx:Script> 
           <![CDATA[       
            var refId:String = ""; 
            override public function set data(value:Object):void { 
             //variables for setting text are created here 
             id.htmlText = 'ID: ' + refId + '<br><font color="#666666">Service ID: ' + servId + '</font>'; 
             id.htmlText +='<br><font color="#666666">Type and Specialty: ' + type + ' - ' + specialty + '</font>'; 
            } 

            public function openDoc(event:MouseEvent):void {    
             //removed due to irrelevance 
            } 
           ]]> 
          </mx:Script> 
         </mx:HBox> 
        </mx:Component> 
       </mx:itemRenderer> 
      </mx:DataGridColumn> 
      <mx:DataGridColumn headerText="Claimant" dataField="claimantHeader" width="125"> 
       <mx:itemRenderer> 
        <mx:Component> 
         <mx:HBox paddingBottom="3" height="70" paddingLeft="5" horizontalGap="1" paddingTop="2" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
          <mx:Text height="100%" width="100%" id="claimant" htmlText="" selectable="true" doubleClick="openDoc(event)" doubleClickEnabled="true"/> 
          <mx:Script> 
           <![CDATA[ 
            var refId:String = ""; 
            override public function set data(value:Object):void { 
             //variables for setting text are created here 
             claimant.htmlText = 'Claim: ' + claim + '<br><font color="#666666">Name: '+ name +'</font>'; 
             claimant.htmlText +='<br><font color="#666666">Date: '+ date+'</font>'; 
             } 

            // Opens a new browser window and loads the file 
            public function openDoc(event:MouseEvent):void {    
             //removed due to irrelevance 
            } 
           ]]> 
          </mx:Script> 
         </mx:HBox> 
        </mx:Component> 
       </mx:itemRenderer> 
      </mx:DataGridColumn> 
      <mx:DataGridColumn headerText="Status" dataField="statusHeader" width="70"> 
       <mx:itemRenderer> 
        <mx:Component> 
         <mx:HBox paddingBottom="3" height="70" paddingLeft="5" horizontalGap="1" paddingTop="2" horizontalScrollPolicy="off" verticalScrollPolicy="off" > 
          <mx:Text height="100%" width="100%" id="status" htmlText="" selectable="true" doubleClick="openDoc(event)" doubleClickEnabled="true"/> 
          <mx:Script> 
           <![CDATA[    
            var refId:String = ""; 
            override public function set data(value:Object):void { 
             //variables for setting text are created here 
             status.htmlText = 'Date: ' + refDate; 
             status.htmlText += '<br><font color="#666666">Status: ' + currStatus + '</font>'; 
            } 

            // Opens a new browser window and loads the file 
            public function openDoc(event:MouseEvent):void {    
             //removed due to irrelevance 
            } 
           ]]> 
          </mx:Script> 
         </mx:HBox> 
        </mx:Component> 
       </mx:itemRenderer> 
      </mx:DataGridColumn> 
      <mx:DataGridColumn headerText="lalala" dataField="serviceID" width="50"/><!---this is the dummy column that I created and is the only one that functions properly--> 
     </mx:columns> 
    </mx:DataGrid> 
+0

Похоже, вы не реализовали некоторые государства в ItemRenderer. Попробуйте расширить свой ItemRenderer из класса DataGridItemRenderer – Anton

ответ

0

При переопределенный данных, вы должны указать

super.data = value; 

Это исправит вашу проблему. Если вы хотите запустить полное приложение, вот пример, основанный на коде:

<?xml version="1.0"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 
<mx:Script><![CDATA[ 
    import mx.collections.ArrayCollection; 
    [Bindable] 
    private var myArrayCollection:ArrayCollection = new ArrayCollection([ 
     {ID:"1",claimantHeader: "ClaimHeader1",statusHeader:"StatusHeader1", serviceID:"SID1" , servId:"1001", name:"Bikram Dangol", type:"Type 1",specialty:"Speciality 1", claim:"Claim 1", date:"12/06/2014", refDate:"11/06/2014", currStatus:"Active"}, 
     {ID:"2",claimantHeader: "ClaimHeader2",statusHeader:"StatusHeader2", serviceID:"SID2", servId:"1002", name:"Anup Dangol", type:"Type 2",specialty:"Speciality 2", claim:"Claim 2", date:"12/07/2014", refDate:"11/07/2014", currStatus:"Inactive"}, 
     {ID:"3",claimantHeader: "ClaimHeader3",statusHeader:"StatusHeader3", serviceID:"SID3", servId:"1003",name:"Lunish Yakami", type:"Type 3",specialty:"Speciality 3", claim:"Claim 3", date:"12/08/2014", refDate:"11/08/2014", currStatus:"OnHold"}, 
                      ]); 
    ]]></mx:Script> 
<mx:DataGrid id="servicegridUI" left="10" right="10" top="10" bottom="85" selectable="true" dataProvider="{myArrayCollection}" 
      styleName="formDataGrid" variableRowHeight="true" toolTip="Double-click to view."> 
    <mx:columns> 
     <mx:DataGridColumn headerText="ID" dataField="ID" width="175"> 
      <mx:itemRenderer> 
       <mx:Component> 
        <mx:HBox paddingBottom="3" height="70" paddingLeft="5" horizontalGap="1" paddingTop="2" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
         <mx:Text height="100%" width="100%" id="ID" htmlText="" selectable="true" doubleClick="openDoc(event)" doubleClickEnabled="true"/> 
         <mx:Script> 
          <![CDATA[ 
          var refId:String = ""; 
          override public function set data(value:Object):void { 
           super.data = value; 
           //variables for setting text are created here 
           ID.htmlText = 'ID: ' + refId + '<br><font color="#666666">Service ID: ' + data.servId + '</font>'; 
           ID.htmlText +='<br><font color="#666666">Type and Specialty: ' + data.type + ' - ' + data.specialty + '</font>'; 
          } 

          public function openDoc(event:MouseEvent):void { 
           //removed due to irrelevance 
          } 
          ]]> 
         </mx:Script> 
        </mx:HBox> 
       </mx:Component> 
      </mx:itemRenderer> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn headerText="Claimant" dataField="claimantHeader" width="125"> 
      <mx:itemRenderer> 
       <mx:Component> 
        <mx:HBox paddingBottom="3" height="70" paddingLeft="5" horizontalGap="1" paddingTop="2" horizontalScrollPolicy="off" verticalScrollPolicy="off"> 
         <mx:Text height="100%" width="100%" id="claimant" htmlText="" selectable="true" doubleClick="openDoc(event)" doubleClickEnabled="true"/> 
         <mx:Script> 
          <![CDATA[ 
          var refId:String = ""; 
          override public function set data(value:Object):void { 
           super.data = value; 
           //variables for setting text are created here 
           claimant.htmlText = 'Claim: ' + data.claim + '<br><font color="#666666">Name: '+ data.name +'</font>'; 
           claimant.htmlText +='<br><font color="#666666">Date: '+ data.date+'</font>'; 
          } 

          // Opens a new browser window and loads the file 
          public function openDoc(event:MouseEvent):void { 
           //removed due to irrelevance 
          } 
          ]]> 
         </mx:Script> 
        </mx:HBox> 
       </mx:Component> 
      </mx:itemRenderer> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn headerText="Status" dataField="statusHeader" width="70"> 
      <mx:itemRenderer> 
       <mx:Component> 
        <mx:HBox paddingBottom="3" height="70" paddingLeft="5" horizontalGap="1" paddingTop="2" horizontalScrollPolicy="off" verticalScrollPolicy="off" > 
         <mx:Text height="100%" width="100%" id="status" htmlText="" selectable="true" doubleClick="openDoc(event)" doubleClickEnabled="true"/> 
         <mx:Script> 
          <![CDATA[ 
          var refId:String = ""; 
          override public function set data(value:Object):void { 
           super.data = value; 
           //variables for setting text are created here 
           status.htmlText = 'Date: ' + data.refDate; 
           status.htmlText += '<br><font color="#666666">Status: ' + data.currStatus + '</font>'; 
          } 

          // Opens a new browser window and loads the file 
          public function openDoc(event:MouseEvent):void { 
           //removed due to irrelevance 
          } 
          ]]> 
         </mx:Script> 
        </mx:HBox> 
       </mx:Component> 
      </mx:itemRenderer> 
     </mx:DataGridColumn> 
     <mx:DataGridColumn headerText="lalala" dataField="serviceID" width="50"/><!---this is the dummy column that I created and is the only one that functions properly--> 
    </mx:columns> 
</mx:DataGrid> 
</mx:Application> 
+0

Это сделало это - большое вам спасибо! Это был определенно полезный урок Flex. –