30.19. <widget:expanderColumn>

expanderColumn是expanderGridPlug插件的子组件,用来设置可扩展的表格字段

30.19.1. 构件信息

表 30.57. 构件信息

Component Typeorg.operamasks.faces.component.plugin.grid.impl.UIExpanderColumnPlug
Component Classorg.operamasks.faces.component.plugin.grid.impl.UIExpanderColumnPlug
Tag Classorg.operamasks.faces.webapp.plugin.UIExpanderColumnPlugTag

继承体系

+java.lang.Object

++javax.faces.component.UIComponent

+++javax.faces.component.UIComponentBase

++++javax.faces.component.UIColumn

+++++org.operamasks.faces.component.grid.base.UIOutputColumnBase

++++++org.operamasks.faces.component.grid.UIOutputColumn

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

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

30.19.2. 属性

表 30.58. 属性

align 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
列内文本的排列方式
binding 定义类 javax.faces.component.UIComponentBase
类型 javax.el.ValueExpression(javax.faces.component.UIComponent)
是否必须 延时求值
一个值表达式,用于把该组件链接到一个ManagedBean的某个属性。
clientFormatter 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
一个javascript的方法,在客户端计算每个单元格的实际显示内容时都会回调这个方法,并将这个方法的返回值作为在单元格中显示的内容(允许包含html标签)。如果没有指定,那么默认就是用该列绑定的值。指定的javascript方法可接收最多6个参数,系统在回调此方法时将自动传入这些参数,依次分别为:<br /> 1. value:单元格的数据值。若本列的requireEscape为true,则value值为已经过转义的值。 2. metadata:一个持有以下三个属性的对象,用户可以在方法中对其作出改变: (1). css:单元格所在的td元素的css样式类名。 (2). attr:在单元格内部的容器元素的HTML属性值。例如" style='color:red;' " (3). style:单元格所在的元素的样式,它将被渲染给td。例如:param.style='background-color:red;'; 3. record:当前行的数据记录对象。类型为Ext.data.Record。详情请参考Ext-JS文档。 4. rowIndex:当前单元格所在的行号。 5. colIndex:当前单元格所在的列号。 6. store:当前dataGrid所持有的数据模型。类型为Ext.data.Store。详情请参考Ext-JS文档。
converter 定义类 org.operamasks.faces.component.grid.base.UIOutputColumnBase
类型 javax.el.ValueExpression(javax.faces.convert.Converter)
是否必须 延时求值
构件的内容转换器,JSF引擎会使用该转换器在用户输入和构件值类型间进行转换
editorSelector 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
一个javascript的方法,在该单元格处于可编辑状态时将使用方法返回值所指的EXT构件来编辑,通常使用场景为该构件有几个field子构件并且都设置了jsvar属性,在该单元格处于可编辑状态时需要根据该行数据记录的具体情况使用不同的构件来编辑,指定的方法必须接收一个参数,系统在回调此方法时将自动传入这个参数.
expid 定义类 org.operamasks.faces.component.plugin.grid.impl.UIExpanderColumnPlug
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
需要显示的字段,如果
fixed 定义类 org.operamasks.faces.component.grid.base.UIOutputColumnBase
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
列的宽度是否锁定不变 (默认是false)
footerClass 定义类
类型 java.lang.String
是否必须 延时求值
表格列脚样式,样式名以空格分隔
header 定义类 org.operamasks.faces.component.grid.base.UIOutputColumnBase
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
列头显示的文本
headerClass 定义类
类型 java.lang.String
是否必须 延时求值
表格列头样式,样式名以空格分隔
hidable 定义类 org.operamasks.faces.component.grid.base.UIOutputColumnBase
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
列是否允许被隐藏
hidden 定义类 org.operamasks.faces.component.grid.base.UIOutputColumnBase
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
是否隐藏列
id 定义类 javax.faces.component.UIComponentBase
类型 java.lang.String
是否必须 延时求值
这个组件的组件标识符。这个值在最近的命名容器类型的父组件范围内,必须是唯一的。
render 定义类 org.operamasks.faces.component.plugin.grid.impl.UIExpanderColumnPlug
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
格式化显示的字段格式:<span style="color:red">{0}</span>
rendered 定义类 javax.faces.component.UIComponentBase
类型 boolean(boolean)
是否必须 延时求值
一个标志,指出该组件是否要在任何随后的form提交过程中被渲染或处理。 这个属性的缺省值是true。
requireEscape 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
本列中的单元格是否自动对显示文本中的特殊字符(例如"<"号)进行转义。
sortable 定义类 org.operamasks.faces.component.grid.base.UIOutputColumnBase
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
列是否可以排序
style 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件渲染时应用到构件的CSS风格,对应于元素的style属性
styleClass 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
构件上的CSS样式类
summaryRenderer 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
自定义列的渲染函数,包含3个参数. 1. v:单元格的数据值 2. param:一个持有以下三个属性的对象,用户可以在方法中对其作出改变: (1). style:单元格所在的元素的样式,它将被渲染给td。例如:param.style='background-color:red;'; (2). css:单元格所在的元素的css样式类名,它将被渲染给td。注意它必须是样式类,其值最终被添加在td 的class属性里面 (3). attr:在单元格内部的容器元素的HTML属性值。例如,设置提示信息:params.attr = 'ext:qtip="Total Count"';它将被渲染给td内部的div 3. data:合计行的整行数据
summaryType 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
合计的类型,可以设置为sum(求和), count(列数目), max(最大值), min(最小值), average(平均值).
title 定义类 org.operamasks.faces.component.plugin.grid.impl.UIExpanderColumnPlug
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
显示字段的title,可以加入html处理
type 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.String)
是否必须 延时求值
列的显示类型. type="check",dataGrid中渲染成一个checkBox,在editDataGrid中渲染成为一个checkBox,点击时该boolean列值取反 type="password",列内容显示为●
value 定义类 org.operamasks.faces.component.grid.base.UIOutputColumnBase
类型 javax.el.ValueExpression(java.lang.Object)
是否必须 延时求值
列的值
width 定义类 org.operamasks.faces.component.grid.base.UIOutputColumnBase
类型 javax.el.ValueExpression(java.lang.Integer)
是否必须 延时求值
列的宽度
wrap 定义类 org.operamasks.faces.component.grid.UIOutputColumn
类型 javax.el.ValueExpression(java.lang.Boolean)
是否必须 延时求值
当其中的文字超过列的宽度时,内容是否自动换行

