BOS开发- KDTable常用处理代码
更新时间:2024-01-27 18:22:01 阅读量: 教育文库 文档下载
- bos开发平台推荐度:
- 相关推荐
目录
如何使得KDTable支持多行文本的显示: ............................................................................ 1 如何设置KDTable向下键自动新增行 ................................................................................ 2 如何设置KDTable Tab键和Enter键自动新增行 ................................................................. 2 如何调整KDTable的Tab键和enter键的行为 .................................................................... 3 KDTable如何根据内容自动调整行高列宽 .......................................................................... 3 KDTable的排序要如何实现 ............................................................................................... 3 KDTable部分数据导出到excel后显示格式不一致 .............................................................. 4 如何控制KDTable的显示格式 ........................................................................................... 5 如何理解KDTable的Render和Editor ................................................................................ 6 如何在取数之后,调整KDTable单元格的内容或者显示格式 ............................................. 6 KDTable刷新后,滚动条跳到最后修改位置 ....................................................................... 7 如何通过代码控制KDTable新增行 .................................................................................... 7 对于分录设置排序............................................................................................................ 8 EAS Bos 合计行代码 ......................................................................................................... 8 EASBos 对于某个权限的验证 .......................................................................................... 10 关于Bos 开发中使用字段类型是选择已有基础资料的的源代码 ...................................... 10 关于对EASbos 分录设定默认值...................................................................................... 11 关于eas 单据中有多个分录的情况下,默认是哪个实现了排序....................................... 11 eas bos 客户端常用代码 ................................................................................................. 12 关于验证常用的几个类文件和代码 ................................................................................. 13 EAS多分录单据分录添加按钮,加到最左边 .................................................................... 14 禁用EAS多分录单据分录上的操作按钮 .......................................................................... 15 显示EAS标准单据自带kdtable(kdtEntry) 右键导出 excel菜单 ........................................ 16 列表界面根据情况设置单行背景色高亮 .......................................................................... 17 修改ListUI的表体列的显示文字 ..................................................................................... 18
如何使得KDTable支持多行文本的显示:
只需要给KDTable的列设置一个多行显示的属性即可。设置的方法: col.getStyleAttributes().setWrapText(true);
如何设置KDTable向下键自动新增行
KDTableHelper里面的方法 1. /**
2. * 在table的最后一行按下箭头自动新增行。 3. *
4. * @param table 5. * @paramisAddRow 6. * 是否自动新增行
7. * @paramactionAfterAddRow 8. * 新增行后将触发的事件 9. */
10.public static void downArrowAutoAddRow(KDTable table, booleanisAddRow, Action actionAfterAddRow)
如何设置KDTable Tab键和Enter键自动新增行
KDTableHelper的这个方法可以满足这个需求: 1. /**
2. * 修改Enter键的行为使它于Tab一致 3. *
4. * @param table 5. * @paramisAddRow
6. * 焦点到了最后一行,再次按下enter和tab是否自动增加新行 7. * @paramactionAfterAddRow 8. * 添加新行后的事件 9. */
10.public static void updateEnterWithTab(KDTable table, booleanisAddRow, Action actionAfterAddRow)
如何调整KDTable的Tab键和enter键的行为
KDTable默认情况下Tab键和Enter键分别起到单元格选择调整的作用,Tab键跳到右侧单元格,Enter键跳到下方的单元格。
KDTableHelper提供了一些方法用于修改Enter键和Tab键的行为。
KDTableHelper.releaseEnter:释放Enter键,即KDTable将不响应Enter键。 KDTableHelper.releaseTab:释放Tab键,即KDTable将不响应Tab键。 KDTableHelper.releaseEnterAndTab:释放Tab和Enter键。
KDTable如何根据内容自动调整行高列宽
双击KDTable的两行(或者列)之间的边线,将会根据内容自动调整行高(列宽)。 通过调用KDTableHelper的autoFitRowHeight和autoFitColumnWidth这两个方法也可以调整行高列宽。计算行高和列宽需要结合字体、Graphics上下文,是比较耗时的,应有时需要注意。
KDTable的排序要如何实现
KDTable的排序都是由KDTSortManager来实现的。分为实模式和虚模式两种应用模式。 虚模式:排序的具体实现由外部通过继承并重写KDTSortManager的sort方法来实现。例如ListUI的就是重写了这个sort方法,在这个方法中清楚KDTable中的数据,然后刷新KDTable,用新的排序方式重新向服务端取数。 1. KDTSortManagersm = new KDTSortManager(table) 2. {
3. public void sort(intcolIndex, intsortType) 4. {
5. // 一定要调用super.sort,这句代码将影响表头排序箭头的显示效果 6. super.sort(colIndex, sortType);
7.
8. if (sortType == KDTSortManager.SORT_ASCEND) 9. { 10. // 升序 11. } 12. else 13. { 14. // 降序 15. } 16. } 17. }; 复制代码
实模式:KDTSortManager内置了实模式下的排序方式,不需要重写sort方法即可实现实模式的排序,当然,你也可以重写sort方法来实现自己的排序逻辑。 1. KDTSortManagersm = new KDTSortManager(table) 2. sm.setSortAuto(true);
KDTable中如何调整行高列宽
有些时候,KDTable中单元格的文本内容过长,单元格显示不下,需要调整行高或者列宽,通过鼠标双击行或者列的边框线,KDTable会自动调整行高或者列宽到合适位置。 如果想要通过代码在后台调整行高列宽到合适位置,下面的方法分别对应行高、列宽、表头行高:
KDTableHelper的autoFitRowHeight、autoFitColumnWidth、autoFitHeadRowHeight 由于计算合适行高列宽,需要结合当前Graphics以及字体等信息进行计算,这个动作是相对比较耗时的,因此这些方法要结合实际情况使用,大数据量下使用这些方法,将可能导致性能问题。
KDTable部分数据导出到excel后显示格式不一致
这种问题一般是由于没有给KDTable设置正确的格式导致的。主要分为一下几类: 1、由数字组成的长字符串导出excel后显示为科学计数法或字符串显示不完整,例如手机号13433445678。
解决办法:给KDTable的列设置格式串
(col.getStyleAttributes().setNumberFormat(\,指定该列为字符型即可。 2、数字位过多的大数字导出excel后显示为科学计数法或精度丢失。 解决办法:给KDTable的列设置格式串
(col.getStyleAttributes().setNumberFormat(\。这里的0.00只是示例,数字格式还有很多种,具体可以参考前面显示格式的介绍。 3、日期类型数据导出excel后显示格式不正确。 解决办法:给KDTable的列设置格式串
(col.getStyleAttributes().setNumberFormat(\。这里的yyyy-MM-dd只是示例,日期格式还有很多种,具体可以参考前面显示格式的介绍
如何控制KDTable的显示格式
KDTable提供了格式化的功能,通过格式化的功能可以控制单元格的显示格式,设置列格式的方法:
table.getColumn(colIndex).getStyleAttributes().setNumberFormat(formatString); 目前KDTable已能支持Excel2003的格式串,只有个缺陷:格式串中有中文导出尚有问题,中文变乱码,建议将来都使用Excel2003的格式串,但旧的格式化串还支持,但是如果该表需要导出到excel,必须使用新的格式串,否则导出到excel,可能会显示不一致。 文本类:
1、@ 指定内容按文本显示,主要用于编码、手机号等用数字表示的文本。设定该格式后,可以保证导出excel时,此类文本不会被转成数字显示。 数值类:
1、 0.00 表示两位小数,例如3.10367显示为3.10
2、 0.## 表示两位小数,当小数末位为0时,0将不显示。例如3.10显示为3.1 3、 \表示两位小数,且显示千份位 4、 #,##0.00;[Red]#,##0.00 表示负数红字
5、0.00;[Red]0.00;\表示负数红字,且数据为0时不显示
6、0.00;[Red](0.00);\\表示正数时两位小数,负数时两位小数并显示红色,0时不显示。0.00;[Red](0.00)只是一个示例,可以为任意的数字格式串,后边再加上;\\空格)即表示
(com.kingdee.bos.dao.IObjectValue) kdtPerson .getCell(rowIndex, \ \
kdtPerson.getCell(rowIndex, \ } }
关于对EASbos 分录设定默认值
kdtEntrys_detailPanel.addAddListener(
new com.kingdee.eas.framework.client.multiDetail.IDetailPanelListener() { public void beforeEvent(
com.kingdee.eas.framework.client.multiDetail.DetailPanelEvent event) throws Exception {
IObjectValuevo = event.getObjectValue(); vo.put(\
vo.put(\
void
} public
afterEvent(com.kingdee.eas.framework.client.multiDetail.DetailPanelEvent event) throws Exception { }
});
关于eas 单据中有多个分录的情况下,默认是哪个实现了排序
protectedKDTablegetDetailTable() { return kdtEntrys; }
关键就是看这个方法中的分录是那个分录,那个分录就默认实现了排序的工程。对于其他的,可以自己使用代码实现一个简单的排序
KDTSortManagersortManager = new KDTSortManager(kdtEntrys); sortManager.setSortAuto(true); sortManager.setClickCount(1);
for(inti = 0; i eas bos 客户端常用代码 public void onLoad() throws Exception { super.onLoad(); contname.setEnabled(false); contname.setVisible(true); KDTDefaultCellEditorworkArea_editor = (KDTDefaultCellEditor) kdtEntrys .getColumn(\ KDBizPromptBoxworkArea_prompt = (KDBizPromptBox) workArea_editor .getComponent(); workArea_prompt .setQueryInfo(\ KDTDefaultCellEditorprofessional_editor = (KDTDefaultCellEditor) kdtEntrys .getColumn(\ KDBizPromptBoxprofessional_prompt = (KDBizPromptBox) professional_editor .getComponent(); professional_prompt .setQueryInfo(\ KDTDefaultCellEditoroutPerson_editor = (KDTDefaultCellEditor) kdtEntrys .getColumn(\ KDBizPromptBoxoutPerson_prompt = (KDBizPromptBox) outPerson_editor .getComponent(); outPerson_prompt.setDisplayFormat(\outPerson_prompt.setEditFormat(\outPerson_prompt.setCommitFormat(\ kdtEntrys_detailPanel.setTitle(\外包人员信息\ CompUtil.setTitlePanelLength(kdtEntrys_detailPanel, 120); } protected void verifyInput(ActionEvent e) throws Exception { KDLabelContainer[] container = new KDLabelContainer[] { contcontractNum, } contsubUnit,contprojectItem}; STExceptionexc = STRequiredUtils.checkRequiredItem(container); if (STUtils.isNotNull(exc)) { super.handUIExceptionAndAbort(exc); } String[] columnNames = new String[] { \ STException exc2 = STRequiredUtils.checkEntryRequiredItem(kdtEntrys, columnNames); if (STUtils.isNotNull(exc2)) { super.handUIExceptionAndAbort(exc2); } super.verifyInput(e); 关于验证常用的几个类文件和代码 1 TrainVerifyUtils TrainVerifyUtils.verifyRepeatRow(this, kdtEntrys, \试题类型\ 2 TrainUtils TrainUtils.getSelectedValues(tblMain); 3 commonUtilFacade if (commonUtilFacade.checkColumnDup(\ editData.getNumber(), editData.getId())) { MsgBox.showInfo(this, EASResource.getString(RES, \ SysUtil.abort(); } 4 必录项检查 // 检查必填项调用代码 KDLabelContainer[] container = new KDLabelContainer[] { contNumber, conttitle,contsystem,contBizDate,contstartTime,contendTime,conttotalScore,conttotalTime,contstate }; STExceptionexc = STRequiredUtils.checkRequiredItem(container); if (STUtils.isNotNull(exc)) { super.handUIExceptionAndAbort(exc); } EAS多分录单据分录添加按钮,加到最左边 EAS多分录标准单据的分录操作按钮是在表格右上方的,有时由于业务需求,需要添加其它的操作按钮,以满足业务需求,可以先通过BOS设计工具,在UI上任一位置添加好所需要的代码,再通过如下代码,把按钮添加到多分录表头上。当你把指定的按钮添加到分录的按钮面板上后,UI上的自动就不显示了。 先定义好方法。 /** * 给分录上添加按钮,加到最左边 * * @author syj * @date 2009-7-8 * * @param table * @param button */ private void addButtonToHMDEntry(KDTable table, KDWorkButton button) { if (table.getParent() == null || table.getParent().getParent() == null) return; // 隐藏按钮 Component c = table.getParent().getParent(); if (c instanceofDetailPanel) { JPanel panel = (JPanel) c; JPanelcontrolPanel = null; // 获取controlPanel Component[] components = panel.getComponents(); for (inti = 0; i if (\ controlPanel = (KDPanel) component; } } // 获取btn if (controlPanel != null) { Rectangle rect = table.getBounds(); int x = rect.width - (button.getWidth() + 86 + 5); controlPanel.add(button, new com.kingdee.bos.ctrl.swing.KDLayout.Constraints(x, 5, button.getWidth(), 19, 9)); } } } 禁用EAS多分录单据分录上的操作按钮 EAS多分录标准单据的分录操作按钮是在表格右上方的,有时由于业务需求,这部分数据要自动生成,不充许操作,可能需要禁用或隐藏这些按钮,由于框架没有提供相应的接口,可以通过以下代码来实现 public static void disableHMDEntryButtons(KDTable table) { if (table.getParent() == null || table.getParent().getParent() == null) return; // 隐藏按钮 Component c = table.getParent().getParent(); if (c instanceofDetailPanel) { JPanel panel = (JPanel) c; JPanelcontrolPanel = null; // 获取controlPanel Component[] components = panel.getComponents(); for (inti = 0; i Component component = components[i]; if (\ controlPanel = (KDPanel) component; } } // 获取btn if (controlPanel != null) { components = controlPanel.getComponents(); for (int j = 0; j KDWorkButtonworkButton = (KDWorkButton) component; workButton.setEnabled(false); } } } } } 显示EAS标准单据自带 kdtable(kdtEntry) 右键导出 excel菜单 框架在CoreUI中,把“导出到Excel”和“导出选择部分到Excel”2个右键菜单给隐藏掉了,可以通过覆盖下面的方法使这两个菜单显示。 /** * 显示被框架隐藏的导出Excel的右键菜单 * @author syj */ public KDTMenuManagergetMenuManager(KDTable table) { KDTMenuManagermenuManager = super.getMenuManager(table); if (menuManager != null) { Component menus[] = menuManager.getMenu().getComponents(); for (inti = 0; i return menuManager; } 列表界面根据情况设置单行背景色高亮 列表的填充是在afterTableFillData之前进行的,所以判断的代码可以加在这个方法里面。 protected void afterTableFillData(KDTDataRequestEvent e) { super.afterTableFillData(e); int count = this.tblMain.getRowCount(); if(count>0){ for(inti=0; i IRow row = tblMain.getRow(i); if(row.getCell(\&& \ row.getStyleAttributes().setBackground(new Color(255,80,30)); if(row.getCell(\ }else && \ row.getStyleAttributes().setBackground(Color.ORANGE); } } } 另外有一个execQuery方法,如果加在这个方法里,那么只有当有过滤条件和点刷新按钮时,才会起作用。 修改ListUI的表体列的显示文字 this.tblMain.getHeadRow(0).getCell(27).setValue(\所属管家\ KDTable显示枚举覆盖方法 Java代码 1. 2. 3. 4. 5. protected IQueryExecutor getQueryExecutor(IMetaDataPK queryPK, EntityViewInfo viewInfo) { IQueryExecutor executor = super.getQueryExecutor(queryPK, viewInfo); executor.option().isAutoTranslateEnum = true; return executor; } 枚举在KDTable中显示数字解决 在KDTable中,如果该列是枚举,则显示的value,不会显示别名,要显示别名有两个方法: 1、在Query中用case 语句,这个办法比较笨,如果枚举添加,或者比较多,需要重新修改Query。不建议使用。 2、覆盖父类方法getQueryExecutor Java代码 1. 2. 3. 4. 5. 6. 7. protected IQueryExecutor getQueryExecutor(IMetaDataPK queryPK, EntityViewInfo viewInfo) { IQueryExecutor iec = super.getQueryExecutor(queryPK, viewInfo); iec.option().isAutoTranslateEnum = true;//显示枚举 iec.option().isAutoTranslateBoolean=true;//显示checkbox return iec; } 3、在KDTable的列中设置Editor。这样该列也会显示成下拉框: Java代码 1. 2. private void addCtrl() { tblMain.checkParsed(); 3. 4. 5. 6. 7. 8. 9. KDComboBox tblMain_useToGuarUnit = new KDComboBox(); tblMain_useToGuarUnit.setName(\); tblMain_useToGuarUnit.setVisible(true); tblMain_useToGuarUnit.addItems(EnumUtils.getEnumList(\s.huar.common.YesOrNoEnum\).toArray()); KDTDefaultCellEditor tblMain_useToGuarUnit_CellEditor = new KDTDefaultCellEditor(tblMain_useToGuarUnit); this.tblMain.getColumn(\).setEditor(tblMain_useToGuarUnit_CellEditor); } 添加统计行 1、分录中添加统计行 protected void setTableToSumField() { super.setTableToSumField(); setTableToSumField(kdtDeviceReg, new String[] { \\ } 2、叙事薄上添加 统计行 在query中字段有是否是统计字段(isSumField)扩展属性,设为true,主键定义上添加id,叙事薄中就自动汇总了 序时簿上的排序设置 EAS单据序时簿的排序,通过修改相应Query上的排序是不生效的,这时需要重写序时簿的getQueryExecutor方法。以下是重写的例子: protected IQueryExecutorgetQueryExecutor(IMetaDataPK arg0, EntityViewInfo arg1) { SorterItemCollection sic = new SorterItemCollection(); SorterItemInfosiInfo = new SorterItemInfo(\ siInfo.setSortType(SortType.ASCEND); sic.add(siInfo); arg1.setSorter(sic); return super.getQueryExecutor(arg0, arg1); } KDTable单元格如何格式化显示。 开发过程中需要对KDTable表格单元格中的数值型显示为后面加年,比如输入的是“3”,但要求显示为“3年”,代码如下即可: this.tblMain.getColumn(0).getStyleAttributes().setNumberFormat(\年\ EAS单据分录的一些初始化设置 // 设定单据分录选择模式为单元格选择模式 kdtEntrys.getSelectManager().setSelectMode(KDTSelectManager.CELL_SELECT); // 设定支持鼠标拖动表头移动表列 kdtEntrys.setColumnMoveable(true); EAS设定分录按钮快捷键// 设定分录按钮快捷键 kdtEntrys_detailPanel.getAddNewLineButton().setMnemonic(KeyEvent.VK_DOWN); kdtEntrys_detailPanel.getRemoveLinesButton().setMnemonic(KeyEvent.VK_UP);
正在阅读:
BOS开发- KDTable常用处理代码01-27
房地产业务员培训大纲05-12
矛盾分析法在学习中的运用05-09
从经营战略高度看诚信经营07-22
iso22000食品安全要求关键原则08-18
浅谈新课改下,如何高效使用高中历史教材-2019年精选文档03-25
建筑工程施工许可并联审批01-24
新生婴儿准备物品(安舒母婴之家整理)03-21
概括文章的主旨(小升初阅读训练精品)11-26
申论万能语句模板06-10
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 常用
- KDTable
- 代码
- 处理
- 开发
- BOS
- SNCR脱硝系统操作规程-朱连才
- 育婴师考试试题及答案
- 十年蜕变之路
- 小学二年级数学上册应用题与思维训练集锦500题
- 《人力资源管理》第07章在线测试
- 人力资源思考题
- 吉大18春学期《行政法学》在线作业一
- 高考英语最有可能考的100题
- SQL 操作练习题
- 融资融券业务知识测试卷
- 四五快读,第四册(全书,可直接打印)
- 2014年大学英语四级大纲词汇完整版(单词控整理免费下载) - 图文
- 各岗位绩效考核表 - 图文
- 安全生产工作重点及任务分解表
- 厦门市智能制造“十三五”发展规划 - 图文
- 初中初三山东教育版《人生规划》备课19-36
- fluent UDF第六章 工具
- 误差习题
- 议论文如何使用事例论证说课稿
- 《城镇燃气用户工程设计规范》(送审稿)5.20版本