如何使用 JavaScript 对 BIRT 上的 IP 地址进行排序?
我是 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"]
这对于开始日期和结束日期来说非常有效,但是当涉及到 IP 地址时,它将它们作为字符串进行比较,因此在排序的报告中,我看到“2”比“199”大。
我可以用“.”分隔 IP 地址并将它们解析为整数并比较我是否使用 python 或者 java,但我不确定如何在 BIRT 环境中使用 javascript 来执行此操作。
任何关于如何修改我的表达以满足我的需求的想法将不胜感激。
I'm a total newbie on BIRT and I'm not a javascript pro. I am using birt to create some reports by getting some information from my database. I have ip addresses on a column as strings. BIRT provides a sorting section for tables and I have this expression right there;
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"]
this is working perfect for startdate and enddate, but when it comes to the ipaddresses, it compares them as string so in the sorted report, i see like '2' is bigger then '199'.
I could just split ip addresses with '.' and parse them to integers and compare if i was working with python or java, but I'm not sure how to do this with javascript in BIRT environment.
Any ideas on how can i modify my expression to achieve my needs will be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在数据集中使用计算列,在其中将 IP 地址转换为可以排序的形式,例如,
您可以使用此字段进行排序,并使用原始字段来显示 ip 地址
Use in your dataset a computed column, where you transform your ip-addresses in a form that they can be sorted, e.g
You can use this field for sorting, and the original field for displaying ip-addresses