Here is my solution that works for me:

public class GroupDataAlertDataGrid extends FlexTable {

        private Button dismissButton;
        private int row;

    void addDataToFlexTable(LocationsInfoDTO locationsInfoDTO)
    {
        for(final Info info : locationsInfoDTO.getInfos()){

                dismissButton = new Button("Dismiss");

                this.setWidget(row, 1, new Label(info.getLocationCode()));
                this.setWidget(row, 2, new Label(info.getClientName()));
                this.setWidget(row, 3, dismissButton);

                dismissButton.addClickHandler(new ClickHandler() {
                    public void onClick(ClickEvent event) {
                        Cell cell = getCellForEvent(event);
                        int receiverRowIndex = cell.getRowIndex();
                        //make the row invisible
                                        
getRowFormatter().setVisible(receiverRowIndex, false);

        
GwtAlertServicesDelegate.getService().removeLocationInfoFromSession(info,
                                                        new 
AsyncCallback<LocationsInfoDTO>() {
                                                                @Override
                                                                public void 
onFailure(Throwable arg0) {}
                                                                @Override
                                                                public void 
onSuccess(LocationsInfoDTO arg0) {}
                                                    }
                                        );
                    }
                });

                row++;
        }
    }
}


On Jul 9, 10:51 am, ccg123 <[email protected]> wrote:
> Update: I tried making the row variable a class variable instead of a
> method variable. I want to be able to hide the row when the user
> clicks the "dismiss" button. Here is my latest code. Any help is
> appreciated.
>
> public class GroupDataAlertDataGrid extends FlexTable {
>
>         private ClickListener dismissListener;
>         private Button dismissButton;
>         private int row = 0;
>
>     void addDataToFlexTable(final LocationsInfoDTO locationsInfoDTO)
>     {
>
>         for(final Info info : locationsInfoDTO.getInfos()){
>
>                 dismissButton = new Button("Dismiss", dismissListener);
>
>                 this.setWidget(row, 1, new Label(info.getLocationCode()));
>                 this.setWidget(row, 2, new Label(info.getClientName()));
>                 this.setWidget(row, 3, dismissButton);
>
>                 dismissListener = new ClickListener() {
>                                 public void onClick(Widget sender) {
>                                         //make the row invisible
>                                         getRowFormatter().setVisible(row, 
> false);
>
>                                         //call server - tell session which 
> elements from list to remove
>
> GwtAlertServicesDelegate.getService().removeLocationInfoFromSession(info,
>                                                         new 
> AsyncCallback<LocationsInfoDTO>() {
>                                                                 @Override
>                                                                 public void 
> onFailure(Throwable arg0) {}
>                                                                 @Override
>                                                                 public void 
> onSuccess(LocationsInfoDTO arg0) {}
>                                                     }
>                                         );
>                                 }
>                         };
>                 row++;
>         }
>     }
>
> }
>
> On Jul 9, 10:33 am, ccg123 <[email protected]> wrote:
>
> > Have a FlexTable with made up of two columns of data and a third
> > column with a button, that when clicked makes an asynchronous call and
> > removes the data from the session. My problem is that when I click the
> > button it refers to the info in the row above and not the same row
> > that the button is in. Why?
>
> > public class GroupDataAlertDataGrid extends FlexTable {
>
> >         private ClickListener dismissListener;
> >         private Button dismissButton;
>
> >     void addDataToFlexTable(final LocationsInfoDTO locationsInfoDTO)
> >     {
> >         int row = 0;
>
> >         for(final Info info : locationsInfoDTO.getInfos()){
>
> >                 dismissButton = new Button("Dismiss", dismissListener);
>
> >                 this.setWidget(row, 1, new Label(info.getLocationCode()));
> >                 this.setWidget(row, 2, new Label(info.getClientName()));
> >                 this.setWidget(row, 3, dismissButton);
>
> >                 dismissListener = new ClickListener() {
> >                                 public void onClick(Widget sender) {
>
> > GwtAlertServicesDelegate.getService().removeLocationInfoFromSession(info,
> >                                                         new 
> > AsyncCallback<LocationsInfoDTO>() {
> >                                                                 @Override
> >                                                                 public void 
> > onFailure(Throwable arg0) {}
> >                                                                 @Override
> >                                                                 public void 
> > onSuccess(LocationsInfoDTO arg0) {}
> >                                                     }
> >                                         );
> >                                 }
> >                         };
> >                 row++;
> >         }
> >     }
>
> > }

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to