NC報表聯(lián)查

步驟一:

編寫聯(lián)查實現(xiàn)類 ReportTraceDataOperator.java

注意事項:

實現(xiàn)接口:ItraceDataOperator,TraceDataInterface

說明:聯(lián)查操作接口嗜价,也就是如何進行聯(lián)查,目前定義了三個操作崩侠,主要需要實現(xiàn)前兩個:

方法1:執(zhí)行數(shù)據(jù)追蹤 各業(yè)務(wù)模塊根據(jù)需求執(zhí)行追蹤操作

public void traceData(Container container, TraceDataParam

param);

方法2:業(yè)務(wù)聯(lián)查的菜單

public IMenuActionInfo getMenuItemInfo();

代碼如下:

package nc.ui.bd.defdoc.freereport;

import java.awt.Container;

import javax.swing.Action;

import nc.funcnode.ui.FuncletInitData;

import nc.funcnode.ui.FuncletWindowLauncher;

import nc.pub.smart.data.IRowData;

import nc.pub.smart.tracedata.ITraceDataOperator;

import nc.pub.smart.tracedata.TraceDataInterface;

import nc.pub.smart.tracedata.TraceDataParam;

import nc.ui.pub.linkoperate.ILinkQueryData;

import nc.ui.pub.linkoperate.ILinkType;

import nc.ui.sm.power.FuncRegisterCacheAccessor;

import nc.vo.sm.funcreg.FuncRegisterVO;

import nc.vo.train.entity.QuotationHVO;

import com.ufida.report.free.userdef.DefaultMenu;

import com.ufida.report.free.userdef.IMenuActionInfo;

/**

* 聯(lián)查單據(jù)的實現(xiàn)

*

* @author: zjb

*/

public class ReportTraceDataOperator implements ITraceDataOperator,

TraceDataInterface {

public final static String DEST_FUNC_CODE = "TR1001";

public final static String PK_HEAD = QuotationHVO.PK_SALEQUOTATION;

@Override

public Action[] ctreateExtensionActions() {

return null; // new Action[]{new MyAction()};

}

@Override

public ITraceDataOperator[] provideTraceDataOperator() {

return new ITraceDataOperator[] { new ReportTraceDataOperator() };

}

@Override

public void traceData(Container container, TraceDataParam param) {

// 獲得選中表體行的PK

final IRowData rowData = param.getRowData();

String selItem0 = (String) rowData.getData(PK_HEAD);

final String selItem = (selItem0 == null) ? "" : selItem0;

// JOptionPane.showMessageDialog(container, "單據(jù)PK:" + selItem);

// 構(gòu)造傳遞數(shù)據(jù)參數(shù)

FuncletInitData fid = new FuncletInitData();

fid.setInitType(ILinkType.LINK_TYPE_QUERY);

ILinkQueryData data = new ILinkQueryData() {

public String getBillID() {

return selItem;

}

public String getBillType() {

return null;

}

public String getPkOrg() {

return null;

}

public Object getUserObject() {

return rowData;

}

};

fid.setInitData(data);

// 獲得功能VO參數(shù)

FuncRegisterVO vo = FuncRegisterCacheAccessor.getInstance()

.getFuncRegisterVOByFunCode(DEST_FUNC_CODE);

// 彈出目標單據(jù)

FuncletWindowLauncher.openFuncNodeInTabbedPane(container, vo, fid,

null, false);

}

@Override

public IMenuActionInfo getMenuItemInfo() {

return new DefaultMenu("Linkquery", "聯(lián)查單據(jù)");

}

}

步驟二:

編寫聯(lián)查節(jié)點畫面顯示類:DemoFuncNodeInitDataListener.java

注意事項:

1.需要添加節(jié)點畫面的xml配置惊奇,這個監(jiān)聽類要有原來監(jiān)聽類的功能,例子如下:

<!--

<bean id="InitDataListener"

class="nc.ui.bd.defdoc.DefdocFuncNodeInitDataListener">

<property name="datamanager" ref="modelDataManager" />

</bean>

-->

<!-- -->

<bean id="InitDataListener"

class="nc.ui.bd.defdoc.freereport.DemoFuncNodeInitDataListener">

<!-- 原來注冊的  -->

<property name="datamanager" ref="modelDataManager" />

<!-- 必須添加 -->

<property name="model" ref="HAppModel"></property>

<property name="context" ref="context" />

<!-- VO的類名 -->

        <property name="voClassName" value="nc.vo.bd.defdoc.DefdocVO"/>

        <!-- 非必須  用來顯示畫面結(jié)果-->

        <property name="ui" ref="billFormEditor" />

        <property name="autoShowUpComponent" ref="billFormEditor"/>

</bean>

代碼如下 其中畫面顯示的問題要自己寫:

package nc.icd.test.freereport;

import nc.funcnode.ui.FuncletInitData;

import nc.pub.smart.data.IRowData;

import nc.ui.pub.bill.BillCardPanel;

import nc.ui.pub.bill.BillScrollPane.BillTable;

import nc.ui.pub.linkoperate.ILinkQueryData;

