【问题标题】:How can I sort ip addresses on BIRT with JavaScript?如何使用 JavaScript 对 BIRT 上的 IP 地址进行排序?
【发布时间】:2012-02-09 07:40:20
【问题描述】:

我是 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。

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

【问题讨论】:

    标签: javascript sorting reporting birt


    【解决方案1】:

    在您的数据集中使用计算列,您可以在其中将 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-addresses

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 2011-10-02
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多