1. 添加自定义按钮(之前文章有写)
附自定义按钮链接
2. 按钮事件方法中添加:附代码块
ILinkMaintainData data = new ILinkMaintainData()
{
//可自行添加方法,参数
public Object getUserObject()
{
// TODO Auto-generated method stub
return "需返回的数据集";
}
public String getBillID()
{
// TODO Auto-generated method stub
return "SQL";//可自行添加方法,参数
}
};
//
/**
* 参数1:单据编码:H50314
* 参数2:组件,图形表示的对象:getBillCardPanelWrapper().getBillCardPanel()
* 参数3:ILinkMaintainData对象;
*/
if (1==1)
{
SFClientUtil.openLinkedMaintainDialog("H50314",getBillCardPanelWrapper().getBillCardPanel(), data);
}
}
到这已经实现单据跳转了,但有时候我们需要传写数据过去接受做处理。
3. 跳转单据的UI工厂, 实现ILinkMaintainData接口,重写doMaintainAction方法 用来接收返回数据: 附代码块
@Override
public void doMaintainAction(ILinkMaintainData arg0)
{
IUAPQueryBS queryBS = NCLocator.getInstance().lookup(IUAPQueryBS.class);
ButtonObject bo = null;
ArrayList<Object[]> executeQuery=null;
try
{
getManageEventHandler().onBoAdd(bo);//调用‘增加’按钮操作,并写入数据(传过来的数据)
executeQuery = (ArrayList<Object[]>) queryBS.executeQuery(arg0.getBillID(), new ArrayListProcessor ());//自定义sql
} catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
String[] userObject2 =(String[]) arg0.getUserObject(); //直接通过对象获取方法
getBillCardPanel().setHeadItem("pk_wa_class", userObject2[2]);
getBillCardPanel().setHeadItem("cperiod", userObject2[1]);
getBillCardPanel().setHeadItem("cyear", userObject2[0]);
int i=0;
for (Object[] objects : executeQuery)
{
Object object = objects[i];
getBillCardPanel().addLine();
getBillCardPanel().setBodyValueAt(objects[0], i, "company");
i++;
}
}