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.
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(); } }
Comment