45KDTable控件.docx

上传人:b****3 文档编号:4420581 上传时间:2022-12-01 格式:DOCX 页数:49 大小:37.97KB
下载 相关 举报
45KDTable控件.docx_第1页
第1页 / 共49页
45KDTable控件.docx_第2页
第2页 / 共49页
45KDTable控件.docx_第3页
第3页 / 共49页
45KDTable控件.docx_第4页
第4页 / 共49页
45KDTable控件.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

45KDTable控件.docx

《45KDTable控件.docx》由会员分享,可在线阅读,更多相关《45KDTable控件.docx(49页珍藏版)》请在冰豆网上搜索。

45KDTable控件.docx

45KDTable控件

KDTable控件

Ø功能分类

增加(删除)行或列

行、列、单元的属性和值

填充数据

动态刷新Table

数据融合

选择信息

编辑

分组

输入输出

事件

格式化

打印

辅助编辑功能

其他

添加KDTable显示后待执行动作说明

表格列宽自动调整设置

Style接口

Obj可以是KDTable对象,也可以是IRow,IColumn,ICell对象,红色部分为旧的使用方法(已废除)

//锁定

Obj.getStyleAttributes().getProtection().setLocked(true);

Obj.getStyleAttributes().setLocked(true);

Obj.getStyleAttributes().getLocked()

Obj.getStyleAttributes().isLocked()

//隐藏

Obj.getStyleAttributes().getProtection().setHided(true);

Obj.getStyleAttributes().setHided(true);

Obj.getStyleAttributes().getHided()

Obj.getStyleAttributes().isHided()

//对齐(水平和垂直)

Obj.getStyleAttributes().getAlignment().setHorzionAlign(Alignment.RIGHT);

Obj.getStyleAttributes().setHorizontalAlign(HorizontalAlignment.RIGHT);

Obj.getStyleAttributes().getAlignment().setVerticalAlign(Alignment.TOP);

Obj.getStyleAttributes().setVerticalAlign(VerticalAlignment.TOP);

//是否折行

Obj.getStyleAttributes().getAlignment().setWrapText(true);

Obj.getStyleAttributes().setWrapText(true);

//背景色

Obj.getStyleAttributes().getInterior().setBackground(Color.YELLOW);

Obj.getStyleAttributes().setBackground(Color.YELLOW);

//边框笔形(实心线或点线等)

Obj.getStyleAttributes().getBorder(Border.RIGHT).setStyle(Border.PS_SOLID);

Obj.getStyleAttributes().setBorderPenStyle(Position.RIGHT,PenStyle.PS_SOLID);

Obj.getStyleAttributes().getBorder(Border.RIGHT).setColor(Color.YELLOW);

Obj.getStyleAttributes().setBorderColor(Position.RIGHT,Color.YELLOW);

//字体

Obj.getStyleAttributes().getFont().setSize(16);

Obj.getStyleAttributes().setFontSize(16);

Obj.getStyleAttributes().getFont().setBold(true);

Obj.getStyleAttributes().setBold(true);

增加(删除)行或列

✧增加列

//指定插入位置

table.addColumn(index);

//插入到最后

table.addColumn();

//一次性添加多行

addColumns(colCount);

✧删除列

table.removeColumn(index);

✧增加表头行

//指定插入位置

table.addHeadRow(index);

//插入到最后

table.addHeadRow();

//一次性添加多个表头行

table.addHeadRows(headRowCount);

✧删除表头行

table.removeHeadRow(index);

✧删除所有表头行

table.removeHeadRows();

✧增加表体行

//指定插入位置

table.addRow(index);

//插入到最后

table.addRow();

//一次性添加表体行

table.addRows(rowCount);

✧删除表体行

table.removeRow(index);

✧删除所有表体行

table.removeRows();

行、列、单元的属性和值

✧如何获取列、行、单元对象

//获取列对象

IColcol=table.getColumn(0);

//获取表头行对象

IRowheadRow=table.getHeadRow(0);

//获取表体行对象

IRowrow=table.getRow(0);

//获取单元对象

ICellheadCell=row.getCell(0);

ICellcell=row.getCell(0);

✧如何设置单元的值

//value为任意object

cell.setValue(value);

✧如何修改行、列、单元的Style(字体、背景、锁定、隐藏等)

//隐藏列或行

col.getStyleAttributes().setHided(true);

row.getStyleAttributes().setHided(true);

//设置单元背景色

cell.getStyleAttributes().setBackground(color);

//设置单元字体颜色、字体名称、字体大小

cell.getStyleAttributes().setFontColor(color);

cell.getStyleAttributes().setFontName(strName);

cell.getStyleAttributes().setFontSize(size);

//锁定表格、行、列、单元

table.getStyleAttributes().setLocked(true);

row.getStyleAttributes().setLocked(true);

col.getStyleAttributes().setLocked(true);

cell.getStyleAttributes().setLocked(true);

