不能让Ext.ux.form.SearchField在ExtJS中工作
Can't get Ext.ux.form.SearchField to work in ExtJS
我似乎不能让SearchField在extJS中工作。我想在表工具栏中实现它,并在我的表存储对象上执行过滤器。
我有我的要求设置如下:
Ext.require([
'Ext.ux.form.SearchField'
]);
我添加搜索字段到我的工具栏,像这样:
tbar: [
new Ext.ux.form.SearchField({
store: tablestore,
width:320
})
]
我的tablestore很普通。我将remoteFilter设置为false(我只想在本地发生)。
var tablestore = new Ext.data.SimpleStore({
fields: [
{name: 'id', type: 'int'},
{name: 'name'}
],
remoteFilter:false
});
当我点击过滤器按钮时,列表被清除。如果我删除过滤器,列表仍然清除。没有错误信息。
操纵:https://fiddle.sencha.com/小提琴/6 h
(确保版本设置为4.2)
编辑:这是另一个小提琴。在这个小提琴中,我使用搜索字段作为停靠项。它仍然有同样的问题:https://fiddle.sencha.com/小提琴/6 p4
如果您经常使用它,我建议您编写自己的搜索字段。正如您在代码中看到的,这是一个简单的扩展,它在代理中设置一个参数(默认名称为query
)并重新加载存储。在您的情况下,它不工作,因为您使用SimpleStore
(和SimpleStore.load()
加载一个空的存储(即使它有一些记录))。
根据Andrei的建议,我最终编写了自己的搜索字段。
我向记录对象添加了一个名为'filterMeOut'的属性,然后在tableStore对象上使用filterBy应用了我自己的客户过滤器。
在我的docket items中的items数组中,我编写了以下代码
}, 'Search', {
xtype: 'textfield', enableKeyEvents: true, listeners: {
keyup: function (string) {
tablestore.clearFilter();
var dataToDelete = [];
//iterate and set flag
tablestore.each(function(rec, idx){
contains = false;
for (field in rec.data) {
if (rec.data[field].indexOf(string.getValue()) > -1) { //field contains
contains = true;
}
}
if (!contains) {
rec.filterMeOut = false;
}else {
rec.filterMeOut = true;
}
});
//custom filter object
tablestore.filterBy(function(rec, id) {
if(rec.filterMeOut) {
return true;
}
else {
return false;
}
});
}
}
}
非常适合我。
我可以做你想做的,但我使用这个小插件代替:
http://www.sencha.com/forum/showthread.php?70558-Ext.ux.grid.Search它可能并不完美(没有SenchaCmd包,不容易更新),但它可以完美地与网格过滤器一起工作,而不需要指定存储(它将使用Grid参数)
您必须将其添加为"Grid Plugin",不幸的是要深入源代码才能找到有关配置的更多信息。
- Extjs form.reset() 不作为 trackResetOnLoad 工作是真的
- extjs在chrome中可以正常工作;不要在firefox或ie中显示任何内容
- 如何在ExtJS中构建无需鼠标即可工作的应用程序
- ExtJS Window setActive() 无法按预期工作
- ExtJS 4.2.1 - 选项卡面板中的网格 - 工具提示停止工作
- ExtJS拖拽事件监听器在Chrome和Firefox上的工作方式不同
- ExtJS:型号'It’’’’It’’它没有按预期工作
- 自定义组件ExtJS,而不是工作setValue
- Regex模式无法正常工作.但仅在Extjs/Javascript中
- ExtJS 2.0.2不在本地网格中显示数据,但在服务器上工作
- extjs setLoading()不能从控制器工作
- 面板拖放在extjs 4.1中不工作
- ExtJs: TreeLoader:静态数据是不工作,但为什么
- ExtJs组合过滤不能正常工作
- 为什么extjs按钮处理程序不工作
- 第二次文件上传在ExtJS 6中失败,在ExtJS 4中工作
- Extjs行选择不工作
- Extjs 4 celllediting插件不能与多个网格一起工作
- ActiveX不'不工作在ExtJs应用程序在Chrome与海王星插件
- Extjs 5 - LoadMask在整个页面不工作