在extjs树存储中搜索
Search inside extjs tree store
我的树工具栏中有一个文本字段,它应该从用户那里获取字符串,然后通过树的特定列进行搜索。我使用存储过滤器,但有一个问题在我的代码,我不知道它是什么。谢谢你的帮助。这是我的代码:
var onSimpleSearch = function(){
var searchStr= Ext.getCmp('searchField').getValue();
if(searchStr){
var tree = Ext.getCmp('infra_tree');
var tstore = tree.getStore();
var searchReg = new RegExp(".*" + searchStr + ".*", "ig");
console.log(searchReg); //return RegExp!!!!!!!
tstore.filter("ipadd", searchReg});
}else {
Ext.MessageBox.show({
title: 'Nothing to search',
msg: 'Search string is empty',
icon : 'ext-mb-info',
buttons: Ext.MessageBox.OK
});
}
};
在Ext.data.TreeStore
中没有filter
方法(假设您使用4)。x,我使用4.1.3)。也许这对你有帮助:Ext JS 4:筛选TreeStore
或者,您可以尝试这样做:
var nodeToSearchFor = treestore.getRootNode().findChildBy(function(node) {
return (node.data['fieldToSearchFor'] == valueToSearchFor);
});
希望最后一次编辑:-)在Sencha论坛的这个线程中,他们建议你在根节点上使用CascadeBy
。工作方式与上面的代码或多或少相同
您可以遍历树中的所有子节点,而不是遍历商店。树的所有节点都实现TreeNodeInterface,该接口具有您需要的方法。cascadeBy
方法可能是您正在寻找的。它将在节点的每个子节点上递归地调用函数。这本质上与商店的过滤器相同,但它知道树的层次结构。
var searchStr = Ext.getCmp('searchField').getValue();
var matchingNodes = [];
var tree = Ext.getCmp('infra_tree');
// You could get the selected node, or any other node as start node.
// I take the root node as example.
var startNode = tree.getRootNode();
startNode.cascadeBy(function (childNode) {
if (childNode.get('text') == searchStr)
{
matchingNodes.push(childNode);
}
}, this);
显然,你也可以搜索childNode中的任何其他字段。通常我在树中保留的节点有不同的模型。如果我有一个显示在树中的teacher
模型,那么我有一个具有teacher
的teacherTreeModel
模型。因此,数据库中不保存教师树模型,只保存教师模型。
我有同样的问题,我刚刚找到了一个小提琴,解决了"在树存储中搜索"的问题。我不知道这是谁写的,但它是一块瑰宝。它在这里运行:https -添加冒号斜杠斜杠- fiddle.sencha.com/#fiddle/ra&view/editor(我试图包括源代码从小提琴这里到答案,但堆栈溢出编辑器不允许我。)
相关文章:
- 在字符串中搜索模式并存储其值
- (临时)在Web应用程序中存储JSON搜索结果
- 清除网格中的存储和加载搜索结果
- 如何存储推特搜索API推文并转发它们
- 如何在 angularjs 中存储和检索搜索参数
- 优化慢速搜索算法 - javascript,JSON和本地存储
- 优化本地存储和搜索
- 使用javascript从JSON文件中搜索并从本地存储加载
- Javascript-如何通过搜索前几个字母来存储字符串
- GitHub:如何避免在搜索帐户时超过搜索限制'为某个存储库做出贡献的用户的详细信息
- 谷歌地图和存储地址在mysql数据库半径搜索相似
- 使用javascript和html5存储搜索大量文本
- EmberJS搜索存储
- 在extjs树存储中搜索
- Angular JS和Ionic -搜索过滤器不能从rest api中搜索本地存储项
- js,根据数据名称查找/匹配/搜索元素存储的数据
- JavaScript将搜索匹配项存储在数组中
- 我想从存储在 javascript 的 json 对象中的数组中搜索用户关键字
- 我可以使用Javascript搜索HTML5本地存储的部分密钥吗?
- 如何将搜索从本地存储附加到无序列表