import nc.ui.pub.linkoperate.ILinkType;

import nc.ui.pubapp.uif2app.model.DefaultFuncNodeInitDataListener;

import nc.ui.pubapp.uif2app.view.ShowUpableBillForm;

import nc.vo.train.entity.QuotationBVO;

/**

* 業(yè)務(wù)聯(lián)查打開單據(jù)的監(jiān)聽,類名需要配置到_config.xml

*

* @author: zjb

*/

public class DemoFuncNodeInitDataListener extends

DefaultFuncNodeInitDataListener {

public final static String PK_BODY = QuotationBVO.PK_SALEQUOTATION_B;

private ShowUpableBillForm ui;

public ShowUpableBillForm getUi() {

return ui;

}

public void setUi(ShowUpableBillForm ui) {

this.ui = ui;

}

@Override

public void initData(FuncletInitData data) {

super.initData(data);

// 聯(lián)查處理

if (data != null && data.getInitType() == ILinkType.LINK_TYPE_QUERY) {

// 獲得表體行PK

ILinkQueryData linkData = (ILinkQueryData) data.getInitData();

Object obj = linkData.getUserObject();

if (obj instanceof IRowData) {

IRowData rowData = (IRowData) obj;

String pkDetail = (String) rowData.getData(PK_BODY);

// 獲得表體面板

BillCardPanel panel = ui.getBillCardPanel();

// 選中表體行

BillTable table = panel.getBodyPanel().getTable();

int iRowCount = table.getRowCount();

int iColCount = table.getColumnCount();

for (int i = 0; i < iRowCount; i++) {

String rowPkDetail = (String) panel.getBodyValueAt(i,

PK_BODY);

if (rowPkDetail != null

&& rowPkDetail.equalsIgnoreCase(pkDetail)) {

table.setRowSelectionInterval(i, i);

table.setColumnSelectionInterval(0, iColCount - 1);

break;

}

}

}

}

}

}

步驟三:

聯(lián)查信息的注冊

首先將接口TraceDataInterface的實現(xiàn)類注冊到iufo_tracedataregister表中唆貌。

insert into iufo_tracedataregister 
(CLASSNAME, CREATIONTIME, CREATOR, DR, MODIFIEDTIME, MODIFIER, MODULENAME, PK_GROUP, PK_ORG, PK_TRACEDATA, RESDIR, RESID, TRACEDATANAME, TS)
values ('nc.ui.bd.defdoc.freereport.ReportTraceDataOperator', '', 'fenggf              ', 0, '', '', 'riamm', '', '', 'TRACEDATA10000000011', '', '', 'ReportTraceDataOperator', '2011-07-04 15:22:32');

需要填寫的有四個地方谣蠢,從左到右依次為:

CLASSNAME: 聯(lián)查的實現(xiàn)類StoreReqLinkQuery

MODULENAME: 模塊名【pu】(可大寫小寫)

PK_TRACEDATA: 這條 聯(lián)查記錄對應(yīng)的pk粟耻,必須寫,位數(shù)跟我的保持一致即可眉踱,內(nèi)容可以隨便寫

TRACEDATANAME:聯(lián)查記錄對應(yīng)的顯示名挤忙,在語義模型那設(shè)置業(yè)務(wù)擴展聯(lián)查時的顯示名

步驟四:

語預(yù)模型中工具 =》 業(yè)務(wù)擴展 中添加聯(lián)查實現(xiàn)類

image

自由報表添加隱藏字段:

image

然后報表聯(lián)查節(jié)點就完成了,過程中的錯誤就需要自己調(diào)試谈喳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末册烈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子婿禽,更是在濱河造成了極大的恐慌赏僧,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扭倾,死亡現(xiàn)場離奇詭異淀零,居然都是意外死亡,警方通過查閱死者的電腦和手機膛壹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進店門驾中,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人模聋,你說我怎么就攤上這事肩民。” “怎么了链方?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵持痰,是天一觀的道長。 經(jīng)常有香客問我祟蚀,道長共啃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任暂题,我火速辦了婚禮移剪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘薪者。我一直安慰自己纵苛,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著攻人,像睡著了一般取试。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怀吻,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天瞬浓,我揣著相機與錄音,去河邊找鬼蓬坡。 笑死猿棉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的屑咳。 我是一名探鬼主播萨赁,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼兆龙!你這毒婦竟也來了杖爽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤紫皇,失蹤者是張志新(化名)和其女友劉穎慰安,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聪铺,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡化焕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了计寇。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,650評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡脂倦,死狀恐怖番宁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赖阻,我是刑警寧澤蝶押,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站火欧,受9級特大地震影響棋电,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苇侵,卻給世界環(huán)境...
    茶點故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一赶盔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榆浓,春花似錦于未、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抖坪。三九已至,卻和暖如春闷叉,著一層夾襖步出監(jiān)牢的瞬間擦俐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工握侧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蚯瞧,地道東北人。 一個月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓藕咏,卻偏偏與公主長得像状知,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子孽查,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,527評論 2 349