2012-02-09 69 views
1

我是一个总新手BIRT,我不是一个JavaScript专业版。我使用birt从我的数据库中获取一些信息来创建一些报告。我有一个列的IP地址作为字符串。 BIRT为表格提供了一个排序部分,我在那里有这个表达式;如何使用JavaScript对BIRT上的IP地址进行排序?

if(params["sorting"].value=="startdate") 
dataSetRow["r_date_0"] 
else if(params["sorting"].value=="enddate") 
dataSetRow["r_date_1"] 
else if(params["sorting"].value=="ipaddress") 
dataSetRow["r_vchar_2"] 
else 
dataSetRow["r_vchar_3"] 

这是工作完美的开始日期和结束日期,但是当涉及到ipaddresses,它比较它们的字符串,所以在排序报告中,我看到像“2”是更大然后“199”。

我可以用'。'分隔ip地址。并解析它们为整数,并比较我是否使用python或java,但我不知道如何在BIRT环境中使用javascript来做到这一点。

任何想法如何修改我的表达,以实现我的需求将不胜感激。

回答

3

使用数据集中的计算列,在那里你改变你的IP地址的形式,他们可以进行排序,例如

var addrArray = dataSetRow["r_vchar_2"].split("."); 
var num = 0; 
for (var i=0;i<addrArray.length;i++) { 
    var power = 3-i; 
    num += ((parseInt(addrArray[i])%256 * Math.pow(256,power))); 
} 
num; 

您可以使用此字段进行排序,并显示原始字段IP地址

相关问题