如何在Birt报告工具中创建单选按钮参数

时间:2014-07-02 06:32:42

标签: birt

我有两个单选按钮,按升序和降序排列。当我单击升序单选按钮时,要从数据库中按升序显示名称。如何将参数与数据库连接以获取数据。

我已附上以下代码,

员工排序:

<input type="radio" name="emp_sorting" value="emp_ascending" id="emp_ascending" 
       onkeyup="changeName();">
emp_ascending 
<input type="radio" name="emp_sorting" value="emp_descending" id="emp_descending"
       onkeyup="changeName();">
emp_descending
<a id="emp_name" href="">View</a><br><br> 

<script>
function changeName() {
    var input_value = document.getElementById("emp_ascending").value;
    var input_value1 = document.getElementById("emp_descending").value;
    var context_path = "<%=request.getContextPath()%>";
    var create_href = context_path + "/frameset__report=report_sort.rptdesign&e_name=" 
                    + input_value +" &emp_‌​name=" + input_value1 
                    + "&__parameterpage=false" ;
    emp_name.href= create_href;
}
</script> 

1 个答案:

答案 0 :(得分:1)

您需要一个名为例如&#34; sort_order&#34;的报告参数,与员工姓名分开处理排序顺序。在您的代码中,您实际上插入单选按钮值以报告名为&#34; e_name&#34;的参数。和&#34; emp_name&#34;,这对我们既不了解排序顺序的情况也不是很有帮助。

然后,在数据集的beforeOpen方法中,您可以使用如下表达式替换默认排序顺序:

this.queryText=this.queryText.replace(" ASC"," "+params["sort_order"].value);

为了防止任何SQLIA漏洞,您应首先检查params [&#34; sort_order&#34;]。value是否等于&#34; ASC&#34;或&#34; DESC:

 var sort=params["sort_order"].value;
 if (sort=="ASC" || sort=="DESC"){
    this.queryText=this.queryText.replace(" ASC"," "+sort);
 }

虽然另一种方法比单选按钮容易得多,但没有客户端javascript的单字节:在代表ASC和DESC方向的图像上定义本机birt钻取操作。查看实例with this report,列标题中有一个图像,允许动态对表进行排序。此图像未显示在PDF导出中(birt&#34; visibility&#34; property)。

enter image description here