2010-11-23 9 views
0

Ich möchte eine Zeile meines Datagrids löschen, wenn jemand auf einen Button-Teil dieser Zeile unterhalb der Spalte Löschen klickt. Ich habe versucht, viele verschiedene Art und Weise einer von denenZeile von Datagrid löschen, indem Sie auf einen Schaltflächenbereich dieser Zeile in der Spalte Löschen klicken?

war
<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> 

Der Artikel macht ev.renderers.UserGridEditRender eine Schaltfläche Löschen Angebot für Click-Ereignis hat es im Grunde tut userGridData.removeItemAt(userGrid.selectedIndex); (UserGridData = Datenanbieter von Netz mit der ID „userGrid“) Aber immer, wenn ich die Taste eine Ausnahme klicken sie Ihre Elementrenderers Schaltfläche Versand ein Ereignis, das die ausgewählte „Daten“ in ihm werfen

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

Antwort

1

Wie wäre es mit.

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

hört für dieses Ereignis in der äußeren Dokument und bearbeiten Sie Ihre userGridData entsprechend ... invalidateList(), wenn Sie nicht im Haus erweitert Dataprovider verwenden, die Jive für Kinder geändert hören.

Hoffe, dass hilft. --jeremy

+0

Ich habe das schon probiert, interessanterweise wird die Ausnahme nur für Zeilen mit Index 0 und 1 ausgelöst, für den Rest funktioniert es gut. –

+0

Sie müssen dann Code zeigen. In Ihrem Beispiel sollten Sie nicht auf "deleteCol" verweisen. Das andere Problem ist, dass Sie (wie Ihr Code sagt) keinen ausgewählten Index haben. Klicken Sie zuerst auf eine andere Stelle im Raster (E-Mail-Spalte) und verwenden Sie dann die Schaltfläche zum Löschen. –