30.28. <w:groupingViewPlug>

GroupingViewPlug是dataGrid的一个插件,只用作w:dataGrid的子标签使用;用于增强dataGrid,使之具有按行分组的功能

30.28.1. 构件信息

表 30.73. 构件信息

Component Type org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
Component Family org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
Component Class org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
Tag Class org.operamasks.faces.webapp.plugin.UIGroupingViewPlugTag
Renderer Type org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
Renderer Class(AJAX) org.operamasks.faces.render.plugin.grid.GroupingViewPlugRenderer

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++org.operamasks.faces.component.plugin.grid.base.UIGroupingViewPlugBase

+++++org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug

30.28.2. 属性

表 30.74. 属性

binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
enableGroupingMenu 定义类 org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否显示控制按照哪列分组的菜单。如果为false,则不能改变按照哪列进行分组,只能按默认列分组。默认为true
groupField 定义类 org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
分组的列id。必须。
groupMode 定义类 org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
分组模式:若为value,则分组时采用原值进行比对;若为display,则分组时采用显示的值进行比对
headersDisabled 定义类 org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否锁定表头。默认为false,不锁定表头。
hideGroupedColumn 定义类 org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否隐藏被分组的列。默认为false,不隐藏。
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
initConfig 定义类 org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
其他配置项,应按照标准json表示法来写。比如 initConfig="{'name':value,'name2':value2}"
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
sortDirection 定义类 org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
sortInfo的配置项,非必须,默认ASC
sortField 定义类 org.operamasks.faces.component.plugin.grid.impl.UIGroupingViewPlug
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
sortInfo的配置项,必须。 sortInfo:{field:'sortField',direction:'ASC'}

30.28.3. 示例

下面的示例演示了表格行分组插件的使用方法。当多行数据中有些列相同时,可以将这些行按该列归成一组

<w:dataGrid id="employeeGrid" paged="true" rows="10" height="400" width="800">
			<w:groupingViewPlug groupField="companyName" sortField="name"></w:groupingViewPlug>
			<w:outputColumn id="id" hidden="true" hidable="false" />
			<w:outputColumn id="departmentId" hidden="true" hidable="false" />
			<w:outputColumn id="name" width="200" align="center" sortable="true" header="名称" />
			<w:outputColumn id="companyName" width="300" header="所在公司名称" />
			<w:outputColumn id="departmentName" header="所在部门名称" />
		</w:dataGrid>

ManagedBean:

@ManagedBean(name = "ux.datarepresent.datagrid.gridPlugins.groupingViewBean", scope = ManagedBeanScope.REQUEST)
public class GroupingViewBean {
    @ManagedProperty("#{employeeService}")
    private EmployeeService employeeService;
    @ManagedProperty("#{companyService}")
    private CompanyService companyService;
    @ManagedProperty("#{departmentService}")
    private DepartmentService departmentService;
    @SaveState
    private List<Employee> employees;
    @Bind(id = "employeeGrid")
    private List<Employee> getEmployess() {
        return employees;
    }
    @BeforeRender
    public void beforeRender(boolean isPostback) {
        if (!isPostback) {
            employees = employeeService.findAll();
            for (Employee employee : employees) {
                Department department = departmentService.findById(employee.getDepartmentId());
                employee.setDepartmentName(department.getName());
                employee.setCompanyName(companyService.findById(department.getCompanyId())
                        .getName());
            }
        }
    }
}

Company,Employee,Department和CompanyService,EmployeeService,DepartmentService分别是实体类和服务类,此处从略。