NC开发常见问题记录.docx

上传人:b****5 文档编号:7264355 上传时间:2023-01-22 格式:DOCX 页数:23 大小:54.33KB
下载 相关 举报
NC开发常见问题记录.docx_第1页
第1页 / 共23页
NC开发常见问题记录.docx_第2页
第2页 / 共23页
NC开发常见问题记录.docx_第3页
第3页 / 共23页
NC开发常见问题记录.docx_第4页
第4页 / 共23页
NC开发常见问题记录.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

NC开发常见问题记录.docx

《NC开发常见问题记录.docx》由会员分享,可在线阅读,更多相关《NC开发常见问题记录.docx(23页珍藏版)》请在冰豆网上搜索。

NC开发常见问题记录.docx

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,HashtablehashFilter)throwsValidationException{

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

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

当前位置:首页 > 农林牧渔 > 林学

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

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