ServiceNow - 使用脚本过滤列表收集器

问题描述 投票:0回答:1

在我的表单上,我有一个在加载时自动填充的变量。该值来自用户配置文件。表单上有一个列表收集器变量,它应该只显示基于自动填充变量的值。我编写了一个目录 onChange 脚本来过滤列表收集器。

`function onChange(control, oldValue, newValue, isLoading) {
 var collectorName = 'cn';  
 var filterString = '';
 var dynamicQuery = "" ;
 var order=g_form.getValue('autopopulatedvariable');
 dynamicQuery = "u_order="+order;
 try{
    var myListCollector = g_list.get(collectorName);
    myListCollector.reset();
    myListCollector.setQuery(dynamicQuery);
 }
 catch(e){
   //Reset the filter query 
   window[collectorName + 'g_filter'].reset();
   window[collectorName + 'g_filter'].setQuery(dynamicQuery);
   window[collectorName + 'acRequest'](null);
 }

}`

表单加载,您会在过滤器中看到值,但没有结果。我可以单击放大镜并从列表中选择相同的值,然后它会正确过滤。

感谢您提供的任何帮助。

servicenow
1个回答
0
投票

自从 Jakarta 版本发布以来,Service Now 在 List 收集器变量上引入了动态引用限定符字段,您不必为此创建客户端脚本。

引用 qual 在服务器端执行,因此它不支持任何客户端 API。如果您有任何简单的查询,可以直接从列表视图过滤器中复制它并将其粘贴到字段中。

如果您的查询是动态的并且取决于表单上的其他变量。例如,您在事件表上有一个列表收集器,用于显示分配给请求者的所有事件。您可以将其添加到您的参考质量中

javascript:'assigned_to='+current.variables.requested_for;

这里requested_for是存储请求者姓名的变量

对于您的情况,您可以将查询添加为

javascript:'u_order='+current.variables.autopopulatedvariable;

如果查询是高度动态的,那么您可以将其编写在脚本中,包括并在引用限定符中调用它,就像我们对高级引用限定符所做的那样。

这是一个关于同一主题的不错的博客:链接

© www.soinside.com 2019 - 2024. All rights reserved.