• <menu id="w2i4a"></menu>
  • logo FastReport.Net 教程2017(完結(jié))

    文檔首頁>>FastReport.Net 教程2017(完結(jié))>>如何利用Report.CustomCalc事件實現(xiàn)預(yù)處理輸入數(shù)據(jù)

    如何利用Report.CustomCalc事件實現(xiàn)預(yù)處理輸入數(shù)據(jù)


    【點擊下載FastReport .Net v2018.1最新版本】

    在評估對象中的表達(dá)式或來自數(shù)據(jù)源的數(shù)據(jù)時,將調(diào)用報表對象的 New CustomCalc 事件。所以,我們可以使用這個事件來攔截數(shù)據(jù)并將其替換。這種操作什么時候會有用呢?比如,在接收到的數(shù)據(jù)中,有必要過濾數(shù)值或?qū)⑵涮鎿Q為其他行。

    我們來看一個例子。創(chuàng)建一個簡單的WindowsForms應(yīng)用程序,將數(shù)據(jù)源添加到項目和DataSet組件中。另外,我們把報表組件放在表單上。

    在報表組件的下拉菜單中,選擇“Select Data Source”項:

    如何實現(xiàn)預(yù)處理輸入數(shù)據(jù)

    并選擇我們的數(shù)據(jù)源。

    現(xiàn)在從同一菜單中選擇“Design Report”項。為了演示,我從Employee表中添加了幾個字段:

    如何實現(xiàn)預(yù)處理輸入數(shù)據(jù)

    感興趣的人可以看看現(xiàn)在報表的外觀:

    如何實現(xiàn)預(yù)處理輸入數(shù)據(jù)

    保存報表并關(guān)閉報表設(shè)計器。讓我們在表單中添加一個按鈕,以及按鈕點擊事件:

    private void Run_Click(object sender, EventArgs e)
     
     {
     
     report1.Load("D://Reports//Simple.frx");
     
     report1.Prepare();
     
     report1.ShowPrepared();
     
     }
    

    這些都是老生常談了。我上傳了以前創(chuàng)建的報表,然后加載并顯示它。

    現(xiàn)在為report1對象添加CustomCalc事件:

    如何實現(xiàn)預(yù)處理輸入數(shù)據(jù)

    private void report1_CustomCalc(object sender, FastReport.CustomCalcEventArgs e)
     
     {
     
     if (e.CalculatedObject.Equals("Roberto") )
     
     {
     
     e.CalculatedObject = "Test Name";
     
     }
     
     }
    

    在這里,我們攔截所需的數(shù)據(jù)并將其替換。所有數(shù)據(jù)在構(gòu)建報表期間通過CalculatedObject對象傳遞,我們捕捉到我們需要的數(shù)據(jù)“Roberto”,并替換它們。

    你可以替換整個數(shù)據(jù)字段。在這種情況下,條件將如下所示:

    if (e.Expression.IndexOf("employee.FirstName") != -1)

    我們直接在事件處理句柄CustomCalc中編寫數(shù)據(jù)替換的代碼。你也可以直接在代碼中分配事件處理句柄,例如,在MVC應(yīng)用程序中。在應(yīng)用程序代碼中一個方便的地方我們編寫:

    report1.CustomCalc += FReport_CustomCalc;

    以及處理句柄:

    private void FReport_CustomCalc(object sender, CustomCalcEventArgs e)
     
     {
     
     if (e.Expression.IndexOf("Employees.FirstName") != -1)
     
     { 
     
     e.CalculatedObject = "Test Name";
     
     }
     
     }
    

    運行應(yīng)用程序。點擊按鈕以查看報表:

    如何實現(xiàn)預(yù)處理輸入數(shù)據(jù)

    讓我們來比較一下這個截圖和之前的做法。如你所見,員工Roberto的第一個條目和名字被置于一個條件中,并被“Test Name”取代。

    綜上,我們有辦法替換報表中的一些數(shù)據(jù),對于有復(fù)雜報表需求的用戶來說這會非常有用。

    產(chǎn)品介紹 下載試用 | 優(yōu)惠活動 | 在線客服 | 聯(lián)系Elyn

     

    推薦閱讀

    FastReport 正版授權(quán) 年終促銷6.5折
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();