2009-10-08 6 views
0

J'ai une grille de données avec une ligne initiale. Lorsque je clique sur la première ligne, c'est-à-dire sur un événement de touche enfoncée, je veux ajouter une autre ligne.comment ajouter une ligne DataGrid sur l'événement Clavier?

Auparavant, j'avais un bouton, en cliquant sur lequel j'ai ajouté la ligne. Mais maintenant je veux que la ligne soit ajoutée automatiquement une fois que je clique sur la première rangée. Comment faire ça? J'ai ajouté l'événement keydown à la grille de données, mais il a généré une erreur.

Quelqu'un peut-il m'aider? J'ai donné mon code ici. J'ai une zone de texte et un bouton dans le composant de tâche. Lorsque je clique sur la zone de texte dans le composant de la tâche, je veux que la fonction addTaskRow à appeler ..

<mx:Script> 
    <![CDATA[ 
     import mx.collections.ArrayCollection; 
     import mx.rpc.events.ResultEvent; 
     import mx.collections.XMLListCollection; 


[Bindable] 

     private var initDG:ArrayCollection = new ArrayCollection([ 
      {Select:true}, 

     ]); 

     private function addTaskRow(event:MouseEvent):void 
     { 
      taskDataGrid.dataProvider.addItem(
       { 

       } 
      ); 
      taskDataGrid.height += 30; 

     } 

    ]]> 
</mx:Script> 

<mx:DataGrid id="taskDataGrid" dataProvider="{initDG}" variableRowHeight="true" editable="true" 
    width="100%" paddingBottom="1" paddingTop="1" height="47"> 

    <!--mx:DataGrid id="taskDataGrid" dataProvider="{initDG}" rowCount="1" variableRowHeight="true" editable="true" width="100%" keyDown="addTaskRow(event);"--> 
      <mx:columns> 
       <mx:DataGridColumn dataField="Select" 
       editable="true" 
       rendererIsEditor="true" 
       itemRenderer="mx.controls.CheckBox" 
       editorDataField="selected" /> 

       <mx:DataGridColumn dataField="TaskName" 
       width="220" 
       editable="true" 
       rendererIsEditor="true" 
       itemRenderer="components.taskComponent"/> 

       <mx:DataGridColumn dataField="TaskId" 
       itemRenderer="mx.controls.TextInput" /> 

       <mx:DataGridColumn dataField="TaskType" 
        itemRenderer="mx.controls.TextInput"/> 

       <mx:DataGridColumn dataField="ProjectWon" 
        itemRenderer="mx.controls.TextInput"/> 

       <mx:DataGridColumn dataField="ItemCodeVersion" 
        itemRenderer="mx.controls.TextInput"/> 



      </mx:columns> 
     </mx:DataGrid> 

Répondre

1

Vous voulez sur appuyer sur la touche ou la souris cliquez? Remplacez keyDown par mouseDown.

mais cela a provoqué une erreur.

Quelle erreur a-t-elle lancée?

Si vous utilisez mouseDown du DataGrid, une nouvelle ligne sera ajoutée lorsque vous cliquez sur l'une des lignes, pas seulement sur la première ligne.

+0

Ok, je l'obtiens maintenant. KeyDown modifié à MouseDown. Merci de votre aide. – Angeline

Questions connexes