30.19.3. 示例

下面是可扩展表格的示例代码

      //----------------------xhtml页面代码---------------------
        <w:dataGrid id="grid" height="500" showRowNumber="false" >
                <w:outputColumn id="name" header="名称"/>
                <w:outputColumn id="address" header="地址"/>
                <w:outputColumn id="sex" header="性别" />
                <w:outputColumn id="age" header="年龄"/>
                <w:outputColumn id="incoming" header="收入"/>
                <w:outputColumn id="outcoming" header="支出"/>
                <w:outputColumn id="detail" hidden="true"></w:outputColumn>
                <w:expanderGridPlug >
                    <w:expanderColumn expid="address" title="地址" render="clientRender"/>
                    <w:expanderColumn expid="incoming" title="收入" />
                    <w:expanderColumn expid="detail" title="详情"></w:expanderColumn>
                </w:expanderGridPlug>
         </w:dataGrid>
         
         //------------------------liteBean代码-------------------------
        @Bind(id="grid")
		public List<UserEntity> getList()
		{
			return companys;
		}
		
		private List<UserEntity> companys = new ArrayList<UserEntity>(Arrays.asList(new UserEntity[]{
				new UserEntity("luoyg","湖南","男",30,3000,4000,"自1991年World Wide Web诞生以来,这种全新的沟通方式已经彻底改变了世界,无论是政治、经济、娱乐、还是人们的日常生活。"),
	            new UserEntity("chenjie","湖北","男",20,8000,4000,"自1991年World Wide Web诞生以来,这种全新的沟通方式已经彻底改变了世界,无论是政治、经济、娱乐、还是人们的日常生活。"),
	            new UserEntity("zhoufazhi","湖北","男",28,12000,7000,"自1991年World Wide Web诞生以来,这种全新的沟通方式已经彻底改变了世界,无论是政治、经济、娱乐、还是人们的日常生活。"),
				new UserEntity("zhangsan","贵州","女",28,12000,7000,"自1991年World Wide Web诞生以来,这种全新的沟通方式已经彻底改变了世界,无论是政治、经济、娱乐、还是人们的日常生活。"),
				new UserEntity("lili","北京","女",28,12000,7000,"自1991年World Wide Web诞生以来,这种全新的沟通方式已经彻底改变了世界,无论是政治、经济、娱乐、还是人们的日常生活。"),
				new UserEntity("liyingying","江苏","女",28,12000,7000,"自1991年World Wide Web诞生以来,这种全新的沟通方式已经彻底改变了世界,无论是政治、经济、娱乐、还是人们的日常生。")
	    }));
	    
	    //------------------------UserEntity类-----------------------
	 	   此处只列出所包含字段	
	    private String name;
		private String address;
		private String sex;
		private Integer age;
		private Integer incoming;
		private Integer outcoming;
		private String detail;