jeasyui插件扩展datagrid-filter的改善

来源:互联网 发布:阿里云 数据库 用法 编辑:程序博客网 时间:2024/05/19 06:38

1,解决datagrid-filter在easyui 1.4.5版本下会出现错位的情况:

datagrid-filter.js中找到resizeFilter函数,this.filter.resize(this, col.width - btn._outerWidth());改为this.filter.resize(this, col.width - btn._outerWidth()-1);

2,改善中文输入的响应:

3,隐藏字段不产生过滤器:

修改createFilter(frozen)函数:

function createFilter(frozen){var dc = state.dc;var fields = $(target).datagrid('getColumnFields', frozen);if (frozen && opts.rownumbers){fields.unshift('_');}var table = (frozen?dc.header1:dc.header2).find('table.datagrid-htable');table.find('tr').each(function(){$(this).height($(this).height());});// clear the old filter componenttable.find('input.datagrid-filter').each(function(){if (this.filter.destroy){this.filter.destroy(this);}if (this.menu){$(this.menu).menu('destroy');}});table.find('tr.datagrid-filter-row').remove();var tr = $('<tr class="datagrid-header-row datagrid-filter-row"></tr>');if (opts.filterPosition == 'bottom'){tr.appendTo(table.find('tbody'));} else {tr.prependTo(table.find('tbody'));}for(var i=0; i<fields.length; i++){var field = fields[i];var col = $(target).datagrid('getColumnOption', field);//以下为添加内容:忽略隐藏字段if(col.hidden) continue;//以上为添加内容if (col && (col.checkbox || col.expander)){field = '_';}var td = $('<td></td>').attr('field', field).appendTo(tr);if (field == '_'){continue;}var div = $('<div class="datagrid-filter-c"></div>').appendTo(td);var fopts = getFilter(field);var type = fopts ? fopts.type : 'text';var filter = opts.filters[fopts ? fopts.type : 'text'];var input = filter.init(div, fopts ? (fopts.options||{}) : {});input.addClass('datagrid-filter').attr('name', field);input[0].filter = filter;if (fopts){input[0].menu = createFilterButton(div, fopts.op);if (fopts.options && fopts.options.onInit){fopts.options.onInit.call(input[0]);}} else if (type == 'text'){//input.bind('keydown', function(e){input.bind('keyup', function(e){//修改为keyup响应var t = $(this);if (this.timer){clearTimeout(this.timer);}if (e.keyCode == 13){addFilterRule(target, {field: t.attr('name'),op: 'contains',value: t.val()});doFilter(target);} else {this.timer = setTimeout(function(){addFilterRule(target, {field: t.attr('name'),op: 'contains',value: t.val()});doFilter(target);}, opts.filterDelay);}});}resizeFilter(target, field);}}



0 0
原创粉丝点击