我有一个要求,我需要动态过滤列表查找。我的列表中有一个名为category
的列,其中包含值'A' or 'B'
。然后,内容类型上有一个字段'Selection'
,可以取值'A' or 'B' or 'All'
。如果'A'
我需要列表查找以获取category = 'A'
的行,那么'B'
也是如此。但是,如果“选择”是 - 'All'
,那么我需要显示列表中的所有项目。
我正在考虑过滤列的列表查找 - 'Category'
。但问题是我在内容类型表单上,我没有任何可以动态设置的变量。
我无法使用映射到'Selection'
的过滤器控件,因为当选择为'All'
时它不起作用(列表中的类别下没有名为“全部”的值)。 / p>
我尝试使用对公式进行操作的计算值并尝试在列表查找中按特定值过滤使用它,但过滤器不起作用,因为列表查找在表单加载之前加载计算值并因此计算得出对于过滤,值始终为空。
我有什么方法可以实现这个功能。
提前致谢
答案 0 :(得分:1)
我想到了解决这个问题的两种方法。
有3个单独的列表查找控件,它们相互叠加。用A过滤一个,用B过滤一个,让一个过滤掉。然后创建规则以显示具有要显示的过滤器的规则,并隐藏其他规则。要保存该值,当其中一个控件更改值时,您必须使用JavaScript将列表查找中的值复制到隐藏文本框。这个解决方案并不是很好,如果你有更多的选择会变得更糟......但是它有效。
您可以使用JavaScript根据选择过滤列表。这有点棘手,但您不需要更多的查找控件来获得更多选项。您只需要2个列表查找,无论您对类别/选择有多少选项。您需要一个显示您希望用户选择的信息(未过滤),另一个来自同一列表和相同视图,但该列应该是Category列(您可以使用javascript隐藏此查找)。这是我用来获得你所描述的代码的代码。
//get the original html to 'reset' the dropdown after a change
var originalTitle = NWF$("#" + title).html();
//when the selection changes
NWF$("#" + selection).change(function () {
//put the original html in the dropdown to check all the options
NWF$("#" + title).html(originalTitle);
//get the new value of the selection
var choice = NWF$("#" + selection + " :checked")[0].value
//if choice is all then we are done because the original html is in the dropdown again with all the options
if (choice == "All") {
return;
}
//create the array where you will store the ids of the options that match the choice
var filteredIds = [];
//for each option in the category drop down, see if the text matches the choice (this is your filtering)
NWF$("#" + categoryDD + " option").each(function (i, n) {
//if the text of the option matches the choice add the id to the array.
if (n.text == choice) {
filteredIds.push(n.value);
}
});
//initialize string of html
var filteredTitlesHTML = ""
//for each of the ids in the list, get the option html with that id from the title dropdown and add it to the resulting HTML string
NWF$(filteredIds).each(function (i, n) {
filteredTitlesHTML += NWF$("#" + title + " option[value = '" + n + "']")[0].outerHTML
})
//put the html in the dropdown to show only filtered values
NWF$("#" + title).html(filteredTitlesHTML);
})
你可以在图片中看到javascript变量名称我给控件使用我提供的javascript。