如何使用JavaScript在BIRT上对IP地址进行排序?

时间:2012-02-09 07:40:20

标签: javascript sorting reporting birt

我是BIRT的新手,我不是javascript专业人士。我正在使用birt通过从我的数据库中获取一些信息来创建一些报告。我在列上有ip地址作为字符串。 BIRT为表提供了一个排序部分,我就在那里有这个表达式;

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"]

这对于startdate和enddate来说是完美的,但是当谈到ipaddresses时,它会将它们比作字符串,所以在排序报告中,我看到'2'比'199'大。

我可以用'。'分割ip地址。并将它们解析为整数并比较我是否正在使用python或java,但我不确定如何在BIRT环境中使用javascript执行此操作。

有关如何修改表达以满足我的需求的任何想法将不胜感激。

1 个答案:

答案 0 :(得分: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地址