Extjs 树支持模糊查询定位

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_24013817/article/details/51747686
var rightTree = new Ext.tree.TreePanel({
region : 'center',
split : true,
animate:true, //展开,收缩动画
xtype : 'treepanel',
width : 240,
autoScroll : true,
id : 'tree',
// collapsible : true,
title : '区域列表',
loader : new Ext.tree.TreeLoader( {
dataUrl : ctx + '/hbms/installGroupGuard/installGroupGuard.action?method=queryParam&imUnitName='+encodeURI(encodeURI(r.get('imUnitName')))
+'&imGroupName='+encodeURI(encodeURI(r.get('imGroupName')))
}),
root : new Ext.tree.AsyncTreeNode( {
id : "SZ",
text : "深圳",
leaf : false
}),
tbar:[{  
            icon: ctx + "/images/xtree/Tplus.png",  
            tooltip: '展开',  
            handler: function(){ rightTree.expandAll(); },  
            scope: this  
          }, '-', {  
            icon: ctx + "/images/xtree/Tminus.png",  
            tooltip: '收缩',  
            handler: function(){ rightTree.collapseAll(); },  
            scope: this  
          }
         /* , new Ext.form.TextField({  
                width: 150,  
                emptyText:'快速检索',  
                enableKeyEvents: true,//给输入框绑定keyup事件,需要加上enableKeyEvents:true才能让extjs的textfield代理鼠标事件  
                listeners:{  
                    keyup:function(node, event) {  
                        findByKeyWordFiler(node, event);  
                    },  
                    scope: this  
                }  
        })*/
          ],
listeners : {
checkchange : function(node, checked) {
if(checked){
  treeCheckTrue(node);
}else{
  treeCheckFalse(node);
}
var flag = false;
for(var i=0;i<params.length;i++){
if(params[i].commId == node.id){
params[i].commName = node.text;
params[i].checked = checked;
flag = true;
break;
}
}
if(!flag){
var param = {};
param.commId = node.id;
param.commName = node.text;
param.checked = checked;
params.push(param);
}
}
}
});
// rightTree.expandAll(); 
var timeOutId = null;
var filterTreeFiled = new Ext.form.TextField({  
   width:115,  
   emptyText:'快速检索',  
   enableKeyEvents: true  
});  
var tbar = rightTree.getTopToolbar();  
tbar.add(filterTreeFiled);tbar.doLayout();
var selectNode = function(node) {  
   node.ensureVisible();  
   node.select();
//    Ext.tree.MultiSelectionModel.select();
   node.fireEvent('click', node);  
}  
function onExpandPathComplete(bSuccess, oLastNode) {  
   if (!bSuccess)  
       return;  
   // focus 节点,并选中节点!  
   selectNode(oLastNode);  
}
var findByKeyWordPath = function(node, event) {
   clearTimeout(timeOutId);  
   timeOutId = setTimeout(function() {  
               var text = node.getValue().trim();  
               lastSerach=text; 
               // 采用ajax获得需要展开的路径  
               if (text != "") {  
                   Ext.Ajax.request({  
                               params : {  
                                   keyWord : text  
                               },  
                               url :ctx + '/hbms/installGroupGuard/installGroupGuard.action?method=searchNode',  
                               method : 'POST',  
                               async : false,  
                               success : function(response, opts) {  
                                   var obj = Ext.decode(response.responseText); 
                                   console.log(obj);
                                   if(obj.success){  
                                       var length = obj.list.length;
                                       rightTree.root.reload();  
                                       for(var i=0;i<length;i++){
                                           var path = obj.list[i].path;
                                                rightTree.expandPath("/SZ"+path,'id',onExpandPathComplete);  
                                       }
                                   }
                                   },  
                               failure : function(response, opts) {  
                                   Ext.Msg.alert("错误提示", "请求失败,请与管理员联系。").setIcon(Ext.MessageBox.ERROR);  
                               }  
                           });  
               } else {  
               }  
           }, 500);  
}  
filterTreeFiled.on("keyup", function(node, event) {  
   findByKeyWordPath(node, event);  
});  
/** 
*checkTree全选 
*/ 
var treeCheckTrue = function(node) 

node.eachChild(function (child) { 
child.getUI().toggleCheck(true); 
child.attributes.checked = true; 
treeCheckTrue(child); 
});}
/**
* checkTree取消
*/
var treeCheckFalse = function(node) 

