jQuery EasyUI DataGrid Filter Row showColumn hideColumn
by fwait
HTML
<h2>Problem with DataGrid Filter Row and dynamic hide/show a column</h2>
<div class="demo-info" style="margin-bottom:10px">
<div class="demo-tip icon-tip"> </div>
<div>This sample shows a problem with easyui datagrid and row filter of datagrid.<p> When hide or show a column the filter columns layout is not correct. <strong> To Test toggle between hide and show column</strong></div>
</div>
<div class="easyui-panel" style="width:100%; height:400px; padding:12px;">
<div class="easyui-layout" data-options="fit:true">
<div data-options="region:'center', border:false">
<table id="dg"></table>
</div>
<div data-options="region:'south', split:false, border:false" style="padding:12px;">
<a id="btnHideRow" href="javascript:hideColumn();" class="easyui-linkbutton" data-options="iconCls:'icon-ok', plain:false">hide Column</a>
<a id="btnShowRow" href="javascript:showColumn();" class="easyui-linkbutton" data-options="iconCls:'icon-ok', plain:false">show Column</a>
</div>
</div>
</div>
CSS
</style>
<link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/themes/icon.css">
<link rel="stylesheet" type="text/css" href="http://www.jeasyui.com/easyui/demo/demo.css">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="http://www.jeasyui.com/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="http://www.jeasyui.com/easyui/jquery.edatagrid.js"></script>
<script type="text/javascript" src="http://www.jeasyui.com/easyui/datagrid-filter.js"></script>
<style>
JavaScript
function hideColumn() {
$('#dg').datagrid('hideColumn', 'ck');
}
function showColumn() {
$('#dg').datagrid('showColumn', 'ck');
}
$(function(){
var dg = $('#dg').datagrid();
dg.datagrid({
title:"Test DataGrid",
fit:true,
pagination: true,
singleSelect:true,
striped:true,
rownumbers: true,
fitColumns: true,
data:data,
columns:[[
{field:'ck', checkbox:true, hidden: false},
{field:'itemid',width:80,title:'Item ID' },
{field:'productid',width:100,title:'Product' },
{field:'listprice',width:80,align:'right',title:'List Price'},
{field:'unitcost',width:80,align:'right',title:'Unit Cost'},
{field:'attr1',width:250,title:'Attribute'},
{field:'status',width:60,align:'center',title:'Status' },
]]
});
//enable filter
dg.datagrid('enableFilter', [{
field:'listprice',
type:'numberbox',
options:{precision:1},
op:['equal','notequal','less','greater']
},{
field:'unitcost',
type:'numberbox',
options:{precision:1},
op:['equal','notequal','less','greater']
},{
field:'status',
type:'combobox',
options:{
panelHeight:'auto',
data:[{value:'',text:'All'},{value:'P',text:'P'},{value:'N',text:'N'}],
onChange:function(value){
if (value == ''){
dg.datagrid('removeFilterRule', 'status');
} else {
dg.datagrid('addFilterRule', {
field: 'status',
op: 'equal',
value: value
});
}
dg.datagrid('doFilter');
}
}
}]);
});
var data = [
...