2010-11-23 57 views
0

Je souhaite supprimer une ligne de ma grille de données lorsque quelqu'un clique sur une partie de bouton de cette ligne située sous la colonne Supprimer la colonne. J'ai essayé beaucoup de manière différente l'un d'entre eux étaient àSupprimer une ligne de Datagrid en cliquant sur une partie de bouton de cette ligne dans la colonne Supprimer?

<mx:DataGrid id="userGrid" dataProvider="{userGridData}" width="800" height="500" itemClick="userGrid_itemClickHandler(event)" creationComplete="userGrid_creationCompleteHandler(event)"> 
     <mx:columns> 
      <mx:DataGridColumn headerText="ID" dataField="user_id" /> 

      <mx:DataGridColumn headerText="Email" dataField="user_email"/> 

      <mx:DataGridColumn headerText="Delete" itemRenderer="ev.renderers.UserGridDelete" id="deleteCol"/> 
      <mx:DataGridColumn headerText="Edit" itemRenderer="ev.renderers.UserGridEditRender"/> 

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

L'élément de rendu ev.renderers.UserGridEditRender a une liste de bouton de suppression pour l'événement, cliquez le faire essentiellement userGridData.removeItemAt(userGrid.selectedIndex); (UserGridData = fournisseur de données de la grille avec id « userGrid ») Mais chaque fois que je clique sur le bouton d'une exception jeter

RangeError: Index '-1' specified is out of bounds. 

Répondre

1

que diriez-vous d'avoir votre bouton article renderer envoi d'un événement qui a sélectionné des « données » en elle.

dispatchEvent(new DataMonkeyEvent(DataMonkeyEvent.DELETE_ROW, this.data)); //where "this" is the button and the event should bubble. 

écouter cet événement dans le document externe et modifier vos userGridData en conséquence ... invalidateList() si vous ne l'utilisez en interne DataProviders étendu pour les enfants qui écoutent changé jive.

Espérons que cela aide. --jeremy

+0

J'ai déjà essayé ceci, de manière intéressante l'exception est levée pour les lignes avec l'index 0 et 1 seulement, pour le repos cela fonctionne bien. –

+0

Vous devrez alors montrer du code. Dans votre exemple, vous ne devriez pas référencer "deleteCol". L'autre problème est que (comme votre code le dit), vous n'avez pas d'index sélectionné. Cliquez d'abord ailleurs dans la grille (colonne e-mail), puis utilisez le bouton Supprimer. –