实现效果大致这样,通过底部的查询框,输入名称,
之后竖向滚动条定位到指定位置。(类似ctrl + f)的功能。
大致的思路是:
1、通过store里面的records数据判断是否有相同的仓库,
如果相同就选中这一行。
2、获取整个竖向滚动条的高度,根据查询出来的数量,
计算出每条数据在竖向滚动条所站的高度是多少,移动了多少。
3、最后设置滚动条的高度位置。
下面贴上代码:
this.quicksearchtext = new Ext.form.TextField({
//name : 'seText',
emptyText : '按完整的仓库编码/仓库名称定位(Enter键)',
width: 350,
//anchor: '100%',
triggers : {
search: {
weight: 1,
cls: Ext.baseCSSPrefix + 'form-search-trigger',
handler: function(){
_this.controller.quicksearch(this);
},
scope: 'this'
}
},
//layout:'fit',
//region:'center',
listeners : {
specialkey: function(field, e){
if (e.getKey() == e.ENTER) {
_this.controller.quicksearch(field,e);
}
}
}
});
//查询处理函数
quicksearch : function(me){
var _this = this;
var text = _this.view.quicksearchtext.getValue();
//store的数量,即是网格grid的数量
var len = _this.view.warehousegrid.normalGrid.store.data.items.length;
var itemRow = _this.view.warehousegrid.normalGrid.store.data.items;
//滚动条总高度
var size = _this.view.warehousegrid.getScrollable()._size.y;
//计算每行的偏移量
var rowSize = size/len;
var distance;
for(var j = 0; j < len; j++){
if(itemRow[j].data.warehouse_code == text ||
itemRow[j].data.warehouse_name == text){
//选中查询行
_this.view.warehousegrid.setSelection(itemc[j]);
//计算选中行的偏移量
distance = rowSize * j;
}
}
if(distance){
//设置滚动条的偏移量
_this.view.warehousegrid.scrollBody.dom.scrollTop = distance;
}
}