列表:147
Listbox:列表,listItem:列表的行,listcell:列表的列,listhead:列表的标题行,listheader:列表标题行的列
属性:
<listbox multiple=””>:true----多选;false----单选
<listbox checkmark=””>:控制是否在listitem前显示一个checkbox或radio按钮
配合multiple,多选:显示checkbox按钮,单选:显示radio按钮
<listbox rows=””或height=””>:当定义了列表框的显示行或高,不能显示所有项目时,变为滚动,若将rows设置为0,listbox会将自身大小调整为显示所有项目
<listhead sizable=”true”>:列表头设为可变
Vflex:控制是否在垂直方向增长或缩小以适应指定空间(若指定了rows属性则该属性会被忽略)
maxlength:定义浏览器端可见最大字节数,设置该属性可将listbox变窄
循环形式生成(多列)列表:
<listbox id="userLbx" model="@{userWin.userList}"
selectedItem="@{userWin.user}" onSelect="showUserEdit();"
fixedLayout="true" paginal="@{pagingUser}" >
<listhead>
<listheader label="用户名" align="center"></listheader>
<listheader label="手机号" align="center"></listheader>
<listheader label="分机号" align="center"></listheader>
<listheader label="职位" align="center"></listheader>
</listhead>
<listitem self="@{each=user}">
<listcell label="@{user.username}"></listcell>
<listcell label="@{user.phone}"></listcell>
<listcell label="@{user.exten}"></listcell>
<listcell label="@{user.position}"></listcell>
</listitem>
</listbox>
<paging id="pagingUser" pageSize="3"></paging> //像grid一样,可指定paging模型分页
定义形式生成(多列)列表:(2行,4列)
<listbox width=”250px” height=”20px”>
<listhead>
<listheader label="用户名" align="center" sort=”auto”></listheader>
<listheader label="手机号" align="center" sort=”auto”></listheader>
<listheader label="分机号" align="center" sort=”auto”></listheader>
<listheader label="职位" align="center" sort=”auto”></listheader>
</listhead>
<listitem id=”a” value=”A”>
<listcell label=”king”/>
<listcell label=”130002548”/>
<listcell label=”0751-224562”/>
<listcell label=”总经理”/>
</listitem>
<listitem id=”b” value=”B”>
<listcell label=”华盛顿”/>
<listcell label=”130002548”/>
<listcell label=”0751-224562”/>
<listcell label=”经理”/>
</listitem>
</listbox>
包含其他组件的列表:
<listbox width=”250px” height=”20px”>
<listhead>
<listheader label="用户名" align="center" sort=”auto”></listheader>
<listheader label="手机号" align="center" sort=”auto”></listheader>
</listhead>
<listitem id=”a” value=”A”>
<listcell > <textbox value=”A.name” /> </listcell>
<listcell label=”20%”/>
</listitem>
<listitem id=”b” value=”B”>
<listcell > <checkbox label=”B.name” /> </listcell>
<listcell > <button label=”23%”/> <listcell />
</listitem>
</listbox>
1、若使用grid更好,他们的外观类似,但listbox仅用于呈现可选项目的列表
2、若listbox包括可编辑的组件,如textbox和checkbox则会引起用户困惑,一个普遍问题是用户在一个未选中的项目内输入文本
3、由于浏览器限制,用户不能从文本框内选择一段文字
定义形式生成(单列)列表:(2行,1列)
<listbox>
<listitem label =”king” />
<listitem label =”华盛顿” />
</listbox>
下拉列表框:(通过指定select模型及单行可创建一个下拉列表,注意:不能指定多列)
<listbox mold=”select” rows=”1”> //rows=”1”:默认传递默认项的值
<listitem label =”king” />
<listitem label =”华盛顿” selected=”true” />
</listbox>
分页:
<paging id="pagingUser" pageSize="3"></paging> //像grid一样,可指定paging模型分页
排序:(支持列表项目对某一列排序)
方式一:将listheader的sort属性设为auto
方式二:自定义排序规则(重写sortAsceding或sortDescending任一比较器,指定其实例)
如:想基于列表项目的值排序,而不是列表元素的标签
<zscript>
Comparator asc = new ListitemComarator(-1,true,true);
Comparator dsc = new ListitemComarator(-1,false,true);
</zscript>
<listbox>
<listhead>
<listheader sortAscending=”${asc}” sortDescending=”${dsc}”/>
方式三:onSort事件
为listheader至少指派一个比较器,若用户点击它,onSort事件就被送至服务器,listheader实现了一个监听器来处理排序
实况数据(适用于listbox、grid):
像grid,listbox支持live data,仅需要实现org.zkoss.zul.ListModel接口提供数据,不用直接操作listbox,优点:
易于使用不同试图显示相同的数据
Listbox仅在其可见时才会将数据发送至客户端,数据量大时可减少网络流量
实现实况数据步骤:
1、 以ListModel形式准备好数据,ZK有一个org.zkoss.zul.SimpleListModel的实现,用于显示一个数值对象
2、 实现org.zkoss.zul.ListitemRenderer接口用于将一个数据项目送至listbox的一个列
这是可选的,若指定,默认的渲染器(renderer)会启动,并将数据送至第一列
可实现不同的渲染器(renderer),这样可在不同的视图中显示相同的数据
3、 model属性中指定的数据,并可以选择在tiemRenderer属性指定渲染器(renderer)
例如:
<window title=”” border=”normal”>
<zscript>
String[] data = new String[30];
for(int j=0; j< data.length; ++j){
data[j] = “option” + j;
}
ListModel strset = new SimpleListModel(data);
</zscript>
<listbox width=”” rows=”10” model=”${strset}”>
<listhead>
<listheader label=”循环加载实况数据” />
</listhead>
</listbox>
</window>
网格:128
Grid、columns、column、rows、row
Grid内可以声明columns定义header及column属性;还可以声明rows,使用rows组件可以声明一套row,即为grid元素的子组件。可在row元素内添加想要的内容,每个子元素为指定行的一列
<grid>
<columns>
<column label=””/>
<column label=””/>
</columns>
<rows>
<row>
<label value=””/> //第1行第1列
<textbox width=””/> //第1行第2列
</row>
<row>
<label value=””/> //第2行第1列
<hbox> //第2行第2列
<listbox rows=”1” mold=”select”>
<listitem label=””/>
<listitem label=””/>
</listbox>
<button label=””/>
</hbox>
</row>
</rows>
</grid>
多表头(嵌套表头):
除了columns,可以使用auxhead和auxheader组件指定辅助表头,
辅助表头支持colspan和rowsspan属性,而列表头(column header)并不支持,但是辅助表头必须和column一起使用。
不同于column/columns仅可以为grid所用,auxhead/auxheader可以被用于grid、listbox、和tree
如下:
<grid>
<auxhead>
<auxheader label=”第一级大表头1列” colspan=”6” />
<auxheader label=”第一级大表头2列” colspan=”6” />
</auxhead>
<auxhead>
<auxheader label=”第二级大表头1列” colspan=”3” />
<auxheader label=”第二级大表头2列” colspan=”3” />
<auxheader label=”第二级大表头3列” colspan=”3” />
<auxheader label=”第二级大表头4列” colspan=”3” />
</auxhead>
<columns>
<column label=”1”/> <column label=”2”/> <column label=”3”/>
<column label=”4”/> <column label=”5”/> <column label=”6”/>
<column label=”7”/> <column label=”8”/> <column label=”9”/>
<column label=”10”/> <column label=”11”/> <column label=”12”/>
</columns>
<rows>
….
</rows>
</grid>
滚动网格:
当指定了height属性且没有足够的空间来显示数据时,grid会变为滚动的
可变列宽:
将columns的sizable属性设为true,用户可以通过拖动相邻列的边框来改变列宽
多内容数据的处理:
方式一:滚动(通过指定height属性实现)
方式二:分页(通过将mold属性设为paging实现)
<grid width=”300px” mold=”paging” pageSize=”4”>
<columns>
<column label=””/>
<column label=””/>
</columns>
<rows>
<row>
<label value=””/> //第1行第1列
<textbox width=””/> //第1行第2列
</row>
</rows>
</grid>
一旦设置为分页模式,grid将会创建paging组件的一个实例作为其子组件,然后它将会关注分页
属性:
pageSize:
paginal:如果将paging组件置于不同的位置或使用同一个paging组件控制两个或更多的grid,
可以明确指明paginal属性。注意:如果没有明确指明,即同于paging属性
paging:其为一个用来呈现paging子组件(自动创建来处理分页)只读属性。如果你通过paginal
属性指派了额外的分页,它的值将为空
Spans:为一个整数列表,以逗号分隔,用于控制是否将一个 元素(cell)跨越几列。列表中的第一个数字表示第一个元素跨越的列数,第二个数字表示第二个元素跨越的列数,依次类推,若省略数字,则为1。
例子:(分页)
<vbox>
<paging id=”pg” pageSize=”4”/>
<hbox>
<grid width=”300px” mold=”paging” paginal=”${pg}”>
<columns>
<column label=””/>
<column label=””/>
</columns>
<rows>
<row>
<label value=””/> //第1行第1列
<textbox width=””/> //第1行第2列
</row>
</rows>
</grid>
<grid width=”300px” mold=”paging” paginal=”${pg}”>
<columns>
<column label=””/>
<column label=””/>
</columns>
<rows>
<row>
<label value=””/> //第1行第1列
<textbox width=””/> //第1行第2列
</row>
</rows>
</grid>
</hbox>
</vbox>
OnPaging事件及方法:
一旦用户点击了paging组件的分页数字,onPaging事件会被送至grid,onPaging方法会处理此事件,默认情况下,次方法或使rows内容无效,也就是刷新
如果想实现create-on-demand特性,可以为grid的onPaging事件添加一个事件监听器
Grid.addEventListener(org.zkoss.zul.event.ZulEvents.ON_PAGING, new MyListener());
排序:
实况数据:(和listbox一样)
<window title=”” border=”normal”>
<zscript>
String[] data = new String[30];
for(int j=0; j< data.length; ++j){
data[j] = “option” + j;
}
ListModel strset = new SimpleListModel(data);
</zscript>
<grid width=”100px” height=”100px” model=”${strset}”>
<columns>
<column label=”循环加载实况数据” />
</columns >
</grid>
</window>
相关推荐
- 在二进制版本的结构和内容(第四章)中,`dist\lib\ext` 下的 `jfreechar.jar` 应为 `jfreechart.jar` 这些问题可能会影响资源包的正常使用,请在安装和配置时特别注意。 #### 结语 通过这篇文档,我们不仅了解...
ZK 8.0.0端参考 ZK 8.0.0组件开发的必需品 ZK 8.0.0组件引用 ZK 8.0.0配置参考 ZK 8.0.0开发人员的参考 ZK 8.0.0风格定制指南 ZK 8.0.0 ZUML参考 zk-mvvm-book
本指南为 ZK 的新手提供了全面的入门指导,从环境搭建到创建第一个应用,再到运行示例应用,都进行了详细的介绍。通过遵循这些步骤,即使是完全没有 Java 背景的开发者也能快速掌握 ZK 的基本操作,并能够开始构建...
ZK是一个事件驱动(event-driven)的,基于组件(component-based)的,用以丰富网络程序中用户界面的框架。ZK包括一个基于AJAX事件驱动的引擎(engine),一套丰富的XUL和XHTML,以及一种被称为ZUML(ZK User Interface ...
第6到8章介绍ZUML(ZK User Interface Markup Language)语言,包括ZUML语言本身以及如何在ZUML页中善用XUL及XHTML组件. 第9章介绍巨集组件,第10章则是说明高级功能.第11章以后是介绍一些客制化方法或是与外部系统(如...
ZK框架是一个用JAVA实现的简单但是功能强大的表现层框架。...可以做到没有JavaScript,只通过ZUML(ZK User Interface Markup Language)这种标识语言即可做到界面创建和事件响应。 此为zk-bin包6.5.1版本
最新的前端框架ZK开发必备 ZK 8.0.0端参考 ZK 8.0.0组件开发的必需品 ZK 8.0.0组件引用 ZK 8.0.0配置参考 ZK 8.0.0开发人员的参考 ZK 8.0.0风格定制指南 ZK 8.0.0 ZUML参考 zk-mvvm-book
ZK框架提供了丰富的组件,如ListBox和Grid等,组件与数据的绑定是开发ZK应用时的常见需求。例如,在ListBox组件中可以绑定一个数据集合,并且利用ZK提供的方法来动态更新ListBox的内容。同样,在Grid组件中也可以...
#### 七、ZUML 页面及 XUL 组件集 - **基本组件**:ZK 提供了丰富的 UI 组件库,包括标签、按钮、单选按钮等。 - **布局组件**:用于组织 UI 元素的布局,如 box、grid 等。 - **特殊组件**:如窗口、树控件等,...
ZK框架还提供了多种内置的Model组件,例如ListModel、ModelGroups、ModelTree等,以及用于数据展示的组件,比如Listbox、Grid、Tree等。这些组件被组织成模板,便于开发者在视图中重用,并且提供了相应的Renderer来...
- **与Java紧密结合**:虽然这一点是ZK的优势之一,但也意味着对于组件的定制和扩展只能通过Java语言来实现,缺乏与业务逻辑层的解耦。 - **学习资源有限**:尽管ZK框架功能强大,但相较于其他主流框架,其学习...
- **Model**:ZK支持多种类型的数据模型,包括列表模型、分组模型等,以便于管理不同类型的数据集。 - **View**:视图层主要是由UI组件构成,通过数据绑定与模型层进行通信。 ##### MVVM模式 - **MVVM(Model-View...
- 除了通过 ZUML(ZK 的 XML 描述语言)创建组件外,还可以直接使用 Java API 创建组件。 - 这种方法适用于需要更精细控制的情况。 - **不使用 ZUML 开发 ZK 应用程序:** - 虽然 ZUML 提供了一种直观的方式来...
ZK不仅仅是一款简单的框架,它还包含了AJAX事件驱动引擎、一套丰富的界面组件以及ZK用户界面开发语言(ZUML),这些特性共同构成了ZK的核心竞争力。 **传统Web应用程序** - 传统Web应用程序通常采用表单提交的方式...
- ZK提供了丰富的组件库,支持多种UI元素的创建和管理,包括但不限于列表框、滑块、音频播放器等。 - 组件的设计和使用方式类似于桌面应用程序中的控件,大大简化了Web应用的界面设计过程。 - **ZUML语言**: - ...
ZK包括一个基于 AJAX事件驱动的引擎(engine),一套丰富的XUL和XHTML,以及一种被称为ZUML(ZK User Interface Markup Language,ZK用户界面标记语言)的标记语言。 有了ZK,您可以利用XUL和XHTML的丰富特性来呈现您的...
- **ZUML标记语言**:ZK提供了一种名为ZUML的标记语言,用于定义用户界面的布局和组件,大大简化了UI开发过程。 #### 五、ZK框架的关键优势 - **简化开发流程**:通过提供组件化开发方式和事件驱动机制,ZK降低了...
### zk学习文档知识点详解 #### 一、简介 **ZK**是一种先进的开源框架,用于构建高度交互式的网络应用程序。它结合了服务器端组件模型与客户端JavaScript的强大功能,从而简化了开发过程,使得开发者能够专注于...
ZK提供了多种方式来创建和运行你的第一个应用,无论你是使用Eclipse、NetBeans还是手动设置,都能找到适合的教程。这些教程通常会涵盖从项目创建到运行测试的完整流程,帮助你快速上手。 - **Eclipse with ZKStudio...