Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    ListGrid.addData(record)/removeData(record) vs transferSelectedData() in 6.0

    Hello,

    we discovered a difference in ListGrid behavior between SmartGWT 5.0-p20141209 and 6.0-p20170329. The system was coded to use ListGrid.addData(record)/ListGrid.removeData(record) to transfer the record from one ListGrid into another and those calls are no longer produce any action in 6.0. Both ListGrids stay visually intact. ListGrid.transferSelectedData() works as expected. What would be the recommended way to deal with 2 years old code?
    Here's a test case that demonstrates the difference. We were expecting "right" and "down" buttons to produce the same result.
    Code:
     package com.smartgwt.sample.client;
       
      import com.smartgwt.client.data.Record;
      import com.smartgwt.client.types.Alignment;  
      import com.smartgwt.client.types.DragDataAction;  
      import com.smartgwt.client.types.VerticalAlignment;  
      import com.smartgwt.client.types.ListGridFieldType;  
      import [U]com.smartgwt.client.widgets.Canvas[/U];  
      import com.smartgwt.client.widgets.layout.HStack;  
      import com.smartgwt.client.widgets.layout.VStack;  
      import com.smartgwt.client.widgets.TransferImgButton;  
      import com.smartgwt.client.widgets.events.ClickEvent;  
      import com.smartgwt.client.widgets.events.ClickHandler;  
      import com.smartgwt.client.widgets.grid.ListGrid;  
      import com.smartgwt.client.widgets.grid.ListGridField;
      import com.google.gwt.core.client.EntryPoint;  
       
      /**
       * Entry point classes define <code>onModuleLoad()</code>.
       */
      public class BuiltInDS implements EntryPoint {
          public void onModuleLoad() {  
                
              HStack hStack = new HStack(10);  
              hStack.setHeight(160);  
        
              final ListGrid countryGrid1 = new ListGrid();  
              countryGrid1.setWidth(300);  
              countryGrid1.setHeight(224);  
              countryGrid1.setID("countryList1");  
              countryGrid1.setShowAllRecords(true);  
              countryGrid1.setCanReorderRecords(true);  
              countryGrid1.setCanDragRecordsOut(true);  
              countryGrid1.setCanAcceptDroppedRecords(true);  
              countryGrid1.setDragDataAction(DragDataAction.MOVE);  
        
              ListGridField countryCodeField = new ListGridField("countryCode", "Flag", 50);  
              countryCodeField.setAlign(Alignment.CENTER);  
              countryCodeField.setType(ListGridFieldType.IMAGE);  
              countryCodeField.setImageURLPrefix("flags/16/");  
              countryCodeField.setImageURLSuffix(".png");  
        
              ListGridField nameField = new ListGridField("countryName", "Country");  
              ListGridField capitalField = new ListGridField("capital", "Capital");  
        
              countryGrid1.setFields(countryCodeField, nameField, capitalField);  
              countryGrid1.setData(CountrySampleData.getRecords());  
              hStack.addMember(countryGrid1);  
        
              final ListGrid countryGrid2 = new ListGrid();  
              countryGrid2.setWidth(200);  
              countryGrid2.setHeight(224);  
              countryGrid2.setLeft(350);  
              countryGrid2.setID("countryList2");  
              countryGrid2.setShowAllRecords(true);  
              countryGrid2.setEmptyMessage("Drop Rows Here");  
              countryGrid2.setCanReorderFields(true);  
              countryGrid2.setCanDragRecordsOut(true);  
              countryGrid2.setCanAcceptDroppedRecords(true);  
              countryGrid2.setDragDataAction(DragDataAction.MOVE);  
              countryGrid2.setFields(countryCodeField, nameField);  
        
              VStack vStack = new VStack(3);  
              vStack.setWidth(20);  
              vStack.setLayoutAlign(VerticalAlignment.CENTER);  
              vStack.setHeight(74);  
        
              TransferImgButton right = new TransferImgButton(TransferImgButton.RIGHT);  
              right.addClickHandler(new ClickHandler() {  
                  public void onClick(ClickEvent event) {  
                      countryGrid2.transferSelectedData(countryGrid1);  
                  }  
              });  
        
              TransferImgButton left = new TransferImgButton(TransferImgButton.LEFT);  
              left.addClickHandler(new ClickHandler() {  
                  public void onClick(ClickEvent event) {  
                      countryGrid1.transferSelectedData(countryGrid2);  
                  }  
              });  
              
              TransferImgButton down = new TransferImgButton(TransferImgButton.DOWN);  
              right.addClickHandler(new ClickHandler() {  
                  public void onClick(ClickEvent event) {  
                      Record[] records = countryGrid1.getSelectedRecords();
                      for (Record record : records) {
                          countryGrid2.addData(record);
                          countryGrid1.removeData(record);
                      }
      //                countryGrid2.transferSelectedData(countryGrid1);  
                  }  
              });  
              vStack.addMember(right);  
              vStack.addMember(left);  
              vStack.addMember(down);
        
              hStack.addMember(vStack);  
        
              hStack.addMember(countryGrid2);  
        
              hStack.draw();  
          }  
      }

    #2
    You have a bug in your code:

    Code:
    TransferImgButton down = new TransferImgButton(TransferImgButton.DOWN);  
    right.addClickHandler(new ClickHandler() {
    Presumably, you should be adding the handler to down, not right, which already has a click handler installed. In fact, when we fix this, your sample seems to work fine. There doesn't appear to be any problem with our Framework.

    Comment


      #3
      It was a typo. Thank you!

      Comment

      Working...
      X