FineReport——彈出新窗體選值並回調


主要實現的功能:

在主頁面,通過單擊按鈕,彈出窗體,在窗體中通過下拉框選擇值並查詢,如果是多值,可以通過復選框選擇,點擊確定,將選中的行的字段值傳遞給主頁面的下拉復選框,定義其編輯后事件進行查詢。將想要的結果顯示在表格中。在表格后面添加刪除按鈕,可以刪除對應的列。

該功能主要涉及到幾個JS方法,和FR的自動查詢(值得注意的是,FR 的自動查詢,只能使用在參數面板,在表單中無法使用。)
首先是使用JS彈出一個窗體,而這個窗體的內容就是一個報表模板:
window.form = this.options.form;
var $iframe = $("<iframe id='inp' name='inp' width='100%' height='100%' scrolling='no' frameborder='0'>");
$iframe.attr("src", "${servletURL}?reportlet=WorkBook47.cpt&op=write");
var o = {
title : "請選擇記錄項",
width : 800,
height: 500
};
FR.showDialog(o.title, o.width, o.height, $iframe,o);

然后是,在彈出的這個模板中設計內容,其實也和普通的模板設計一樣,只是多了一步就是通過JS獲取單元格的值並回傳給主頁面。

關於回傳值(按鈕執行JS方法):

var products = [];  
var $span = $('.fr-checkbox-checkon');  //獲取選中的復選框
var $tds = $("td").has($span);     //定義選中復選框的單元格 
var $trs = $("tr").has($tds);  
for(var i=0; i<$trs.length;i++){  
var product = $("td:eq(1)",$($trs[i])).html();   //獲取選中的C3單元格的值
products.push(product);     //將選中的值放到數組中
}  
var form = window.parent.form; 
var pva=form.getWidgetByName("p2").getValue();
if(pva==0)
{
     //form.getWidgetByName("p1").setValue(products);
     form.getWidgetByName("p2").setValue(products);
}
else
{
    //form.getWidgetByName("p1").setValue(pva+","+products);
    form.getWidgetByName("p2").setValue(pva+","+products);
}
window.parent.FR.closeDialog();
window.parent.FR.distroyDialog();
 

 為了更方便的操作,將值回傳給下拉復選框,傳值過后通過下拉復選框的編輯后事件,可以自動查詢:

_g().parameterCommit();  

 為了更加方便與界面優化,可以將下拉復選框隱藏,定義其初始化事件:

this.invisible();

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM