NC开发常见问题记录.docx
- 文档编号:7264355
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:23
- 大小:54.33KB
NC开发常见问题记录.docx
《NC开发常见问题记录.docx》由会员分享,可在线阅读,更多相关《NC开发常见问题记录.docx(23页珍藏版)》请在冰豆网上搜索。
NC开发常见问题记录
1.表头字段不可见
getHeadItem("").setShow(false);
2.在单据或报表中,设置表体中的0.00显示或显示为空
在单据中,如下设置:
//表体行可以显示0.00
getBillCardPanel().getBodyPanel().getRendererVO().setShowZeroLikeNull(false);
在报表中,如下设置:
//设置不显示零
getReportBase().getBodyPanel().getRendererVO().setShowZeroLikeNull(true);
3.在程序查询过程中,加入"请等待.."的提示框
//线程
RunnablecheckRun=newRunnable(){
publicvoidrun()
{
//线程对话框:
系统运行提示框
BannerDialogdialog=newBannerDialog(ui);
dialog.start();
try{
/**
将查询方法写在其中
*/
}catch(Exceptione){
e.printStackTrace();
ui.showErrorMessage(e.getMessage());
}finally{
//销毁系统运行提示框
dialog.end();
}
}
};
//启用线程
newThread(checkRun).start();
4.发送邮件
MailTool.sendHtmlEmail(smtpHost,fromAddr,senderName,userName,password,receivers,subject,sb,fileName);
5.列表表体加afterEdit监听方法
getBillListPanel().getBodyScrollPane("页签表名").addEditListener(this);
触发afterEdit(BillEditEvente)方法
6.表体按照recordnum倒序排列,类似定调资表体
getBillListPanel().getBodyBillModel().setSortColumn("recordnum");
getBillListPanel().getBodyBillModel().getSortColumns().get(0).setAscending(false);
7.表头最大化设置方法
getBillListPanel().getUISplitPane().getRightComponent().setVisible(false);
8.登陆界面的日期设置不可修改
有个配置文件可以直接修改的。
nchome\ierp\bin\clientui.xml
9.在UI中得到的变化VO方法
getBillCardPanel().getBillValueChangeVO
是从页面得到的VO,如果修改查询出来的数据,当查询出来的数据如果没有主键的话,那得到得VO主键就是null的。
10.在修改的方法中,如果是根据主键为条件进行修改,主键不能通过
key=getOID(storeadmin.getPk_corp());得到主键,因为这是新生成的,要使用以前的主键,key=storeadmin.getPrimarykey();
11.生成单据号的方法:
Stringbillcode=HYPubBO_Client.getBillNo(getUIControl().getBillType(),
getClientEnvironment().getCorporation().getPrimaryKey(),null,null);
另一种是:
得到某个定义的单据号:
BillcodeRuleBO_Client.
getBillCode(“biltype”,pk_corp,null,null);
//取得单据号(从NC取,服务器端)
StringbillNo=newnc.bs.trade.business.HYPubBO().
getBillNo(ISYYSBilltype.CTRLDDEPT_BGT_BILL,parentVo.getPk_corp(),null,null);//设置单据号
//取得单据号(从NC取,客户端)
returnHYPubBO_Client.getBillNo(getUIControl().getBillType(),_getCorp().getPrimaryKey(),null,null);
12.验证非空
@Override
protectedvoidonBoSave()throwsException{
this.getBillCardPanelWrapper().getBillCardPanel().getBillData().dataNotNullValidate();
super.onBoSave();
}
13.实现多选
getBillListPanel().getHeadTable().setSelectionMode(
javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
遇到几次列表界面可多选,但取值难的问题,现总结如下:
设置列表多选框
getBillListPanel().setMultiSelect(true);
//设置列表Ctrl、Shift多选
getBillListWrapper().getBillListPanel().getHeadTable().
setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
获取列表多条记录的方法
1、int[]selectRows=((BillManageUI)getBillUI()).getBillListPanel().getHeadTable().getSelectedRows();
2、((BillManageUI)getBillUI()).getBillListPanel().getHeadBillModel().getBodySelectedVOs(DemoYsHVO.class.getName());
其中,方法1只在Ctrl、Shift多选时能取到多条记录的行号。
方法2都能取到多选记录的VO。
14.实现选择框全选全消小按钮
import nc.ui.hr.frame.util.table.TableMultiSelHelper;
headTableMultiSelectorheadTableMultiSelector = new TableMultiSelHelper();
headTableMultiSelector.addMultiSeletor(getBillListPanel().getHeadTable());
15.分别从卡片、列表中取得表头、表体VO数组的方法
//列表界面
if(getSelfUI().isListPanelSelected()){
introwCount=getSelfUI().getBillListPanel().getHeadBillModel().getRowCount();
if(rowCount==0){
getSelfUI().showWarningMessage("没有可以确认的数据!
");
return;
}
//取得选中的行
selectRow=getSelfUI().getBillListPanel().getHeadTable().getSelectedRow();
//在列表界面取得表头VO
hvo=(Df1BmsqHVO)getBufferData().getVOByRowNo(selectRow).getParentVO();
//在列表界面取得表体VO
bvos=(Df1BmsqBVO[])getBufferData().getVOByRowNo(selectRow).getChildrenVO();
}
//卡片界面
else{
introwCount=getSelfUI().getBillCardPanel().getBillTable().getRowCount();
if(rowCount==0){
getSelfUI().showWarningMessage("没有可以确认的数据!
");
return;
}
try{
//在卡片界面取得表头VO
hvo=(Df1BmsqHVO)getBufferData().getCurrentVO().getParentVO();
//在卡片界面取得表体VO
bvos=(Df1BmsqBVO[])getBufferData().getCurrentVO().getChildrenVO();
}catch(Exceptione){
e.printStackTrace();
}
}
16.得到行号数组
Int[]rows=ui.getBillListWrapper().getBillListPanel().getHeadTable().getSelectedRows();
17.得到当前行的聚合VO
AggRequirepubVOaggRequirepubVO=(AggRequirepubVO)ui.getBillListWrapper().getBillListPanel().getBillValueVO(iCurRow,AggRequirepubVO.class.getName(),
HeadVO.class.getName(),BodyVO.class.getName());
18.得到行号,得覆盖这个方法
@Override
publicvoidbodyRowChange(BillEditEvente){
//TODOAuto-generatedmethodstub
iCurrRow=e.getRow();
}
19.自定义按钮的使用
需要在ui中覆盖这个方法
@Override
protectedvoidinitPrivateButton(){
//TODOAuto-generatedmethodstub
PublicVOpublicVO=newPublicVO();
addPrivateButton(publicVO.getPublicButtonVO());
addPrivateButton(publicVO.getUnpublicButtonVO());
}
PublicVO是自己创建的按钮VO
packagenc.vo.zygb;
importnc.itf.zygb.IMyButton;
importnc.ui.trade.base.IBillOperate;
importnc.vo.trade.button.ButtonVO;
importnc.vo.trade.pub.IBillStatus;
publicclassPublicVO{
publicButtonVOgetPublicButtonVO(){
ButtonVObtnVo=null;
if(btnVo==null){
btnVo=newButtonVO();
btnVo.setBtnNo(IMyButton.publicBtn);
btnVo.setBtnName("发布");
btnVo.setHintStr("发布");
btnVo.setOperateStatus(newint[]{IBillOperate.OP_EDIT,IBillOperate.OP_NOTEDIT});
btnVo.setBusinessStatus(newint[]{IBillStatus.FREE});
}
returnbtnVo;
}
publicButtonVOgetUnpublicButtonVO(){
ButtonVObtnVO=null;
if(btnVO==null){
btnVO=newButtonVO();
btnVO.setBtnNo(IMyButton.unpulicBtn);
btnVO.setBtnName("取消发布");
btnVO.setHintStr("取消发布");
btnVO.setOperateStatus(newint[]{IBillOperate.OP_EDIT,IBillOperate.OP_NOTEDIT});
btnVO.setBusinessStatus(newint[]{IBillStatus.FREE});
}
returnbtnVO;
}
}
IMyButton是定义按钮的接口:
publicinterfaceIMyButton{
//发布按钮
publicfinalstaticintpublicBtn=185;
//取消发布按钮
publicfinalstaticintunpulicBtn=186;
}
下拉框的定义,在initSelfData()方法中
@Override
protectedvoidinitSelfData(){
//TODOAuto-generatedmethodstub
//发布状态
IConstEnum[]require_status=newDefaultConstEnum[]{newDefaultConstEnum(0,"未发布"),
newDefaultConstEnum(1,"已发布")};
BillPanelUtils.initComboBox(getBillListPanel(),IBillItem.HEAD,null,RequirepubVO.PUBLICSTATUS,require_status,false);
BillPanelUtils.initComboBox(getBillCardPanel(),IBillItem.HEAD,null,RequirepubVO.PUBLICSTATUS,require_status,false);
}
20.向页面回写数据
((MainBillMgrPanel)getMainPanel()).getMainBillCardPanel().setHeadData(m_emptyJobVO);
((MainBillMgrPanel)getMainPanel()).getMainBillListPanel().setHeadSelectedData(m_emptyJobVO);
21.比较日期的先后方法
ValidityChecker.validateDate(date1,date2,1,"给出校验的警告语句");
22.初始化下拉列
getBillCardWrapper().initHeadComboBox("vbillstatus",ISYYSBillStatus.strStateRemark,true);
getBillListWrapper().initHeadComboBox("vbillstatus",ISYYSBillStatus.strStateRemark,true);
23.执行表头公式
getBillCardPanel().execHeadFormula("");
getBillCardPanel().execHeadEditFormulas();
执行表体公式
//列表状态
getBillListPanel().getBodyBillModel().execEditFormulaByKey(i,"vdef2");
//卡片状态
getBillCardWrapper().getBillCardPanel().execBodyFormula(i,"vdef2");
24.为参照增加约束
AbstractRefModelarm=UIUtilTools.getRefPane(item).getRefModel();
arm.addWherePart("anddr=0");
arm.reloadData();
25.自定义按钮添加至界面
ButtonVOeditedplan=ButtonFactory.createButtonVO(ISHSHButton.LINK_KY_DETAIL,"修订计划","修订计划");
editedplan.setOperateStatus(newint[]{IBillOperate.OP_NOTEDIT});
addPrivateButton(editedplan);
26.当前单据的操作状态
设置是否可以编辑getBillUI().getBillOperate()
//表体所有行
introwsNum=getBillCardPanel().getBillModel().getRowCount();
introwcount=getBillCardPanel().getBillModel("").getRowCount();
getBillCardPanelWrapper().getBillCardPanel().getHeadItem("high").setEnabled(false);
8.初始上下游得单据状态(在DLG的构造方法里面加入)
BillItembillItem=getbillListPanel().getBillListData().getHeadItem("vbillstatus");
initComboBox(billItem,ISHSHBillStatus.strStateRemark,true);
27.设置是否合计和得到合计值
设置是否合计:
在initSelfData()方法中加入getBillCardWrapper().getBillCardPanel().setTatolRowShow(true);
得到合计值:
首先设置显示合计行
getBillCardPanel().setTatolRowShow(true);
然后获取获取合计行的值
getBillCardPanel().getTotalTableModel().getValueAt("行号","列字段");
28.隐藏表体某列
getBillCardPanel().hideBodyTableCol("bodyitem");
29.表体带出表头
/*
*在表头增加三个字段
*通过vccode带出
*麻杰2011-03-04
*/
Stringpk_customer=(String)getBillCardPanel().getBillModel("ps_so_sign_customer").getValueAt(0,"pk_customer");
if(null!
=pk_customer){
Stringccpostalcode=QueryUtil.queryByPk("ccpostalcode",pk_customer);
getBillCardPanel().setHeadItem("ccpostalcode",ccpostalcode);
}
}
30.行不可编辑方法
只有选中行可编辑的解决方法,当行可编辑
@Override
publicvoidbodyRowChange(BillEditEvente){
//修改的时候不能选中其他行,如果选择,则自动跳回编辑行
intcurrow=getBillCardPanel().getBillTable().getSelectedRow();
inteditRow=getBillCardPanel().getBillTable().getEditingRow();
if(getBillOperate()==IBillOperate.OP_EDIT&&editRow>-1&&currow!
=editRow){
getBillCardPanel().getBillTable().setRowSelectionInterval(editRow,editRow);
return;
}
}
31.非空校验方法:
/**
*数据非空监测hashFilter(billitem,int[rowindex])创建日期:
(01-2-2110:
08:
48)
*/
publicstaticvoiddataNotNullValidate(BillDatabilldata,Hashtable
StringBuffermessage=null;
BillItem[]headtailitems=billdata.getHeadTailItems();
if(headtailitems!
=null){
for(inti=0;i if(headtailitems[i].isNull()){ if(PubUtils.isNull(headtailitems[i].getValueObject())){ if(message==null){ message=newStringBuffer(); } message.append("["); message.append(headtailitems[i].getName()); message.append("]"); message.append(","); } } } } if(message! =null&&message.length()>0){ mes
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NC 开发 常见问题 记录
![提示](https://static.bdocx.com/images/bang_tan.gif)