GroupingViewPlug是dataGrid的一个插件,只用作w:dataGrid的子标签使用;用于增强dataGrid,使之具有按行分组的功能
表 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.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'} | ||||
下面的示例演示了表格行分组插件的使用方法。当多行数据中有些列相同时,可以将这些行按该列归成一组
<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分别是实体类和服务类,此处从略。