在嵌套的dataTable中拖放
我正在使用primeface 4.0。
primeface 展示仅显示如何将draggable
到droppable
。 但是,从来没有提到过如何拖拽那个draggable
拖车。
我想创建一个dataTable:
- 每个
td
都有一个droppable
放置的面板,可以将多个draggable
面板拉入和拉出 。 - 这个dataTable的“保存数据”的后bean对象,我假设如果dataTable是2 * 2,则后端bean中将有4个List,每个都存储相应
droppable
区域的draggable
对象列表。
有点像p:schedule
的简单版本,允许事件在单元格之间拖放。
我的努力:
-
我设法使一些function工作,就像拖入一个
droppable
-
但我不能 删除拖动的
draggable
因为p:draggable
没有ajax事件drag
将数据传递给后端bean,因为我在p:droppable
drop
事件。(有一种方法可以使用JQuery draggable eventstart
和stop
将col和row num传递给后面的bean,但我不确定这是一个好方法去) -
我不认为我的实现是正确的方法,因为有一些奇怪的错误 ,有时我从
ddEvent.getData()
获得的拖动对象不正确。 (我猜它与p:droppable
的唯一dataSource有关。问题1469 )
更新:我认为主要问题是p:droppable
只绑定一个数据源,所以ddEvent.getData()
总是从绑定数据源获取’对象’,我的问题是我有多个可放置区域,每个都需要绑定多个数据源 。
。 太糟糕了我无法发布截图…
这是我的代码:xthml:Shifts …
回豆:
public List getDailyShift(String eid, Date date) { return this.tmpSchedule.getShifts(eid).get(date); } public void onShiftDrop(DragDropEvent ddEvent) { ShiftDto shift = ((ShiftDto) ddEvent.getData()); Date weekday = (Date) ddEvent.getComponent().getAttributes() .get("weekday"); String eid = (String) ddEvent.getComponent().getAttributes().get("eid"); System.out.println("onShiftDrop: " + shift); System.out.println("dropedDate: " + weekday); System.out.println("dropedEmployee: " + eid); this.tmpSchedule.addShift(eid, weekday, shift); }
tmpSchedule
只是一个像容器一样的地图,其中包含每位员工的每周class次。
您始终可以将Drag-Drop从一个容器拖动到另一个容器。
在p:table或p:面板中说一个可拖动的行在ap:panelgrid(A面)到Droppable p:outPanel(B面)你将维护两个List,一个用于A侧,另一个用于B侧。
并将A端设置为可拖放,将B端设置为可拖动以具有循环拖放行为(两者将充当彼此可放置标记的数据源)并利用ddEvent.getData在对象列表中添加和删除控制器方面。
对于上述要求,您可以实现panelGrid并具有这样的多个关系。
要么
使用dragabblerows =“true”和draggableColumns =“true”来使用P:table参数中的行和列。 :p
- 使用网格恢复’无效’不会返回到jQuery UI Draggable的起始位置
- 如何在第一个实例完成后在jquery中复制可拖动/可放置的实例
- jquery droppable – >避免多次丢弃同一个对象
- Fullcalendar:draggable对象拒绝fullcalendar为droppable,即使fullcalendar接受drop
- 优化jQuery UI拖放计划网格
- 如何在不实际拖放的情况下使用jQuery UI Droppable触发Drop事件?
- jQuery droppables – 在drop上更改元素
- jQuery可以使用droppable进行排序
- 行数据消失在Datatables上?