📄 model.zul
字号:
<window title="Live Data Demo" border="normal">
Grouping with Live Data in Paging - Different Model should has different grouping
<groupbox open="false"><caption label="click to open instructaions"/>
<html><![CDATA[
<ol>
<li>Click 'group' (in column menu)to test group on column1 by name (Same alpha should in same group, forexample gorup A,group B),</li>
<li>you also need to check the group order in asc and dsc by click 'group' again</li>
<li>Click 'group '(in column menu) to test group on column2 by number (Same value should in same group, forexample group 0,group 1)</li>
<li>you also need to check the group order in asc and dsc by click 'group' again</li>
<li>in both group by col0 or col1, you should click the sort on the header, the group order will not change but order of item in each will change</li>
</ol>
]]></html>
</groupbox>
<zscript><![CDATA[//@DECLARATION
class MyComparator implements Comparator,GroupComparator {
boolean _asc;
boolean _gbyint;
public MyComparator(boolean asc,boolean gbyint) {
_asc = asc;
_gbyint = gbyint;
}
public int compare(Object o1, Object o2) {
String s1 = (String)o1;
String s2 = (String)o2;
int v = s1.compareTo(s2);
return _asc ? v: -v;
}
public int compareGroup(Object o1,Object o2){
String s1 = (String)o1;
String s2 = (String)o2;
if(_gbyint){
s1 = s1.substring(s1.length()-1);
s2 = s2.substring(s2.length()-1);
}else{
s1 = s1.substring(0,1);
s2 = s2.substring(0,1);
}
int v = s1.compareTo(s2);
return _asc ? v: -v;
}
}
class MyRowRenderer implements RowRenderer{
public void render(Row row, java.lang.Object data){
if(data instanceof String[]){
String str = ((String[])data)[0].toString();
new Label(str).setParent(row);
if(Row.class.equals(row.getClass()))
new Label(str.charAt(str.length()-1)+"").setParent(row);
}else if (data instanceof String){
String str = (data).toString();
new Label(str).setParent(row);
if(Row.class.equals(row.getClass()))
new Label(str.charAt(str.length()-1)+"").setParent(row);
}else{
new Label("UNKNOW:"+data.toString()).setParent(row);
if(Row.class.equals(row.getClass()))
new Label("UNKNOW:"+data.toString()).setParent(row);
}
}
}
MyRowRenderer renderer = new MyRowRenderer();
]]></zscript>
<zscript><![CDATA[
ArrayList data = new ArrayList();
String[] datas ;
for(int j=0; j<=9; ++j) {
data.add("A option "+j);
}
for(int j=0; j<=9; ++j) {
data.add("B option "+j);
}
for(int j=0; j<=9; ++j) {
data.add("C option "+j);
}
for(int j=0; j<=9; ++j) {
data.add("D option "+j);
}
for(int j=0; j<=9; ++j) {
data.add("E option "+j);
}
datas = data.toArray(new String[0]);
Comparator asc1 = new MyComparator(true,false);
Comparator dsc1 = new MyComparator(false,false);
Comparator asc2 = new MyComparator(true,true);
Comparator dsc2 = new MyComparator(false,true);
GroupsModel model1 = new ArrayGroupsModel(datas,asc1);
GroupsModel model2 = new org.zkoss.zkdemo.test2.group.Test1ArrayGroupsModel(datas,(Comparator)asc1);
]]></zscript>
<div>
<button onClick="gd1.setModel(model1);" label="data head"/>
<button onClick="gd1.setModel(model2)" label="data ,head, foot"/>
<button onClick='if(gd1.mold.equals("default")){gd1.setMold("paging");gd1.setPageSize(6);}else{gd1.mold="default";}' label="set Paging"/>
<button onClick="gd1.invalidate();" label="invalidate"/>
</div>
<grid width="500px" height="400px" model="${model2}" id="gd1" rowRenderer="${renderer}" mold="paging">
<columns menupopup="auto" >
<column label="String" sortAscending="${asc1}" sortDescending="${dsc1}"/>
<column label="Number" sortAscending="${asc2}" sortDescending="${dsc2}" width="100px"/>
</columns>
</grid>
</window>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -