列表(卡片视图)数据前移后移原创
金蝶云社区-野生的指针
野生的指针
5人赞赏了该文章 1126次浏览 未经作者许可,禁止转载编辑于2021年11月01日 15:11:33

1,需求背景:在列表的卡片视图中,每个卡片需要有前移后移按钮,可以将相邻两个数据移动交换位置

2,实现方案:可以在单据加一个整数字段,作为排序字段,然后在列表上用按照该字段去排序,然后移动的时候修改该字段的值去移动。

3,具体实现:

     案例需求:

     卡片视图展示数据,每个卡片需要有前移后移功能,最前面的不能前移,最后面的不能后移,移动后,两个数据需要交换位置

      案例代码:

      第一步:在单据界面,添加一个整数字段作为排序字段,然后在保存之前,对排序字段赋值,第一张单据数据字段为1,第二张单据整数字段为2,依次下去。(也可以按照其他的要求给整数字段赋初始值)

      第二步:在列表界面,,先设置列表按照排序字段升序或者降序排列(本例是降序),再监听按钮(这里前移,后移是放的按钮),然后通过判断点击按钮的标识去判断前移操作还是后移操作,并且获取当前选择行的数据,将其排序字段和需要移动的数据的排序字段交换赋值。再刷新页面。

@Override
	public void registerListener(EventObject e) {
		// TODO Auto-generated method stub
		super.registerListener(e);
		Button button1 = this.getView().getControl("kdec_buttonap");
		button1.addClickListener(this);
		Button button2 = this.getView().getControl("kdec_buttonap1");
		button2.addClickListener(this);
	}

	@Override
	public void click(EventObject evt) {
		// TODO Auto-generated method stub
		super.click(evt);
		Button source = (Button) evt.getSource();
		String key = source.getKey();
		BillList billList = this.getControl("billlistap");
		ListSelectedRowCollection collection = billList.getSelectedRows();
		Long selectId = (Long) collection.get(0).getPrimaryKeyValue();
		QFilter qFilter = new QFilter("id", QCP.equals, selectId);
		DynamicObject dys = BusinessDataServiceHelper.loadSingle("kdec_partnerdemo", "id,kdec_sort",new QFilter[] { qFilter });
	        //排序字段
		int selectSort = dys.getInt("kdec_sort");
		DynamicObject[] dyObjects = BusinessDataServiceHelper.load("kdec_partnerdemo", "id", null);
		int count = dyObjects.length;
		if ("kdec_buttonap".equals(key) && selectSort != count) {
			QFilter qFilter2 = new QFilter("kdec_sort", QCP.equals, selectSort + 1);
			DynamicObject dys2 = BusinessDataServiceHelper.loadSingle("kdec_partnerdemo", "id,kdec_sort",new QFilter[] { qFilter2 });
			dys.set("kdec_sort", selectSort + 1);
			dys2.set("kdec_sort", selectSort);
			SaveServiceHelper.update(new DynamicObject[] { dys, dys2 });
		} else if ("kdec_buttonap1".equals(key) && selectSort != 1) {
			QFilter qFilter2 = new QFilter("kdec_sort", QCP.equals, selectSort - 1);
			DynamicObject dys2 = BusinessDataServiceHelper.loadSingle("kdec_partnerdemo", "id,kdec_sort",new QFilter[] { qFilter2 });
			dys.set("kdec_sort", selectSort - 1);
			dys2.set("kdec_sort", selectSort);
			SaveServiceHelper.update(new DynamicObject[] { dys, dys2 });
		}
		this.getView().updateView();
	}

4,版本号:BOS_V3.0.006.0

赞 5