Liferay6.2开发之使用Search-Container

一..SearchContainer的基本使用我就不讲了,这里主要讲讲RowChecker的使用,我们先看下效果


使用RowChecker的步骤

1.在<liferay-ui:search-container这个标签中添加属性 rowChecker="<%= new RowChecker(renderResponse) %>"

2.在<liferay-ui:search-container标签外添加<aui:form name="fm">包裹它.作用:为了后面取值

3.添加一个按钮用来获取多选框中已勾选的值,需要执行一段js,如下:

<aui:button cssClass="btn btn-danger" onClick='<%= renderResponse.getNamespace() + "delete();" %>' value="Delete" />
<aui:script>
Liferay.provide(
window,
'<portlet:namespace />delete',
function() {
var checkBoxValue = Liferay.Util.listCheckedExcept(document.<portlet:namespace />fm, "<portlet:namespace />allRowIds");
alert(checkBoxValue);
},
['liferay-util-list-fields']
);
</aui:script>

注意点:因为每一行的id是根据primarykey生成的,所以keyProperty="xxx"这个属性必须有,这个是service.xml中的实体id

<liferay-ui:search-container-row
className="com.skythinking.portlet.member.model.Member"
keyProperty="memberId" modelVar="member">

完整的view.jsp如下:

<%@page import="com.liferay.portal.kernel.dao.search.RowChecker"%>
<%@page
	import="com.skythinking.portlet.member.service.MemberLocalServiceUtil"%>
<%@page
	import="com.skythinking.portlet.member.service.MemberLocalService"%>
<%@page import="com.liferay.portal.kernel.util.ListUtil"%>
<%@page
	import="com.skythinking.portlet.member.service.persistence.MemberPersistenceImpl"%>
<%@page
	import="com.skythinking.portlet.member.service.persistence.MemberPersistence"%>
<%@page import="com.skythinking.portlet.member.model.Member"%>
<%@ include file="/html/common/init.jsp"%>
<%@ page contentType="text/html; charset=UTF-8"%>

<aui:form name="fm">
<liferay-ui:search-container emptyResultsMessage="没有任何数据,请添加!" delta="5" rowChecker="<%= new RowChecker(renderResponse) %>" >
	<liferay-ui:search-container-results>
		<%
			List<Member> tempResults = MemberLocalServiceUtil
							.getMembers(renderRequest);
					results = ListUtil.subList(tempResults,
							searchContainer.getStart(),
							searchContainer.getEnd());
					total = tempResults.size();
					pageContext.setAttribute("results", results);
					pageContext.setAttribute("total", total);
		%>
	</liferay-ui:search-container-results>
	
	<!-- modelVar="member" 添加了这个属性,才可以在el表达式中获取member的各种属性 -->
	<liferay-ui:search-container-row
		className="com.skythinking.portlet.member.model.Member"
		keyProperty="memberId" modelVar="member">
		<liferay-ui:search-container-column-text name="Id"
			property="memberId" />
		<liferay-ui:search-container-column-text name="会员名"
			property="memberName" />
		<liferay-ui:search-container-column-text name="联系电话"
			property="memberPhone" />
		<liferay-ui:search-container-column-text name="创建时间"
			property="createDateFormat" />
		<liferay-ui:search-container-column-text name="actions">


			<portlet:actionURL var="deleteUrl" name="delete">
				<portlet:param name="memberId" value="${member.memberId}" />
			</portlet:actionURL>
			<liferay-ui:icon-delete image="delete" url="${deleteUrl}" />

		</liferay-ui:search-container-column-text>
	</liferay-ui:search-container-row>

	<!-- 迭代标签 -->
	<liferay-ui:search-iterator />
</liferay-ui:search-container>
</aui:form>

<portlet:renderURL var="addUrl">
	<portlet:param name="mvcPath" value="/html/member/edit.jsp" />
</portlet:renderURL>

<aui:button cssClass="btn btn-primary" value="添加" href="${addUrl}" />

<aui:button cssClass="btn btn-danger" onClick='<%= renderResponse.getNamespace() + "delete();" %>' value="Delete" />
<aui:script>
	Liferay.provide(
	window,
	'<portlet:namespace />delete',
	function() {
	var checkBoxValue = Liferay.Util.listCheckedExcept(document.<portlet:namespace />fm, "<portlet:namespace />allRowIds");
	alert(checkBoxValue);
	},
	['liferay-util-list-fields']
	);
</aui:script>



如何进行表单的提交呢?请看下面的代码

<aui:button cssClass="btn btn-warning" value="编辑"  onClick='<%= renderResponse.getNamespace() + "edit();" %>'/>

<aui:button cssClass="btn btn-danger" value="删除" onClick='<%= renderResponse.getNamespace() + "delete();" %>'/>

<aui:script>
	Liferay.provide(
	    window,
	    '<portlet:namespace />edit',
	    function() {
	    	document.<portlet:namespace />fm.method = "post";                
            var ids = document.<portlet:namespace />fm.<portlet:namespace />rowIds.value = Liferay.Util.listCheckedExcept(document.<portlet:namespace />fm, '<portlet:namespace />allRowIds');
            if (confirm(ids.length)>1){
            	alert();
            }
            submitForm(document.<portlet:namespace />fm, '<portlet:actionURL name="editSelected"></portlet:actionURL>');
	    },
	    ['liferay-util-list-fields']
	);
</aui:script>

<aui:script>
    Liferay.provide(
        window,
        '<portlet:namespace />delete',
        function() {
            if (confirm('确定要删除吗?'))  {
                document.<portlet:namespace />fm.method = "post";                
                document.<portlet:namespace />fm.<portlet:namespace />rowIds.value = Liferay.Util.listCheckedExcept(document.<portlet:namespace />fm, '<portlet:namespace />allRowIds');
                submitForm(document.<portlet:namespace />fm, '<portlet:actionURL name="deleteSelected"></portlet:actionURL>');
            }
        },
        ['liferay-util-list-fields']
    );
</aui:script>

后台多Action处理,代码片段如下:

public void editSelected(ActionRequest actionRequest,
			ActionResponse actionResponse) {
		long[] ids = ParamUtil.getLongValues(actionRequest, "rowIds");
		for (int i = 0; i < ids.length; i++) {
			System.out.println("----编辑-----:" + ids[i]);
		}
	}

	public void deleteSelected(ActionRequest actionRequest,
			ActionResponse actionResponse) {
		long[] ids = ParamUtil.getLongValues(actionRequest, "rowIds");
		for (int i = 0; i < ids.length; i++) {
			try {
				MemberLocalServiceUtil.deleteMember(ids[i]);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}


代码下载地址:http://download.csdn.net/detail/u013310075/8387659

导入工程时,请选择导入到SDK目录下portlets目录下



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值