`
429537044
  • 浏览: 48876 次
  • 性别: 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
分享到:
评论

相关推荐

    jQuery实现列表上下移动置顶+带入数据库文件

    在本项目中,"jQuery实现列表上下移动置顶+带入数据库文件" 是一个适合初学者的教程,它教你如何使用jQuery库来实现一个功能,允许用户在列表中上下移动条目并将其置顶,同时将这些操作同步到数据库中。这个教程包含...

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

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

    DBGrid moved up and down the line of mobile recording.

    在DBGrid中,上下移动记录的行移动功能是一项重要的用户体验设计,它使得用户能够轻松地浏览大量数据。这个功能通常通过键盘的上下箭头键或者鼠标点击行号或行间的空白区域实现。当用户按下上箭头键时,当前选中的...

    图片移动 C#编写 一窗体内实现图片上下左右的移动

    4. **左右上下移动**: - 可以通过按键事件或定时器事件来控制图片移动。比如,当按下键盘上的方向键时,相应地更新图片框的位置。 - 例如,对于向上移动,可以这样设置:`pictureBox1.Location = new Point...

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

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

    js操作table行的上下移动,置顶置底

    本文将深入探讨如何使用JavaScript实现表格行的上下移动、置顶和置底功能,以及相关辅助操作。 首先,`js操作table行的上下移动,置顶置底`这个主题涉及到的主要技术是DOM操作,事件监听和数组处理。DOM(Document ...

    移动端列表长按上下拖动排序

    - **动画效果**:为了提供更好的用户体验,可以在拖动过程中添加平滑的过渡动画,使列表项的移动看起来更自然。 - **设备兼容性**:虽然主要目标是Android和iOS,但应确保代码具有良好的浏览器兼容性,考虑到不同...

    cxGrid数据行移动

    - 数据行在Objects列表中的索引代表了它们在网格中的位置。通过`Objects.IndexOf`方法可以获取特定数据行的索引,通过`Objects.Move`方法可以改变数据行的位置。 2. **数据行的移动操作**: - 上移数据行:如果要...

    JS控制HTMLDOM表格行上下移动

    标题中的“JS控制HTML DOM表格行上下移动”指的是在网页中使用JavaScript操作DOM(Document Object Model)元素,特别是HTML表格的行(tr)进行上下移动的功能。这种功能常见于数据管理界面,允许用户通过交互调整...

    判断鼠标上下左右移动.rar

    在这个项目中,我们主要关注如何判断鼠标上下左右移动,并将这些信号应用于智能小车的控制。 首先,我们需要导入`pyautogui`库。`pyautogui`库中的`position()`函数可以实时获取鼠标的当前位置。例如: ```python ...

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

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

    显示4字点阵左右上下移动

    在本项目中,我们看到的"显示4字点阵左右上下移动"是指一个能够控制4个汉字字符的点阵显示器,具备动态移动效果,用户可以通过按键来切换显示的内容,比如时间(时钟)。这个功能的实现涉及了硬件电路设计、微控制器...

    判断鼠标上下左右移动状态

    在IT行业中,尤其是在游戏开发、用户交互界面设计或者数据分析等领域,了解鼠标移动状态是非常重要的。这个任务涉及到如何通过编程来捕获和分析鼠标的运动,从而实现特定的功能或提供更丰富的用户体验。以下将详细...

    c# 界面移动记录

    在"界面移动记录"的上下文中,我们需要关注的是`MouseDown`、`MouseMove`和`MouseUp`事件,这三个事件组合起来可以实现元素的拖放功能。当用户按下鼠标按钮时触发`MouseDown`,在鼠标移动时触发`MouseMove`,最后在...

    EasyUI中datagrid 分页,僧删改查,上下移动数据.net案例

    本文将深入探讨标题中的"EasyUI中datagrid分页,增删改查,上下移动数据"的.NET案例。 **EasyUI的datagrid组件**: EasyUI的datagrid是一个表格控件,它具有数据展示、排序、过滤、分页等功能,非常适合用于数据...

    php上下移动排序

    在PHP中,上下移动排序通常指的是对数据列表进行升序或降序排列,并允许用户根据需求上移或下移特定元素。这种功能常见于管理界面,例如调整文章、任务或菜单项的顺序。这里我们将详细探讨如何实现这个功能,以及...

    C# windows datagridview表格行上下拖动示例

    总之,实现`DataGridView`行上下拖动功能的关键在于监听鼠标事件,并在事件处理器中调整行的顺序。通过这样的方式,我们可以为用户提供更直观和友好的交互体验。在实际开发中,可以进一步完善这个功能,例如添加动画...

    dbgrideh 滚动选定记录不改变

    DBGridEh让选择的记录不随垂直滚动条滚动而移动 使用Delphi的人都知道,Delphi中的Grid与PB或者其他的Grid有区别,就是在滚动时记录指针会跟着改变。能不能做到像PB中的DataWindow一样滚动时选定记录不改变呢?

    电信设备-上下移动及旋转为一体的按钮.zip

    在电信设备设计中,"上下移动及旋转为一体的按钮"是一种集成多种操作功能的创新交互元件。这种按钮的设计理念旨在提供更高效、直观的用户界面,适用于各种电信设备,如手机、路由器、调制解调器等。下面我们将深入...

    电信设备-CIT上下移动门开度传感器装置.zip

    综上所述,CIT上下移动门开度传感器装置在电信设备中扮演着不可或缺的角色,它的技术细节和功能特性体现了现代通信设施对安全性和智能化的高要求。了解并掌握这种装置的相关知识,对于电信行业的从业者来说,不仅能...

Global site tag (gtag.js) - Google Analytics