列表操作

Posted 杨晨光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表操作相关的知识,希望对你有一定的参考价值。

最近在项目中,需要对列表进行操作



进行上移&下移操作

JSP

	<!--显示数据列表-->
        <tbody id="TableData" class="dataContainer" datakey="forumList">
        <s:iterator value="#forumList" status="status">
			<tr class="TableDetail1 template">
				<td>$name </td>
				<td>$description </td>
				<td>
				<span style="white-space:pre">	</span><s:a action="forumManage_delete?id=%id" onClick="return delConfirm()" >删除</s:a>
					<s:a action="forumManage_editUI?id=%id" >修改</s:a>
<span style="white-space:pre">					</span><s:a action="forumManage_moveUp?id=%id" >上移</s:a>
					<s:a action="forumManage_moveDown?id=%id" >下移</s:a> 	
				</td>
			</tr>
			</s:iterator>
        </tbody>

Action

@Controller
@Scope("prototype")
public class ForumManageAction extends BaseAction<Forum>

<span style="white-space:pre">	</span>//其他代码省略
	
	//上移
	public String moveUp() throws Exception
	
		forumService.moveUp(model.getId());
		return "toList";
	
	
	//下移
	public String moveDown() throws Exception
	
		forumService.moveDown(model.getId());
		return "toList";	
	

Service实现

@Service
@Transactional
@SuppressWarnings("unchecked")
public class ForumServiceImpl extends DaoSupportImpl<Forum> implements ForumService

<span style="white-space:pre">	</span>//重写findAll方法(根据position字段排序)
	@Override
	public List<Forum> findAll()
	
		return getSession().createQuery(
				"From Forum f ORDER BY f.position")
				.list();
	
	
	@Override
	public void moveDown(Long id)
	
		//找出相关的Forum 
		Forum forum = getById(id);         //当前要移动的Forum
		Forum other  = (Forum)getSession().createQuery(
								"FROM Forum f WHERE f.position>? ORDER BY f.position ASC ")
								.setParameter(0, forum.getPosition())
								.setFirstResult(0)
								.setMaxResults(1)
								.uniqueResult();						//下面的那个FOrum
		
		//最下面的不能下移
		if (other == null)
		
			return;
		
		
		//交换Position的位置
		int temp = forum.getPosition();		//设置一个中间值
		forum.setPosition(other.getPosition());
		other.setPosition(temp);
		//保存到数据库中
		getSession().update(other);
		getSession().update(forum);
	

	@Override
	public void moveUp(Long id)
	
		//找出相关的Forum 
		Forum forum = getById(id);         //当前要移动的Forum
		Forum other  = (Forum)getSession().createQuery(
								"FROM Forum f WHERE f.position<? ORDER BY f.position DESC ")
								.setParameter(0, forum.getPosition())
								.setFirstResult(0)
								.setMaxResults(1)
								.uniqueResult();						//上面的那个FOrum
		
		//最上面的不能上移
		if (other == null)
		
			return;
		
		//交换Position的位置
		int temp = forum.getPosition();		//设置一个中间值
		forum.setPosition(other.getPosition());
		other.setPosition(temp);
		//保存到数据库中
		getSession().update(other);
		getSession().update(forum);
	


增强用户体验,不能点的按钮需要变灰


	<!--显示数据列表-->
        <tbody id="TableData" class="dataContainer" datakey="forumList">
        <s:iterator value="#forumList" status="status">
			<tr class="TableDetail1 template">
				<td>$name </td>
				<td>$description </td>
				<td>
					<s:a action="forumManage_delete?id=%id" onClick="return delConfirm()" >删除</s:a>
					<s:a action="forumManage_editUI?id=%id" >修改</s:a>
					<!--最上面的不能上移  -->
					<s:if test="#status.first">
						<span class="disabled">上移</span>
					</s:if>
					<s:else>
						<s:a action="forumManage_moveUp?id=%id" >上移</s:a>
					</s:else>
					<!-- 最下面的不能下移 -->
					<s:if test="#status.last ">
						<span class="disabled">下移</span>
					</s:if>
					<s:else>
						<s:a action="forumManage_moveDown?id=%id" >下移</s:a> 
					</s:else>	
				</td>
			</tr>
			</s:iterator>
        </tbody>

增加Status属性,可以查看源码IteratorStatus


 * <ul>
 * <li>index: current iteration index, starts on 0 and increments in one on every iteration</li>
 * <li>count: iterations so far, starts on 1. count is always index + 1</li>
 * <li>first: true if index == 0</li>
 * <li>even: true if (index + 1) % 2 == 0</li>
 * <li>last: true if current iteration is the last iteration</li> 
 * <li>odd: true if (index + 1) % 2 == 1</li>
 * </ul>


以上是关于列表操作的主要内容,如果未能解决你的问题,请参考以下文章

列表元组操作

python列表操作大全

python之列表操作

Python学习——列表操作全透析

Python列表操作方法

(PHP)redis list(列表)操作