`
2277259257
  • 浏览: 518634 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ZK----第七章 ZUML页面组件集之listbox、grid列表

 
阅读更多

列表: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&lt; 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,可以使用auxheadauxheader组件指定辅助表头,
辅助表头支持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&lt; 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>

分享到:
评论

相关推荐

    ZK-quickstart-3.0.0-cn快速入门中文版

    - 在二进制版本的结构和内容(第四章)中,`dist\lib\ext` 下的 `jfreechar.jar` 应为 `jfreechart.jar` 这些问题可能会影响资源包的正常使用,请在安装和配置时特别注意。 #### 结语 通过这篇文档,我们不仅了解...

    ZK 6.5.0版本全面文档,供专业开发,学习 zk-mvvm-book ,ZK 8.0.0 Client-side Reference

    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-quickstart-3.6.1

    本指南为 ZK 的新手提供了全面的入门指导,从环境搭建到创建第一个应用,再到运行示例应用,都进行了详细的介绍。通过遵循这些步骤,即使是完全没有 Java 背景的开发者也能快速掌握 ZK 的基本操作,并能够开始构建...

    ZK-devguide

    ZK是一个事件驱动(event-driven)的,基于组件(component-based)的,用以丰富网络程序中用户界面的框架。ZK包括一个基于AJAX事件驱动的引擎(engine),一套丰富的XUL和XHTML,以及一种被称为ZUML(ZK User Interface ...

    ZK开发手册(中文教程)

    第6到8章介绍ZUML(ZK User Interface Markup Language)语言,包括ZUML语言本身以及如何在ZUML页中善用XUL及XHTML组件. 第9章介绍巨集组件,第10章则是说明高级功能.第11章以后是介绍一些客制化方法或是与外部系统(如...

    zk-bin-6.5.1.1.zip

    ZK框架是一个用JAVA实现的简单但是功能强大的表现层框架。...可以做到没有JavaScript,只通过ZUML(ZK User Interface Markup Language)这种标识语言即可做到界面创建和事件响应。 此为zk-bin包6.5.1版本

    ZK前端框架

    最新的前端框架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开发手册和注意事项

    ZK框架提供了丰富的组件,如ListBox和Grid等,组件与数据的绑定是开发ZK应用时的常见需求。例如,在ListBox组件中可以绑定一个数据集合,并且利用ZK提供的方法来动态更新ListBox的内容。同样,在Grid组件中也可以...

    ZK中文操作手冊.pdf

    #### 七、ZUML 页面及 XUL 组件集 - **基本组件**:ZK 提供了丰富的 UI 组件库,包括标签、按钮、单选按钮等。 - **布局组件**:用于组织 UI 元素的布局,如 box、grid 等。 - **特殊组件**:如窗口、树控件等,...

    ZK框架开发手册

    ZK框架还提供了多种内置的Model组件,例如ListModel、ModelGroups、ModelTree等,以及用于数据展示的组件,比如Listbox、Grid、Tree等。这些组件被组织成模板,便于开发者在视图中重用,并且提供了相应的Renderer来...

    zk框架学习

    - **与Java紧密结合**:虽然这一点是ZK的优势之一,但也意味着对于组件的定制和扩展只能通过Java语言来实现,缺乏与业务逻辑层的解耦。 - **学习资源有限**:尽管ZK框架功能强大,但相较于其他主流框架,其学习...

    grovvy Reference zk

    - **Model**:ZK支持多种类型的数据模型,包括列表模型、分组模型等,以便于管理不同类型的数据集。 - **View**:视图层主要是由UI组件构成,通过数据绑定与模型层进行通信。 ##### MVVM模式 - **MVVM(Model-View...

    ZK Developer Guide

    - 除了通过 ZUML(ZK 的 XML 描述语言)创建组件外,还可以直接使用 Java API 创建组件。 - 这种方法适用于需要更精细控制的情况。 - **不使用 ZUML 开发 ZK 应用程序:** - 虽然 ZUML 提供了一种直观的方式来...

    ZK(AJAX开发工具)开发手册

    ZK不仅仅是一款简单的框架,它还包含了AJAX事件驱动引擎、一套丰富的界面组件以及ZK用户界面开发语言(ZUML),这些特性共同构成了ZK的核心竞争力。 **传统Web应用程序** - 传统Web应用程序通常采用表单提交的方式...

    zk开发指南

    - ZK提供了丰富的组件库,支持多种UI元素的创建和管理,包括但不限于列表框、滑块、音频播放器等。 - 组件的设计和使用方式类似于桌面应用程序中的控件,大大简化了Web应用的界面设计过程。 - **ZUML语言**: - ...

    《ZK开发手册(ajava.org整理版)》

    ZK包括一个基于 AJAX事件驱动的引擎(engine),一套丰富的XUL和XHTML,以及一种被称为ZUML(ZK User Interface Markup Language,ZK用户界面标记语言)的标记语言。 有了ZK,您可以利用XUL和XHTML的丰富特性来呈现您的...

    ZK开发手册 ZK开发手册

    - **ZUML标记语言**:ZK提供了一种名为ZUML的标记语言,用于定义用户界面的布局和组件,大大简化了UI开发过程。 #### 五、ZK框架的关键优势 - **简化开发流程**:通过提供组件化开发方式和事件驱动机制,ZK降低了...

    zk学习文档

    ### zk学习文档知识点详解 #### 一、简介 **ZK**是一种先进的开源框架,用于构建高度交互式的网络应用程序。它结合了服务器端组件模型与客户端JavaScript的强大功能,从而简化了开发过程,使得开发者能够专注于...

    zk 安装框架

    ZK提供了多种方式来创建和运行你的第一个应用,无论你是使用Eclipse、NetBeans还是手动设置,都能找到适合的教程。这些教程通常会涵盖从项目创建到运行测试的完整流程,帮助你快速上手。 - **Eclipse with ZKStudio...

Global site tag (gtag.js) - Google Analytics