node.eachChild(function (child) { 
child.getUI().toggleCheck(false); 
child.attributes.checked = false; 
treeCheckTrue(child); 

});}


展开阅读全文

定位查询/定位模糊查询

11-29

[code=SQL]rn-- 字符串缓存实现的通用分页存储过程(转自邹建)rnCREATE PROC sp_PageViewrn@tbname sysname, --要分页显示的表名rn@FieldKey sysname, --用于定位记录的主键(惟一键)字段,只能是单个字段rn@PageCurrent int=1, --要显示的页码rn@PageSize int=10, --每页的大小(记录数)rn@FieldShow nvarchar(1000)='', --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段rn@FieldOrder nvarchar(1000)='', --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASCrn 用于指定排序顺序rn@Where nvarchar(1000)='', --查询条件rn@PageCount int OUTPUT --总页数rnASrnDECLARE @sql nvarchar(4000)rnSET NOCOUNT ONrn--检查对象是否有效rnIF OBJECT_ID(@tbname) IS NULLrnBEGINrn RAISERROR(N'对象"%s"不存在',1,16,@tbname)rn RETURNrnENDrnIF OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTable')=0rn AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsView')=0rn AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTableFunction')=0rnBEGINrn RAISERROR(N'"%s"不是表、视图或者表值函数',1,16,@tbname)rn RETURNrnENDrnrn--分页字段检查rnIF ISNULL(@FieldKey,N'')=''rnBEGINrn RAISERROR(N'分页处理需要主键(或者惟一键)',1,16)rn RETURNrnENDrnrn--其他参数检查及规范rnIF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1rnIF ISNULL(@PageSize,0)<1 SET @PageSize=10rnIF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*'rnIF ISNULL(@FieldOrder,N'')=N''rn SET @FieldOrder=N''rnELSErn SET @FieldOrder=N'ORDER BY '+LTRIM(@FieldOrder)rnIF ISNULL(@Where,N'')=N''rn SET @Where=N''rnELSErn SET @Where=N'WHERE ('+@Where+N')'rnrn--如果@PageCount为NULL值,则计算总页数(这样设计可以只在第一次计算总页数,以后调用时,把总页数传回给存储过程,避免再次计算总页数,对于不想计算总页数的处理而言,可以给@PageCount赋值)rnIF @PageCount IS NULLrnBEGINrn SET @sql=N'SELECT @PageCount=COUNT(*)'rn +N' FROM '+@tbnamern +N' '+@Wherern EXEC sp_executesql @sql,N'@PageCount int OUTPUT',@PageCount OUTPUTrn SET @PageCount=(@PageCount+@PageSize-1)/@PageSizernENDrnrn--计算分页显示的TOPN值rnDECLARE @TopN varchar(20),@TopN1 varchar(20)rnSELECT @TopN=@PageSize,rn @TopN1=@PageCurrent*@PageSize rnrn--第一页直接显示rnIF @PageCurrent=1rn EXEC(N'SELECT TOP '+@TopNrn +N' '+@FieldShowrn +N' FROM '+@tbnamern +N' '+@Wherern +N' '+@FieldOrder)rnELSErnBEGINrn SELECT @PageCurrent=@TopN1,rn @sql=N'SELECT @n=@n-1,@s=CASE WHEN @n<'+@TopNrn +N' THEN @s+N'',''+QUOTENAME(RTRIM(CAST('+@FieldKeyrn +N' as varchar(8000))),N'''''''') ELSE N'''' END FROM '+@tbnamern +N' '+@Wherern +N' '+@FieldOrderrn SET ROWCOUNT @PageCurrentrn EXEC sp_executesql @sql,rn N'@n int,@s nvarchar(4000) OUTPUT',rn @PageCurrent,@sql OUTPUTrn SET ROWCOUNT 0rn IF @sql=N''rn EXEC(N'SELECT TOP 0'rn +N' '+@FieldShowrn +N' FROM '+@tbname)rn ELSErn BEGINrn SET @sql=STUFF(@sql,1,1,N'') rn --执行查询rn EXEC(N'SELECT TOP '+@TopNrn +N' '+@FieldShowrn +N' FROM '+@tbnamern +N' WHERE '+@FieldKeyrn +N' IN('+@sqlrn +N') '+@FieldOrder)rn ENDrnEND[/code]rn我使用的是这个分页方法,显示100条记录rnrn如何做个定位查询 比如查询字段B 等于 ‘A001’的记录在哪一页,我就跳转到那页 论坛

没有更多推荐了,返回首页