45KDTable控件.docx
- 文档编号:26859394
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:59
- 大小:38.12KB
45KDTable控件.docx
《45KDTable控件.docx》由会员分享,可在线阅读,更多相关《45KDTable控件.docx(59页珍藏版)》请在冰豆网上搜索。
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); 选择信息 ✧如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 45 KDTable 控件