我在ExtJS中有一个表单,带有2个带有语言列表的下拉框。它们都具有相同的值,通过JSON数据存储区从数据库表加载。
它是“From”语言和“To”语言。
现在我要做的是从“收件人”下拉列表中的“发件人”下拉列表中过滤掉语言,以确保在两个下拉列表中都没有选择相同的语言。
希望这是有道理的:)
/淑娜
答案 0 :(得分:1)
您将需要两个具有相同内容的独立商店。当从组合框A(“从”组合框)中选择一个值时,从其他组合框(“组合”组合框)中存储该值。反之亦然。如果配置正确,组合框应该几乎立即反映变化。
示例引自ExtJS API docs以显示如何过滤商店的内容:
store.filter([
{
property : 'name',
value : 'Ed',
anyMatch : true, //optional, defaults to true
caseSensitive: true //optional, defaults to true
},
//filter functions can also be passed
{
fn : function(record) {
return record.get('age') == 24
},
scope: this
}
]);
您可能需要为过滤器使用一个函数,因为您想要过滤掉不等于某个值的值。
答案 1 :(得分:1)
所以请改用filterBy函数,并定义自己的函数,除了特定的记录之外,每个记录都会返回true:
onBlur: function(){
ds_language_to.filterBy(function(record) {
if (record.get('language') != fromCombo.getValue())
return true;
});
}
替换相应的代码以获取在from combo中选择的值。