`
429537044
  • 浏览: 47084 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

列表中的记录上下移动

阅读更多

 最近有一个需求是实现一个表格中记录的上下移动如下图所示

选择其中一项,点击上下移动则则可以对记录上下移动。

这个项目使用的是jsf+hibernate+spring实现的

liteBean中的内容:

/**
	 * 上移一条记录
	 */
	@Action(id = "up", event = "onclick")
	public void up() {
		Object[] objs = grid.getSelectedValues();
		if (objs == null || objs.length == 0) {
			Browser.execClientScript("window.alert('请选择一条记录!');");
			return;
		}
		selectedRowData = objs[0];
		DictionaryItem dicItem = (DictionaryItem) selectedRowData;
		if (null != dictionaryItemService.upExchange(dicItem)) {
			Browser.alert("第一条不能再上移");
		}
		reload();
	}

	/**
	 * 下移一条记录
	 */
	@Action(id = "down", event = "onclick")
	public void down() {
		Object[] objs = grid.getSelectedValues();
		if (objs == null || objs.length == 0) {
			Browser.execClientScript("window.alert('请选择一条记录!');");
			return;
		}
		selectedRowData = objs[0];
		DictionaryItem dicItem = (DictionaryItem) selectedRowData;
		if (null != dictionaryItemService.downExchange(dicItem)) {
			Browser.alert("最后一条不能再下移");
		}
		reload();
	}

 在service层得代码:

@Override
	public String upExchange(DictionaryItem dicItem) {

		long order = dicItem.getOrder();
		DictionaryItem nextDicItem = dictionaryItemDao.nextItem(order);
		if(nextDicItem!=null){
			long nextOrder = nextDicItem.getOrder();

			long number = order;
			order = nextOrder;
			nextOrder = number;
			
			dicItem.setOrder(order);
			nextDicItem.setOrder(nextOrder);
			
			modify(dicItem);
			modify(nextDicItem);
			
			return null;
		}
		return EXCHANG_ERROR;
	}

	@Override
	public String downExchange(DictionaryItem dicItem) {
		long order = dicItem.getOrder();
		DictionaryItem preDicItem = dictionaryItemDao.preItem(order);
		if(preDicItem!=null){
			long nextOrder = preDicItem.getOrder();

			long number = order;
			order = nextOrder;
			nextOrder = number;
			
			dicItem.setOrder(order);
			preDicItem.setOrder(nextOrder);
			
			modify(dicItem);
			modify(preDicItem);
			
			return null;
		}
		return EXCHANG_ERROR;
	}

 

dao层得代码

@Override
	public DictionaryItem nextItem(long order) {
		
		final long nextOrder = order;
		final String sql = "from DictionaryItem dictionaryItem where dictionaryItem.order>? order by dictionaryItem.order asc";

		return (DictionaryItem) this.getHibernateTemplate().execute(
				new HibernateCallback() {
					@Override
					public DictionaryItem doInHibernate(Session session)
							throws HibernateException, SQLException {
						DictionaryItem obj = (DictionaryItem) session
								.createQuery(sql).setLong(0, nextOrder)
								.setMaxResults(1).uniqueResult();

						return obj;
					}
				});
	}

	@Override
	public DictionaryItem preItem(long order) {
		
		final long preOrder = order;
		final String sql = "from DictionaryItem dictionaryItem where dictionaryItem.order<? order by dictionaryItem.order desc";

		return (DictionaryItem) this.getHibernateTemplate().execute(
				new HibernateCallback() {
					@Override
					public DictionaryItem doInHibernate(Session session)
							throws HibernateException, SQLException {
						DictionaryItem obj = (DictionaryItem) session
								.createQuery(sql).setLong(0, preOrder)
								.setMaxResults(1).uniqueResult();
						return obj;
					}
				});
	}

 

  • 大小: 24.6 KB
分享到:
评论

相关推荐

    Javascript实现数组中的元素上下移动

    在写项目的时候,要实现一个数组记录上下移动的示例。写起来也没有没麻烦,无非是交换数组元素。最终实现代码如下,比较重要的是那个函数。 示例代码: // 交换数组元素 var swapItems = function(arr, index1, ...

    实例QT程序 —— QTableView 表格行的上下移动

    实例QT程序 —— QTableView 表格行的上下移动 编译可以直接运行。 运行环境WIN10 Qt5.9.7 。 资源为源码压缩包: TableViewMoveRow.rar 相关文章链接如下: ...

    DBGrid moved up and down the line of mobile recording.

    DBGrid moved up and down the line of mobile recording. dbgrid 实现上下移动记录的行移动.

    delphi cxgrid 拖放移动记录 交换行记录

    cxgrid 拖放移动记录,cxgrid 拖放,cxgrid 拖动记录,cxgrid 鼠标拖动记录 这是cxgrid开发公司回复客户时所发送的源码项目,用于实现鼠标拖动记录,改变记录在表格中的位置,所以直接编译运行,供大家借鉴

    cxGrid数据行移动

    代码已示例出cxGrid数据行是如何移动,即将整行记录上移或下移,功能完整,值得拥有。

    Delphi中的DBGrid如何实现使用鼠标滚轮上下

    Delphi中的DBGrid如何实现使用鼠标滚轮上下:首先,往窗体上加入一个ApplicationEvents组件,此组件位于additional选项卡内。

    linux学习记录

    more 和 less 都是从文件文件开头开始,more 可以一次一页浏览文件内容 less 可以利用键盘上的page up 和page down 进行浏览上下滚动 权限 为abc文件设置权限 -rwxrw-r-- -表示文件 后面三个一组,分为三组 rwx...

    一款用于在自己手机上存储自己的账号密码的软件,完全单机使用,永久保存,防止忘记账号密码,可以记录自己所有的账号密码

    软件仅含一个加号按钮用于操作此软件的功能,包括(添加记录,添加分组,刷新数据,重置密码,模糊搜索),长按分组可以启动分组管理弹窗,可以对分组进行(改名,删除,上下移动显示顺序)。添加记录可以将账号和...

    easyUI datagrid 行上移,下移,置顶,置底的方法

    easyUI datagrid 行上移,下移,置顶,置底的方法

    c语言编写的贪吃蛇小游戏

    在下面给出的代码中,已经将蛇的速度调整到了一个合适的位置,这样可以确保蛇的移动速度不会过快,同时也能够使得蛇的身体在动画中完整显示出来。大家可以根据自己的需求,进一步调整代码中的速度参数,以达到自己...

    基于C++实现控制台植物大战僵尸游戏【100012893】

    对于设计要求中僵尸的特殊移动(撑杆僵尸跳跃和吃到大蒜换行),可以设置一个单独的变量记录特殊移动。 投石僵尸的篮球可以继承子弹类,修改移动方向为向左即可。 每个地块有多个僵尸、商店上下左右选择植物等已...

    基于Python的2048命令行小游戏

    游戏的初始状态:生成4x4的网格布局(美化后的二维列表),在网格上随机放置两个数字2,提示用户进行操作(上下左右移动或者放弃游戏)。 移动操作会把网格上现有的数字整体移动到碰墙(边界) ,同时根据移动方向,...

    2048游戏(C#源码)

    4、一次移动操作结束后,如果有方格移动了位置,则在所有值为0的方格中随机的分配一个2/4的值。 5、所有方格值不为0且上下、左右相邻的方格都不相等,则游戏结束。 6、2出现的概率为90%,4出现的概率为为10%。 修改...

    CRMEB Pro商城系统多门店收银台,预售、电子卡密、虚拟产品PRO_v2.1.01_to_v2.1.1(0224)(更新包)

    5.新增定时上下架 6.新增预售功能 7.新增会员专属商品开关 8.新增直播分享功能 9.新增提现方式开关 10.新增一键同步云存储功能 优化: 1.优化商品添加 2.优化商品列表 3.优化后台富文本编辑器 4.优化九宫格抽奖添加...

    基于Android游戏小暴龙

    即上下移动。游戏中还会有静态敌人云、动态的食物、音乐、火箭、鸡肉出现,玩家可以控制小暴龙来躲避敌人或者获取食物,当小暴龙碰到敌人就会失去一条生命;当小暴龙碰到食物时,就会获得一条生命;当小暴龙碰到音乐...

    python课程设计-小游戏

    它是将一条小龙放在封闭的空间里面,空间里面会随机出现不同分值的食物,通过按键盘wsda控制蛇向上下左右四个方向移动,龙头碰到食物,则食物被吃掉,龙的身体变长一节,同时记录该食物的分值,然后就会再一次出现...

    c++面向对象课程设计(源码+报告)-贪吃蛇(qt6\c++)

    1. 可以通过键盘中的上下左右控制贪吃蛇移动的方向 2. “START”按钮和“STOP”按钮控制游戏的开始和暂停 3. SCORE栏记录得分 4. 将贪吃蛇的运动区域和按键的功能区域分开 6. 界面美化 报告内容包括: 一、课设...

    Java拼图游戏实训(源代码+可运行Jar包+实训报告)

    游戏可以通过对图片文件的读取和加载,从多张图片中选择来进行拼图游戏,通过设置图像块的个数来实现对游戏难易度的调整,最后将游戏完成后所用时间和步数记录到游戏记录中,方便用户查看游戏记录。

    基于汇编语言实现的数字系统的吃豆人游戏

    玩家可以通过PS2键盘操纵小精灵(用C表示)在分布着大量不同颜色的豆子和红色炸弹的地图中上下左右移动,吃下不同颜色的豆子可以获得不同分数,吃到炸弹则小精灵死亡,本轮游戏结束,游戏自动重新开始。屏幕最上方...

Global site tag (gtag.js) - Google Analytics