-
12 Mar 2012 2:54 PM #1
Reorder GroupingStore DND - Malfunction
Reorder GroupingStore DND - Malfunction
I have a simple grouping store with DND. When I attempt to reorder the grouping store with a DND in the same group it appears to malfunction and does not drop in the correct location. Here is a working example of the problem within a single group. Try to drag item on the last row to a higher position on the Grid. If you remove the grouping view all together (ie setView), the DND works correctly. (GXT 2.2.4)
Code:import com.extjs.gxt.ui.client.widget.Composite; import com.extjs.gxt.ui.client.widget.ContentPanel; import com.extjs.gxt.ui.client.widget.layout.AnchorLayout; import com.extjs.gxt.ui.client.widget.grid.Grid; import com.extjs.gxt.ui.client.widget.grid.GridGroupRenderer; import com.extjs.gxt.ui.client.widget.grid.GroupColumnData; import com.extjs.gxt.ui.client.widget.grid.GroupingView; import com.extjs.gxt.ui.client.Style.SelectionMode; import com.extjs.gxt.ui.client.data.BeanModel; import com.extjs.gxt.ui.client.data.BeanModelFactory; import com.extjs.gxt.ui.client.data.BeanModelLookup; import com.extjs.gxt.ui.client.data.BeanModelTag; import com.extjs.gxt.ui.client.dnd.GridDragSource; import com.extjs.gxt.ui.client.dnd.GridDropTarget; import com.extjs.gxt.ui.client.dnd.DND.Feedback; import com.extjs.gxt.ui.client.event.DNDEvent; import com.extjs.gxt.ui.client.event.DNDListener; import com.extjs.gxt.ui.client.store.GroupingStore; import com.extjs.gxt.ui.client.widget.grid.ColumnModel; import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; import com.extjs.gxt.ui.client.widget.layout.AnchorData; import java.util.ArrayList; import java.util.List; public class ReorderGroupingStore extends Composite { private Grid<BeanModel> grid; private GroupingStore<BeanModel> groupingStore; private BeanModelFactory factory = BeanModelLookup.get().getFactory(MyRecord.class); public ReorderGroupingStore() { { ContentPanel contentPanel = new ContentPanel(); contentPanel.setHeading("contentPanel"); contentPanel.setCollapsible(true); contentPanel.setLayout(new AnchorLayout()); { List<ColumnConfig> configs = new ArrayList<ColumnConfig>(); { ColumnConfig column = new ColumnConfig(); column.setMenuDisabled(true); column.setSortable(false); column.setResizable(false); column.setId("name"); column.setWidth(200); configs.add(column); } { ColumnConfig column = new ColumnConfig(); column.setMenuDisabled(true); column.setSortable(false); column.setResizable(false); column.setId("category"); column.setWidth(50); configs.add(column); } ColumnModel cm = new ColumnModel(configs); groupingStore = new GroupingStore<BeanModel>(); groupingStore.groupBy("category", true); GroupingView view = new GroupingView(); view.setShowGroupedColumn(false); view.setForceFit(true); view.setGroupRenderer(new GridGroupRenderer() { public String render(GroupColumnData data) { return data.group; } }); grid = new Grid(groupingStore, cm); grid.setView(view); grid.setHideHeaders(true); grid.setStripeRows(true); grid.setTrackMouseOver(true); grid.setAutoExpandColumn("name"); grid.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); grid.setBorders(true); grid.setId("grid"); GridDragSource source = new GridDragSource(grid); GridDropTarget target = new GridDropTarget(grid); target.addDNDListener(new DNDListener() { @Override public void dragDrop(DNDEvent e) { } }); target.setAllowSelfAsSource(true); target.setFeedback(Feedback.INSERT); contentPanel.add(grid, new AnchorData("100%")); grid.setBorders(true); } loadData(); initComponent(contentPanel); } } public void loadData(){ MyRecord myRecord1 = new MyRecord("Paul", "Shipping"); BeanModel model1 = factory.createModel(myRecord1); groupingStore.add(model1); MyRecord myRecord2 = new MyRecord("Joe", "Shipping"); BeanModel model2 = factory.createModel(myRecord2); groupingStore.add(model2); MyRecord myRecord3 = new MyRecord("Jim", "Shipping"); BeanModel model3 = factory.createModel(myRecord3); groupingStore.add(model3); MyRecord myRecord4 = new MyRecord("Mike", "Shipping"); BeanModel model4 = factory.createModel(myRecord4); groupingStore.add(model4); MyRecord myRecord5 = new MyRecord("Bill", "Shipping"); BeanModel model5 = factory.createModel(myRecord5); groupingStore.add(model5); } public class MyRecord implements BeanModelTag { private String name; private String category; public MyRecord(){ } public MyRecord(String name, String category){ this.name = name; this.category = category; } public String getCategory() { return category; } public void setCategory(String category) { this.category = category; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Thank you for reporting this bug. We will make it our priority to review this report.


Reply With Quote