EditDataGrid与DataGrid相似,也是一个强大的以表格展现数据的构件。与DataGrid不同之处在于EditDataGrid可以在线编辑数据。
表 30.49. 构件信息
| Component Type | org.operamasks.faces.component.grid.impl.UIEditDataGrid |
| Component Family | org.operamasks.faces.component.layout.impl.UIPanel |
| Component Class | org.operamasks.faces.component.grid.impl.UIEditDataGrid |
| Tag Class | org.operamasks.faces.webapp.grid.UIEditDataGridTag |
| Renderer Type | org.operamasks.faces.component.grid.impl.UIEditDataGrid |
| Renderer Class | org.operamasks.faces.render.widget.ajax.AjaxEditDataGridRenderer |
+java.lang.Object
++javax.faces.component.UIComponent
+++javax.faces.component.UIComponentBase
++++org.operamasks.faces.component.layout.base.UIPanelBase
+++++org.operamasks.faces.component.layout.impl.UIPanel
++++++org.operamasks.faces.component.grid.UIDataGridBase
+++++++org.operamasks.faces.component.grid.impl.UIDataGrid
++++++++org.operamasks.faces.component.grid.UIEditDataGridBase
+++++++++org.operamasks.faces.component.grid.impl.UIEditDataGrid
表 30.50. 属性
| addedData | 定义类 | org.operamasks.faces.component.grid.UIEditDataGridBase | ||
| 类型 | javax.el.ValueExpression(java.lang.Object) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 绑定的用来接收在客户端新增的数据的对象 | ||||
| autoExpandColumn | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 允许扩展宽度以填充空余空间的列的序号(序号从1开始,隐藏列也要占用序号)。比如一个dataGrid有两列,且autoExpandColumn="2",且第一列宽度为100px,当dataGrid宽度是200px时第二列宽度会自动变成200-25-100=75px,当dataGrid宽度是250px时第二列宽度会自动变成250-25-100=125px | ||||
| autoExpandMax | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Integer) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 允许扩展宽度以填充空余空间的列的最大扩展宽度 | ||||
| autoExpandMin | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Integer) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 允许扩展宽度以填充空余空间的列的最小扩展宽度 | ||||
| autoHeight | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否允许构件自适应高度(默认值: false). | ||||
| autoLoad | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 默认grid是否装载数据,默认值为true,若设置为false,需要客户端js调"gridJsvar.store.load({params:{start:%d,limit:%d}});",其中gridJsvar为datagrid的jsvar属性,第一个%d为start参数(第一条数据索引),第二个%d为limit参数(每页显示行数); | ||||
| bindBean | 定义类 | org.operamasks.faces.component.grid.UIEditDataGridBase | ||
| 类型 | javax.el.ValueExpression(java.lang.Object) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 指定一个用于创建addedData,modifiedData,removedData中的模型元素的对象。此对象可以是以下类型: 1. java.lang.String:此时取值应该为一个类的全名。OperaMasks将载入这个类并用它创建模型元素。 2. java.lang.Class:OperaMasks将直接使用这个类创建模型元素。 3. 一个包含名为createBean()方法的对象实例:OperaMasks将调用该实例上的createBean()方法,此方法应返回模型元素实例。 | ||||
| binding | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | javax.el.ValueExpression(javax.faces.component.UIComponent) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。 | ||||
| border | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否显示面板body元素的边框(默认值:true)。默认情况下,边框是一个2px宽的内嵌边框,但当bodyBorder属性被设置成false时可以进一步修改 | ||||
| clicksToEdit | 定义类 | org.operamasks.faces.component.grid.impl.UIEditDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Integer) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 单击激活编辑还是双击激活编辑状态(1 - 单击;2 - 双击) | ||||
| clientSelectedCells | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(int[][]) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| CellSelectionModel时客户端选中的单元格 | ||||
| columnModel | 定义类 | org.operamasks.faces.component.grid.UIDataGridBase | ||
| 类型 | javax.el.ValueExpression(org.operamasks.faces.component.grid.GridColumnModel) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataGrid的GridColumnModel,用于进行列的相关属性的配置 | ||||
| dataProvider | 定义类 | org.operamasks.faces.component.grid.UIDataGridBase | ||
| 类型 | javax.el.ValueExpression(org.operamasks.faces.component.grid.provider.GridDataProvider) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataGrid的GridDataProvider,用于处理取数,服务器端分页等逻辑。若不指定, 将根据value属性的数据类型选用默认实现。 | ||||
| enableColumnHide | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否允许隐藏列 | ||||
| enableColumnMove | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否允许拖动列 | ||||
| enableColumnResize | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否允许表格列改变大小 | ||||
| enableHdMenu | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否具有隐藏某列的菜单,默认值为true | ||||
| forceFit | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否令column自动扩展或收缩,以适应DataGrid宽度,避免出现横向滚动条 | ||||
| headerModel | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(org.operamasks.faces.component.grid.GridHeaderModel) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataGrid的GridHeaderModel,配置表头的相关信息 | ||||
| height | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件高度的像素值 (默认是auto) | ||||
| hideHeaders | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否隐藏表头 | ||||
| honorViewState | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| ajax交互时是否传递ViewState. 取值为true时(默认为false),dataGrid的ajax交互传递ViewState,为false时不传递(默认不传递) | ||||
| id | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | java.lang.String | |||
| 是否必须 | 否 | 延时求值 | 否 | |
| 这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。 | ||||
| idColumn | 定义类 | org.operamasks.faces.component.grid.UIDataGridBase | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataGrid的id列,是所有dataGrid的列中可以作为唯一标示符的一列的id | ||||
| initConfig | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.Object) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 初始化配置对象。取值可以是ExtConfig对象, 或String,表示一个JavaScript对象,比如:{"a": "avalue", "b":true, "c":200, "d":"var::dvalue"} 如果取值是表示一个JavaScript对象的String,则key必须用(双)引号包起来,比如"a"。 | ||||
| invalidTextTemplate | 定义类 | org.operamasks.faces.component.grid.impl.UIEditDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 若输入项校验不通过时,提交表单时弹出的提示信息,默认值为"{0} [{1}, {2}] has an invalid value", 其中0, 1, 2为当前校验未通过单元格的header,row,col. 如用户需定制提示消息可照此进行设置,如 "表格列'{0}' 第{1}行第{2}列输入的值不合法" | ||||
| jsvar | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 客户端脚本使用的javascript变量名 | ||||
| keepLastParams | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件的取数请求是否保留上次请求参数 | ||||
| loadMask | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否显示加载动画。当数据表格加载数据量过大,或所需时间过长时,可以设置dataGrid构件的loadMask属性为true,以获得更好的用户体验 | ||||
| merged | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 表格是否融合的 | ||||
| mergedColumns | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String[]) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 融合的列的Id数组 | ||||
| mergedInfos | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(org.operamasks.faces.component.grid.MergedInfo[]) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 自定义融合的区域 | ||||
| modifiedData | 定义类 | org.operamasks.faces.component.grid.UIEditDataGridBase | ||
| 类型 | javax.el.ValueExpression(java.lang.Object) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 绑定的用来接收在客户端修改的数据的对象 | ||||
| moveEditorOnEnter | 定义类 | org.operamasks.faces.component.grid.impl.UIEditDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 按下回车键是否跳到下一个cell | ||||
| multiSelectOnClick | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否允许点击时选中多行或多个单元格 | ||||
| multiSelectOnClickRow | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否允许点击行时选中多行(此属性保留仅为向前兼容,请使用multiSelectOnClick属性) | ||||
| onafteredit | 定义类 | org.operamasks.faces.component.grid.impl.UIEditDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 在构件编辑之后执行JavaScript代码 | ||||
| onbeforeedit | 定义类 | org.operamasks.faces.component.grid.impl.UIEditDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 在构件编辑之前执行的JavaScript代码 | ||||
| onbeforeexpand | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件展开前执行的JavaScript代码 | ||||
| oncelldeselect | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件失去选中一个cell时执行的JavaScript代码 | ||||
| oncellselect | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件选中一个cell时执行的JavaScript代码 | ||||
| ondblclick | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件双击某条记录时执行的JavaScript代码 | ||||
| onrowdeselect | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件反选某条记录时执行的JavaScript代码 | ||||
| onrowselect | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件选择某条记录时执行的JavaScript代码 | ||||
| onselectionchange | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件选择记录改变时执行的JavaScript代码 | ||||
| paged | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否开启分页功能 | ||||
| queueId | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataGrid的delegate请求队列的ID。只有web.xml中配置了org.operamasks. faces.CLIENT_DELEGATE_QUEUE=true,该属性才有意义。该属性的默认值为delegate_request_load_queue_id | ||||
| queueTimeout | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Double) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| form中发起的Ajax请求排队的超时时间(单位:秒),当queueId属性设置时生效. | ||||
| readOnly | 定义类 | org.operamasks.faces.component.grid.impl.UIEditDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件是否只读 | ||||
| remoteSort | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否进行服务端排序 | ||||
| removedData | 定义类 | org.operamasks.faces.component.grid.UIEditDataGridBase | ||
| 类型 | javax.el.ValueExpression(java.lang.Object) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 绑定的用来接收在客户端删除的数据的对象 | ||||
| rendered | 定义类 | javax.faces.component.UIComponentBase | ||
| 类型 | boolean(boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。 | ||||
| rowDataProvider | 定义类 | org.operamasks.faces.component.grid.UIDataGridBase | ||
| 类型 | javax.el.ValueExpression(org.operamasks.faces.component.grid.provider.GridRowDataProvider) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataGrid的RowDataProvider,DataGrid渲染每一行时,会将每一行的数据传递给getLabel方法,由接口实现者决定如何展示数据 | ||||
| rowInitHeight | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Integer) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 行的初始高度 | ||||
| rowResizable | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 行是否可以改变大小. | ||||
| rows | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(int) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 每页显示的数据条数, 当paged属性为true即开启分页功能的时候才起作用 | ||||
| selectable | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 单元格是否可选择复制(默认值:fasle) | ||||
| selectedCells | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(int[][]) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| CellSelectionModel时选中的单元格 | ||||
| selectionModel | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(org.operamasks.faces.component.grid.GridSelectionModel) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataGrid的GridSelectionModel,配置行选择模型 | ||||
| selections | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(int[]) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 选中的行的行号的数组 | ||||
| showRowNumber | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否显示行号 | ||||
| showTitleOnCollapse | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 在构件收缩后是否显示标题 (默认值:false). 注意:该属性仅在region="north"或者region="south",属性被设置成true时有效 | ||||
| singleSelect | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否只支持单选 | ||||
| stripeRows | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否使行具有条纹 (默认是true) | ||||
| style | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件渲染时应用到构件的CSS风格,对应于元素的style属性 | ||||
| styleClass | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 空格分隔的CSS风格类名列表,渲染时作为元素的"class"属性 | ||||
| summaryRowPosition | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 合计行的位置,可以设置为:inner,out. 设置为inner的合计行位置紧跟数据行,随垂直滚动条移动. 设置为out的合行行位置在DataGrid的最下面,不随垂直滚动条移动. | ||||
| toolBarPosition | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 内置工具栏的位置,可能的取值为"top","bottom",或"both"。 | ||||
| trackMouseOver | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.Boolean) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 是否当鼠标移动到某一行时高亮显示该行 | ||||
| transData | 定义类 | org.operamasks.faces.component.grid.UIEditDataGridBase | ||
| 类型 | javax.el.ValueExpression(java.lang.Object) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 绑定的用来接收在客户端所有更改操作(包括增加,删除,修改)的JSON数据的对象 | ||||
| value | 定义类 | |||
| 类型 | javax.el.ValueExpression(java.lang.Object) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataGrid的数据。默认支持的类型可以是对象数组,java.util.List,javax.faces.model.DataModel,java.sql.ResultSet,java.util.Collection(用户应自行保证使用有序的Collection实现,否则翻页时可能会出现乱序问题)。但通过指定自定义的dataProvider,可以支持其他类型。 | ||||
| var | 定义类 | org.operamasks.faces.component.grid.impl.UIDataGrid | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件每一行数据的变量。读取dataGrid的数据时,会去遍历value的集合,遍历的过程会得到每一行的数据,var就是代表每一行数据的变量 | ||||
| viewProvider | 定义类 | org.operamasks.faces.component.grid.UIDataGridBase | ||
| 类型 | javax.el.ValueExpression(org.operamasks.faces.component.grid.provider.GridViewProvider) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| dataGrid的GridViewProvider,当为DataGrid指定了GridDataProvider之后,DataGrid将会根据自身的value值去获取返回的数据集合 | ||||
| width | 定义类 | org.operamasks.faces.component.layout.impl.UIPanel | ||
| 类型 | javax.el.ValueExpression(java.lang.String) | |||
| 是否必须 | 否 | 延时求值 | 是 | |
| 构件宽度的像素值 (默认是auto) | ||||
表 30.51. 方法
| appendRow | 方法签名 | public void appendRow() |
| 参数说明 | 无参数 | |
| 返回值 | 无返回值 | |
| 方法描述 | 在当前grid中追加一行 | |
| appendRow | 方法签名 | public void appendRow(Object rowData) |
| 参数说明 | rowData 要插入的行的数据 | |
| 返回值 | 无返回值 | |
| 方法描述 | 在当前grid中追加一行特定的数据 | |
| insertRow | 方法签名 | public void insertRow(int pos) |
| 参数说明 | pos 插入的位置 | |
| 返回值 | 无返回值 | |
| 方法描述 | 在当前grid的特定位置中插入一行 | |
| insertRow | 方法签名 | public void insertRow(int pos, Object rowData) |
| 参数说明 | pos 插入的位置,rowData 要插入的行的数据 | |
| 返回值 | 无返回值 | |
| 方法描述 | 在当前grid的特定位置中插入一行特定的数据 | |
| commit | 方法签名 | public void commit() |
| 参数说明 | 无参数 | |
| 返回值 | 无返回值 | |
| 方法描述 | 提交对当前grid的修改 | |
| getAddedData | 方法签名 | public Object getAddedData() |
| 参数说明 | 无参数 | |
| 返回值 | 返回客户端新增数据的模型对象 | |
| 方法描述 | 获取客户端新增数据的模型对象 | |
| getModifiedData | 方法签名 | public Object getModifiedData() |
| 参数说明 | 无参数 | |
| 返回值 | 返回客户端修改数据的模型对象 | |
| 方法描述 | 获取客户端修改数据的模型对象 | |
| getRemovedData | 方法签名 | public Object getRemovedData() |
| 参数说明 | 无参数 | |
| 返回值 | 返回客户端删除数据的模型对象 | |
| 方法描述 | 获取客户端删除数据的模型对象 | |
| getTransData | 方法签名 | public Object getTransData() |
| 参数说明 | 无参数 | |
| 返回值 | 返回客户端更改(增删改)的JSON数据 | |
| 方法描述 | 获取客户端更改(增删改)的JSON数据 | |
| rebind | 方法签名 | public void rebind() |
| 参数说明 | 无参数 | |
| 返回值 | 无返回值 | |
| 方法描述 | 重新绑定grid的属性 | |
| reload | 方法签名 | public void reload() |
| 参数说明 | 无参数 | |
| 返回值 | 无返回值 | |
| 方法描述 | 重新加载grid的数据 | |
| remove | 方法签名 | public void remove() |
| 参数说明 | 无参数 | |
| 返回值 | 无返回值 | |
| 方法描述 | 删除grid中当前选中的行 | |
| remove | 方法签名 | public void remove(int row) |
| 参数说明 | 要删除的行的行号 | |
| 返回值 | 无返回值 | |
| 方法描述 | 删除grid中的特定行 |
表 30.52. 方法
| getElements | 方法签名 | public abstract Object[] getElements() |
| 参数说明 | 无参数 | |
| 返回值 | grid的当前页元素 | |
| 方法描述 | 获取元素 | |
| getElement | 方法签名 | public abstract Object getElement(int index) |
| 参数说明 | rowIndex | |
| 返回值 | 指定的rowIndex对应的数据 | |
| 方法描述 | 根据指定的rowIndex获取数据 | |
| getTotalCount | 方法签名 | public abstract int getTotalCount() |
| 参数说明 | 无参数 | |
| 返回值 | 记录总行数 | |
| 方法描述 | 得到记录行数 | |
| getStart | 方法签名 | public int getStart() |
| 参数说明 | 无参数 | |
| 返回值 | 起始行数,默认为0 | |
| 方法描述 | 得到起始行数,默认为0 | |
| setStart | 方法签名 | public void setStart(int start) |
| 参数说明 | 起始行数 | |
| 返回值 | 无返回值 | |
| 方法描述 | 设置grid数据的起始行数 | |
| setLimit | 方法签名 | public void setLimit(int limit) |
| 参数说明 | 每次装载的行数,默认为getElements返回值的长度 | |
| 返回值 | 无返回值 | |
| 方法描述 | 设置每次装载的行数 | |
| getLimit | 方法签名 | public int getLimit() |
| 参数说明 | 无参数 | |
| 返回值 | 每次装载的行数 | |
| 方法描述 | 设置每次装载的行数 | |
| sort | 方法签名 | public void sort(GridColumn column, SortDirection direction) |
| 参数说明 | column 排序列,direction 排序方向 | |
| 返回值 | 无返回值 | |
| 方法描述 | 当grid设置了remoteSort=true时,发起排序请求会调用到此方法。 |
DataGrid数据提供者,当为DataGrid指定了GridDataProvider之后,DataGrid将会根据自身的value值去获取返回的数据集合。每个方法传入的input参数,可以是一个list或者数组或者resultset等数据集合方式,此接口的实现者,根据传入的input来提供ColumnModel、HeaderModel以及数据。
表 30.53. 方法
| getSelectionModel | 方法签名 | public GridSelectionModel getSelectionModel(Object input) |
| 参数说明 | dataGrid的数据集合 | |
| 返回值 | dataGrid的GridSelectionModel,配置行选择模型 | |
| 方法描述 | 获取dataGrid的GridSelectionModel | |
| getColumnModel | 方法签名 | public GridColumnModel getColumnModel(Object input) |
| 参数说明 | dataGrid的数据集合 | |
| 返回值 | dataGrid的GridColumnModel | |
| 方法描述 | 获取dataGrid的GridColumnModel,用于进行列属性配置 | |
| getHeaderModel | 方法签名 | public GridHeaderModel getHeaderModel(Object input) |
| 参数说明 | dataGrid的数据集合 | |
| 返回值 | dataGrid的GridHeaderModel | |
| 方法描述 | 获取dataGrid的GridHeaderModel,用于进行表头配置 |
DataGrid渲染每一行时,会将每一行的数据传递给getLabel方法,由接口实现者决定如何展示数据。
表 30.54. 方法
| getLabel | 方法签名 | public Object getLabel(Object rowData, GridColumn column) |
| 参数说明 | rowData 每一行的数据,column 列信息 | |
| 返回值 | 原始返回值 | |
| 方法描述 | 得到列数据,如果列指定了Converter,则会自动应用Converter来转换显示的值。 |
该类继承自GridDataProvider,实现了GridDataProvider中的抽象方法。该类的构造方法需要传入List型的grid数据,,当grid的数据由List型的数据提供时,可用此类作为grid的dataProvider,但要实现服务端排序,需要重写父类的sort()方法
表 30.55. 方法
| getElements | 方法签名 | public abstract Object[] getElements() |
| 参数说明 | 无参数 | |
| 返回值 | grid的当前页元素 | |
| 方法描述 | 获取元素 | |
| getElement | 方法签名 | public abstract Object getElement(int index) |
| 参数说明 | rowIndex | |
| 返回值 | 指定的rowIndex对应的数据 | |
| 方法描述 | 根据指定的rowIndex获取数据 | |
| getTotalCount | 方法签名 | public abstract int getTotalCount() |
| 参数说明 | 无参数 | |
| 返回值 | 记录总行数 | |
| 方法描述 | 得到记录行数 |
该类继承自GridDataProvider,实现了GridDataProvider中的抽象方法。该类的构造方法需要传入Array型的grid数据,当grid的数据由Array型的数据提供时,可用此类作为grid的dataProvider,但要实现服务端排序,需要重写父类的sort()方法
表 30.56. 方法
| getElements | 方法签名 | public abstract Object[] getElements() |
| 参数说明 | 无参数 | |
| 返回值 | grid的当前页元素 | |
| 方法描述 | 获取元素 | |
| getElement | 方法签名 | public abstract Object getElement(int index) |
| 参数说明 | rowIndex | |
| 返回值 | 指定的rowIndex对应的数据 | |
| 方法描述 | 根据指定的rowIndex获取数据 | |
| getTotalCount | 方法签名 | public abstract int getTotalCount() |
| 参数说明 | 无参数 | |
| 返回值 | 记录总行数 | |
| 方法描述 | 得到记录行数 |
这个例子介绍了动态EditDataGrid的使用方法,该示例来源自 bpdemos
<w:form>
<w:editDataGrid id="grid" paged="true" rows="10" toolBarPosition="top" height="400" width="800">
<w:pagingToolbar>
<w:separator />
<w:menu label="数据维护">
<w:commandMenuItem label="增加" image="../images/new.gif"
action="#{datarepresent.grid.dynamic.editableBean.insert}" />
<w:commandMenuItem label="增加(预填数据)" image="../images/new.gif"
action="#{datarepresent.grid.dynamic.editableBean.insertWithData}" />
<w:commandMenuItem label="删除" image="../images/delete.gif"
action="#{datarepresent.grid.dynamic.editableBean.remove}" />
<w:commandMenuItem label="保存" image="../images/save.gif"
action="#{datarepresent.grid.dynamic.editableBean.save}" />
</w:menu>
<w:separator />
<w:button id="add" value="增加" image="../images/new.gif" />
<w:button id="addWithData" value="增加(预填数据)" image="../images/new.gif" />
<w:button id="remove" value="删除" image="../images/delete.gif" />
<w:button id="save" value="保存" image="../images/save.gif" />
</w:pagingToolbar>
</w:editDataGrid>
</w:form>Managed Bean代码:
@ManagedBean(name = "datarepresent.grid.dynamic.editableBean", scope = ManagedBeanScope.REQUEST)
public class EditableBean {
@Bind(id = "grid")
private List<Company> getCompanys() {
return CompanyService.findAll();
}
@Bind(id = "grid", attribute = "viewProvider")
private GridViewProvider viewProvider = new GridViewProvider() {
public GridColumnModel getColumnModel(Object input) {
return DynamicGridBeanHelper.createCompanyColumnModel();
}
public GridHeaderModel getHeaderModel(Object input) {
return DynamicGridBeanHelper.createCompanyHeaderModel();
}
public GridSelectionModel getSelectionModel(Object input) {
return new CheckboxSelectionModel();
}
};
@Bind(id = "grid", attribute = "rowDataProvider")
private GridRowDataProvider rowProvider = DynamicGridBeanHelper.getCompanyRowProvider();
CompanyService companyService = new CompanyService();
@Bind(id = "grid")
private UIEditDataGrid grid;
@Bind(id = "grid", attribute = "addedData")
private Object addedData;
@Bind(id = "grid", attribute = "modifiedData")
private Object modifiedData;
@Bind(id = "grid", attribute = "removedData")
private Object removedData;
@Bind(id = "grid", attribute = "bindBean")
private Class bindBean = Company.class;
@BeforeRender
public void beforeRender(boolean isPostBack) {
if (!isPostBack) {
GridColumnModel model = grid.getColumnModel();
model.getColumn(1).setCellEditor(createCellEditor(UITextField.COMPONENT_TYPE));
model.getColumn(2).setCellEditor(createCellEditor(UITextField.COMPONENT_TYPE));
model.getColumn(3).setCellEditor(createCellEditor(UITextField.COMPONENT_TYPE));
model.getColumn(4).setCellEditor(createCellEditor(UITextField.COMPONENT_TYPE));
model.getColumn(5).setCellEditor(createCellEditor(UITextField.COMPONENT_TYPE));
}
}
private CellEditor createCellEditor(String componentType) {
CellEditorAdapter adapter = CellEditorAdapter.getInstance();
CellEditorFactory fac = adapter.getCellEditorFactory(componentType);
if (fac instanceof UITextField) {
((UITextField) fac).setAllowBlank(false);
}
return fac.getCellEditor();
}
@Action(id = "add")
public void insert() {
grid.insertRow(0);
}
@Action(id = "addWithData")
public void insertWithData() {
grid.insertRow(0, new Company("4","Microsoft","Windows, Office","天河软件园","http://www.microsoft.com","800 810 1818",""));
}
@Action(id = "remove")
public void remove() {
grid.remove();
}
@Action(id = "save")
public void save() {
try {
if (addedData != null) {
add((Company[]) addedData);
}
if (modifiedData != null) {
update((Company[]) modifiedData);
}
if (removedData != null) {
remove((Company[]) removedData);
}
grid.commit();
grid.reload();
} catch (Exception e) {
throw new FacesException(e);
}
}
private void remove(Company[] companys) {
for (Company company : companys) {
companyService.remove(company);
}
}
private void update(Company[] companys) {
for (Company company : companys) {
companyService.update(company);
}
}
private void add(Company[] companys) {
for (Company company : companys) {
company.setId(UUID.randomUUID().toString());
companyService.add(company);
}
}
}