ListGrid在加载时添加记录,然后再次拖动记录后创建的重复项



我有一个View,在那里我可以在2个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();

检查ID字段是否设置为数据源中的主键。

[IdField].setPrimaryKey(true);

我有同样的问题,我有[IdField].setPrimaryKey(true);到目前为止,我的结论是只要有记录的数据绑定列表,setDragDataAction(DragDataAction.MOVE)就不起作用。如果它没有数据绑定,它就可以工作。

最新更新