我有一个View,我在两个ListGrid-s之间拖放工作,拖动几条记录后,我点击“保存”按钮将它们保存到POJO类型对象。
当我再次访问该视图时,它调用方法loadGrid
从POJO中提取这些值并将它们添加回之前拖动到的ListGrid
,这样他们就可以看到他们之前已经添加了,但是当我再次拖放时,它允许我添加相同的主键,在ListGrid中创建重复记录。
我怎样才能让它看到这些记录一样?主键是相同的,类型是相同的,不确定它可能是什么......
我正在使用transferSelectedData
将新权限添加到指定的列表网格和setPreventDuplicates(true)
。
ListGrid avPrivGrid = null;
ListGrid assPriv = null;
TransferImgButton but = null;
avPrivGrid = new ListGrid();
PrivilegesDataSource privDataSource = new PrivilegesDataSource();
avPrivGrid.setDataSource(privDataSource);
avPrivGrid.setAutoFetchData(false);
ListGridField propUsername = new ListGridField("privName", "Available Priv");
propUsername.setType(ListGridFieldType.TEXT);
avPrivGrid.setFields(propUsername);
assPriv = new ListGrid();
assPriv.setCanAcceptDroppedRecords(true);
assPriv.setCanEdit(false);
assPriv.setAutoFetchData(false);
assPriv.setPreventDuplicates(true);
assPriv.setDuplicateDragMessage("Can not add duplicates!");
assPriv.setCanSelectAll(false);
assPriv.setAlternateRecordStyles(true);
assPriv.setLeaveScrollbarGap(true);
assPriv.setMinHeight(100);
ListGridField propUserN = new ListGridField("privName", "Assigned Priv");
propUserN.setWidth("30%");
propUserN.setType(ListGridFieldType.TEXT);
ListGridField propId = new ListGridField("privId");
propId.setWidth("30%");
propId.setType(ListGridFieldType.TEXT);
propId.setHidden(true);
assPriv.setFields(propId, propUserN);
but = new TransferImgButton(TransferImgButton.RIGHT);
but.addClickHandler(new ClickHandler()
{
public void onClick(ClickEvent event)
{
//Duplicate checking will happen automagially!
assPriv.transferSelectedData(avPrivGrid);
}
});
avPrivGrid.fetchData();
答案 0 :(得分:1)
检查ID字段是否设置为数据源中的主键。
[IdField].setPrimaryKey(true);
答案 1 :(得分:1)
我有同样的问题,我有[IdField] .setPrimaryKey(true); 到目前为止,我的结论是只要有数据绑定记录列表,setDragDataAction(DragDataAction.MOVE)就无法运行。如果它不是数据绑定,那就可以了。