在我的表单上,我有一个在加载时自动填充的变量。该值来自用户配置文件。表单上有一个列表收集器变量,它应该只显示基于自动填充变量的值。我编写了一个目录 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);
}
}`
表单加载,您会在过滤器中看到值,但没有结果。我可以单击放大镜并从列表中选择相同的值,然后它会正确过滤。
感谢您提供的任何帮助。
自从 Jakarta 版本发布以来,Service Now 在 List 收集器变量上引入了动态引用限定符字段,您不必为此创建客户端脚本。
引用 qual 在服务器端执行,因此它不支持任何客户端 API。如果您有任何简单的查询,可以直接从列表视图过滤器中复制它并将其粘贴到字段中。
如果您的查询是动态的并且取决于表单上的其他变量。例如,您在事件表上有一个列表收集器,用于显示分配给请求者的所有事件。您可以将其添加到您的参考质量中
javascript:'assigned_to='+current.variables.requested_for;
这里requested_for是存储请求者姓名的变量
对于您的情况,您可以将查询添加为
javascript:'u_order='+current.variables.autopopulatedvariable;
如果查询是高度动态的,那么您可以将其编写在脚本中,包括并在引用限定符中调用它,就像我们对高级引用限定符所做的那样。
这是一个关于同一主题的不错的博客:链接