//设置对齐方式

table.getStyleAttributes().setHorizontalAlign(HorizontalAlignment.RIGHT);

//设置自动折行

table.getStyleAttributes().setWrapText(true);

//隐藏表格、行、列、单元的边框

table.getStyleAttributes().setBorderLineStyle(Position.RIGHT,LineStyle.NULL_LINE);//隐藏表格单元的右边框

table.getStyleAttributes().setBorderLineStyle(Position.BOTTOM,LineStyle.NULL_LINE);//隐藏表格单元的下边框

注意:

KDTable在默认情况下左边框和上边框为空,右边框和下边框不为空。

上述代码也可应用在具体某个row、column或cell上。

✧如何修改行高、列宽

//修改行高列宽

table.getRow

(2).setHeight(20);

table.getColumn

(1).setWidth(100);

填充数据

✧实模式下添加数据

实模式下填充数据时,不用事先指定行总数,添加后KDTable会自动记录总行数。

intcolCount=13;

intheadRowCount=1;

introwCount=100;

inti;

intj;

//添加列

for(i=0;i

{

table.addColumn(j);

}

//添加表头行

IRowrow;

ICellcell;

for(i=0;i

{

//添加空表头行

row=table.addHeadRow(i);

for(j=0;j

{

//获取表头行的单元,并设置单元的值

cell=row.getCell(j);

cell.setValue("head"+i+""+j);

}

}

//添加表体行(即数据行)

for(i=0;i

{

//添加空表体行

row=table.addRow(i);

for(j=0;j

{

//获取表头行的单元,并设置单元的值

cell=row.getCell(j);

cell.setValue("body"+i+""+j);

}

}

✧如何指定虚模式

KDTable支持三种取数模式:

实模式、虚模式分页、虚模式分组,默认为实模式。

//实模式

table.getDataRequestManager().setDataRequestMode(KDTDataRequestManager.REAL_MODE);

//虚模式分页

table.getDataRequestManager().setDataRequestMode(KDTDataRequestManager.VIRTUAL_MODE_PAGE);

//虚模式分组

table.getDataRequestManager().setDataRequestMode(KDTDataRequestManager.VIRTUAL_MODE_GROUP);

✧如何指定总行数

实模式下填充数据时,不用事先指定行总数,添加后KDTable会自动记录总行数。

虚模式下填充数据时,可以事先指定总行数,也可以不指定,如果不指定总行数,KDTable将根据每次取数返回的行数进行判断,若取回的行数小于页大小,则认为取数已到达最后一页。

//设置总行数为500

table.setRowCount(500);

✧如何指定页大小

页大小即指虚模式分页模式下,每次缺页取数时的总行数,默认值为100。

//设置页大小为200行

table.getDataRequestManager().setPageRowCount(200);

✧虚模式下通过事件添加数据

要想通过事件添加数据,必须实现KDTDataRequestListener的tableDataRequest方法

//创建列和表头

...

//指定虚模式分页模式

table.getDataRequestManager().setDataRequestMode(KDTDataRequestManager.VIRTUAL_MODE_PAGE);

//设置总行数为500,可以不指定总行数

table.setRowCount(500);

//添加数据请求事件侦听者

table.getDataRequestManager().addDataRequestListener(newKDTDataRequestListener()

{

publicvoidtableDataRequest(KDTDataRequestEvente)

{

//获取请求的起始行、起始列、结束行、结束列信息

intfirstRow=e.getFirstRow();

intlastRow=e.getLastRow();

intfirstCol=e.getFirstCol();

intlastCol=e.getLastCol();

intcolCount=lastCol-firstCol+1;

IRowrow;

ICellcell;

inti,j;

//填充数据

for(i=firstRow;i<=lastRow;i++)

{

row=table.addRow(i);

for(j=firstCol;j<=lastCol;j++)

{

row.getCell(j).setValue("cell"+i+""+j);

}

}

}

}

);

✧虚模式通过绑定填充数据

绑定即指绑定到BOS中的query对象或实体对象。

要想通过事件添加数据,必须实现RequestRowSetListener的doRequestRowSet方法

//创建列和表头

...

//指定虚模式分页模式

table.getDataRequestManager().setDataRequestMode(KDTDataRequestManager.VIRTUAL_MODE_PAGE);

//设置总行数为500,可以不指定总行数

table.setRowCount(500);

//指定绑定的内容queryName是query对象的名称,fieldNameArray是字符串数组,分别代表每一列对应的字段名称

table.putBindContents(queryName,fieldNameArray);

//添加请求绑定数据的事件侦听者

table.addRequestRowSetListener(newRequestRowSetListener()

{

publicvoiddoRequestRowSet(RequestRowSetEvente)

{

//获取操作类型、取数参数和字段名数组

intoper=e.getOper();

Objectparam1=e.getParam1();

Objectparam2=e.getParam2();

String[]fields=e.getFields();

switch(oper)

{

//循序读取RowSet,对应于虚模式分页模式

caseRequestRowSetEvent.EVT_OPER_MOVE:

intstart;

intend;

//将参数一转化为当前请求的起始行号

if(param1instanceofInteger)

{

start=((Integer)param1).intValue();

}

else

{

start=0;

}

//将参数二转化为当前请求的结束行号

if(param2instanceofInteger)

{

end=((Integer)param2).intValue();

if(end<0)

{

end=999;

}

}

else

{

end=999;

}

//返回RowSet

e.setRowSet(getMoveRowSet(start,end,fields));

break;

caseRequestRowSetEvent.EVT_OPER_GROUP:

break;

caseRequestRowSetEvent.EVT_OPER_WHERE:

break;

default:

break;

}

}

//模拟返回一个RowSet

privateIRowSetgetMoveRowSet(intstart,intend,String[]fields)

{

if((fields==null)||(fields.length==0))

{

fields=colFields;

}

else

{

}

try

{

DynamicRowSetdrs=newDynamicRowSet(fields.length);

for(inti=0;i

{

drs.setColInfo(

i+1,

fields[i],

fields[i],

Types.INTEGER,

null);

}

Randomrand=newRandom(System.currentTimeMillis());

for(inti=start;i<=end;i++)

{

drs.moveToInsertRow();

drs.updateInt(1,i);

for(intj=2;j<=fields.length;j++)

{

drs.updateInt(j,rand.nextInt());

}

drs.insertRow();

}

drs.beforeFirst();

//drs.absolute

(1);

returndrs;

}

catch(SQLExceptionsqle)

{

sqle.printStackTrace();

}

returnnull;

}

}

);

✧取数结束事件

KDTable通过取数事件取得数据并填充到table中之后,会发出此事件

//添加数据填充结束事件侦听者

table.addKDTDataFillListener(newKDTDataFillListener()

{

publicvoidafterDataFill(KDTDataRequestEvente)

{

//dosomething

}

}

);

动态刷新Table

✧如何刷新表体数据行(表头不变)

//示例1:

删除所有表体行,并重新发取数事件

//该方法不会修改原先的绑定信息

table.removeRows();

 

//示例2:

删除所有表体行,修改绑定信息并重新取数

//指定新的query和字段名

table.putBindContends(objectName,fieldNams);

//重新取数

table.removeRows();

✧如何刷新整个table(表头也发生变化)

//示例1:

删除原有表头、表体数据及所有列信息

table.removeColumns();

//示例2:

设置新的表头和数据

//删除原有表头、表体数据及所有列信息,该方法会清空原先每一列的绑带信息

table.removeColumns();

//添加新列

for(inti=0;i<5;i++)

{

table.addColumn();

}

//添加新表头

table.addHeadRow();

//指定新的绑带信息

table.putBindContends(objectName,fieldNams);

//重新取数

table.removeRows();

数据融合

✧如何进行自由融合

自由融合无须指定区域,KDTable将根据指定的融合模式,融合相邻且值相等的单元。

//自由行融合

table.getMergeManager().setMergeMode(KDTMergeManager.FREE_ROW_MERGE);

//自由列融合

table.getMergeManager().setMergeMode(KDTMergeManager.FREE_COLUMN_MERGE);

//自由融合

table.getMergeManager().setMergeMode(KDTMergeManager.FREE_MERGE);

✧如何进行指定融合

指定融合必须指定区域,KDTable将不管指定区域中的单元值是否相等,强制融合指定区域的单元。

//获取融合管理器

KDTMergeManagermm=table.getMergeManager();

//融合指定区域

mm.mergeBlock(0,0,1,1,KDTMergeManager.SPECIFY_MERGE);

✧如何拆分融合块

//拆分指定区域

table.getMergeManager().splitBlock(0,0,1,1);

✧如何指定行列不融合

//指定第一列不融合

table.getColumn

(1).setMergeable(false);

//指定第0行不融合

table.getRow(0).setMergeable(false);

✧如何进行表头融合

表头融合与表体的融合类似,只要把getMergeManager改为getHeadMergeManager即可

//表头自由行融合

table.getHeadMergeManager().setMergeMode(KDTMergeManager.FREE_ROW_MERGE);

//表头指定融合

//获取表头融合管理器

KDTMergeManagermm=table.getHeadMergeManager();

//进行指定融合

mm.mergeBlock(0,0,1,1,KDTMergeManager.SPECIFY_MERGE);

✧如何设置缩排

数据融合后,可以以合并单元格的方式展现,也可通过缩排的方式实现。

设置列缩排后,同一列的相邻的数据将仅显示第一个,其余的显示为空单元。

//设置行融合

table.getMergeManager().setMergeMode(KDTMergeManager.FREE_ROW_MERGE);

//设置缩排模式table.getMergeManager().setViewMode(KDTMergeManager.VIEW_AS_INDENTATION);

选择信息

✧如

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1